[Galaxy Note II Themes and Apps] DanMc85:
EDIT: More recent version here: http://xdaforums.com/showpost.php?p=39379752&postcount=75

I modded the newest 5.5.13 version of Spotify since the OP hasn't done it yet... it seems to be working fine with my Pioneer AVH-P8400BT Headunit.

Since it isn't signed with Spotify's keys and it is using a generic platform key it will not let you login with facebook, just like the previous version the OP posted. If you currently can only use Facebook to sign in, go to this Spotify website and get yourself a real username and password. https://www.spotify.com/us/account/set-device-password/

Let me know if there are any issues with the modded apk, it is attached at the bottom of this post. Make sure you have your device set to allow Applications from Unknown Sources enabled, otherwise it won't install. You can also download it from Dev-Host here: SpotifyMetadataMod5513.apk - 3.17 MB or Same but with Landscape Rotation Enabled - 3.17 MB

I recommend to clear Spotify data and uninstall previous version before installing this one, or you should be able to just rename and manually replace the APK if you are already on this version of Spotify if you have music synced to your device, no guarantees but give it a shot.

______

Code changes for those interested:

On line 320 in x.smali I had to modify the following code in the OP's patch as well as include the rest of the changes, otherwise Spotify force closed because a referenced file doesn't exist:

iget-object v0, p0, Lcom/spotify/mobile/android/service/ad;->a:Landroid/app/Service;

to

iget-object v0, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

as the ad.smali file does not exist in this newer version. I am not sure if that was the best change, but based on the previous version it seems to be referencing itself (old ad.smali file to newer x.smali file), so that's what I did and it works fine.

Here is the complete modded ...\smali\com\spotify\mobile\android\service\x.smali file with mine and the ops recommended changes:

.class public final Lcom/spotify/mobile/android/service/x;
.super Ljava/lang/Object;
.source "SourceFile"

# interfaces
.implements Lcom/spotify/mobile/android/util/at;

# instance fields
.field private a:Landroid/app/Service;

.field private b:Lcom/spotify/mobile/android/util/ap;

# direct methods
.method public constructor <init>(Landroid/app/Service;Lcom/spotify/mobile/android/util/ap;)V
.locals 0
.parameter
.parameter

.prologue
.line 18
invoke-direct {p0}, Ljava/lang/Object;-><init>()V

.line 19
iput-object p1, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

.line 20
iput-object p2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

.line 21
return-void
.end method

# virtual methods
.method public final a()V
.locals 1

.prologue
.line 24
iget-object v0, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v0, p0}, Lcom/spotify/mobile/android/util/ap;->a(Lcom/spotify/mobile/android/util/at;)V

.line 25
return-void
.end method

.method public final b()V
.locals 6

.prologue
const/4 v5, 0x0

const/4 v4, 0x0

.line 28
iget-object v0, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v0, p0}, Lcom/spotify/mobile/android/util/ap;->b(Lcom/spotify/mobile/android/util/at;)V

.line 29
new-instance v0, Landroid/content/Intent;

const-string v1, "android.appwidget.action.APPWIDGET_UPDATE"

invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

new-instance v1, Landroid/content/ComponentName;

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

const-class v3, Lcom/spotify/mobile/android/ui/widget/SpotifyWidget;

invoke-direct {v1, v2, v3}, Landroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

invoke-virtual {v0, v1}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;

const-string v1, "track_uri"

invoke-virtual {v0, v1, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v1, "track_name"

invoke-virtual {v0, v1, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v1, "artist_name"

invoke-virtual {v0, v1, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v1, "album_name"

invoke-virtual {v0, v1, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v1, "paused"

const/4 v2, 0x1

invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

const-string v1, "cover"

invoke-virtual {v0, v1, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;

const-string v1, "is_prev_enabled"

invoke-virtual {v0, v1, v5}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

const-string v1, "is_next_enabled"

invoke-virtual {v0, v1, v5}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

const-string v1, "is_ad_playing"

invoke-virtual {v0, v1, v5}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

iget-object v1, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

invoke-virtual {v1, v0}, Landroid/app/Service;->sendBroadcast(Landroid/content/Intent;)V

.line 30
return-void
.end method

.method public final c()V
.locals 0

.prologue
.line 33
invoke-virtual {p0}, Lcom/spotify/mobile/android/service/x;->d()V

.line 34
return-void
.end method

.method public final d()V
.locals 7

.prologue
.line 37
new-instance v1, Landroid/content/Intent;

new-instance v4, Landroid/content/Intent;

const-string v5, "com.android.music.metachanged"

invoke-direct {v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

const-string v5, "id"

const/4 v6, 0x1

invoke-virtual {v4, v5, v6}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

const-string v0, "android.appwidget.action.APPWIDGET_UPDATE"

invoke-direct {v1, v0}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

.line 38
new-instance v0, Landroid/content/ComponentName;

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

const-class v3, Lcom/spotify/mobile/android/ui/widget/SpotifyWidget;

invoke-direct {v0, v2, v3}, Landroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

invoke-virtual {v1, v0}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;

.line 40
const-string v0, "track_uri"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->c()Ljava/lang/String;

move-result-object v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

.line 41
const-string v0, "track_name"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->d()Ljava/lang/String;

move-result-object v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v5, "track"

invoke-virtual {v4, v5, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

.line 42
const-string v0, "artist_name"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->f()Ljava/lang/String;

move-result-object v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v5, "artist"

invoke-virtual {v4, v5, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

.line 43
const-string v0, "album_name"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->e()Ljava/lang/String;

move-result-object v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v5, "album"

invoke-virtual {v4, v5, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

const-string v5, "playing"

const-string v6, "JustPlaying"

invoke-virtual {v4, v5, v6}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

iget-object v5, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

invoke-virtual {v5, v4}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V

.line 44
const-string v0, "paused"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->i()Z

move-result v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

.line 46
iget-object v0, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v0}, Lcom/spotify/mobile/android/util/ap;->g()Landroid/graphics/Bitmap;

move-result-object v0

.line 47
if-eqz v0, :cond_0

.line 48
iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

invoke-virtual {v2}, Landroid/app/Service;->getResources()Landroid/content/res/Resources;

move-result-object v2

const v3, 0x7f080016

invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I

move-result v2

.line 49
const/4 v3, 0x1

invoke-static {v0, v2, v2, v3}, Landroid/graphics/Bitmap;->createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;

move-result-object v0

.line 52
:cond_0
const-string v2, "cover"

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;

.line 53
const-string v0, "is_prev_enabled"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->j()Z

move-result v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

.line 54
const-string v0, "is_next_enabled"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->k()Z

move-result v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

.line 55
const-string v0, "is_ad_playing"

iget-object v2, p0, Lcom/spotify/mobile/android/service/x;->b:Lcom/spotify/mobile/android/util/ap;

invoke-virtual {v2}, Lcom/spotify/mobile/android/util/ap;->l()Z

move-result v2

invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;

.line 56
iget-object v0, p0, Lcom/spotify/mobile/android/service/x;->a:Landroid/app/Service;

invoke-virtual {v0, v1}, Landroid/app/Service;->sendBroadcast(Landroid/content/Intent;)V

.line 57
return-void
.end method

_______________

The modded recompiled apk is signed with the android platform key and zipaligned.

Original Source: https://github.com/loganakamatsu/SpotifyAVRCP

Disclaimer: I'm sure Spotify doesn't like us messing around with their APK's. It is probably against their TOS, so consider this for educational purposes only and don't try to redistribute or sell it.

If it works for you don't forget to click thanks! :)

-