Instead of patching and sideloading apps I have made an Xposed module that works with the latest version from the play store.
See the new thread I created for it here: http://xdaforums.com/showthread.php?t=2548922
@DanMc85 , Can you patch the latest version of Spotify? Plz! Nothing else is working on my S4 and AVH head unit after my 4.3 upgrade. The Old versions kills bluetooth.
I will patch the version that was just released tomorrow when I get home from work... however, no fix has been found yet for 4.3 Samsung devices, so you may still have issues as the patch will still be based on the existing code but I will post it for others not using a Samsung device to benefit from.
- Dan
Very much looking forward to it. I'm on 4.4 so the old versions have no album art for me. I'm also using ART so I can't use the xposed module and metafy is way too slow and unreliable to bother with. I'd definitely be willing to donate something for an update. Thanks for your past versions. Been using them on other devices for quite some time now.
Thanks for the reminder... I just uploaded the new version, let me know how it works. I have a Samsung Galaxy Note 3 so I am unable to test as it crashes bluetooth on samsung 4.3 devices.
Are you getting an error when the Bluetooth disconnects? I get a Bluetooth error when I open this apk on the note 3 running 4.3 whereas the note 2 never gave this. I assume its normal and hopefully there will be a fix for a different apk..App is working on my ATT Galaxy S4 running 4.3. However, bluetooth shuts down every minute or so-it reconnects, but its a pain. Any troubleshooting advice would be greatly appreciated. Other than that bug, its great work, thank you!
.class public final Lcom/spotify/mobile/android/service/ag;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/spotify/mobile/android/util/bf;
# instance fields
.field private a:Landroid/app/Service;
.field private b:Lcom/spotify/mobile/android/util/bb;
# direct methods
.method public constructor <init>(Landroid/app/Service;Lcom/spotify/mobile/android/util/bb;)V
.locals 0
.parameter
.parameter
.prologue
.line 20
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 21
iput-object p1, p0, Lcom/spotify/mobile/android/service/ag;->a:Landroid/app/Service;
.line 22
iput-object p2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
.line 23
return-void
.end method
# virtual methods
.method public final a()V
.locals 1
.prologue
.line 26
iget-object v0, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v0, p0}, Lcom/spotify/mobile/android/util/bb;->a(Lcom/spotify/mobile/android/util/bf;)V
.line 27
return-void
.end method
.method public final a(I)V
.locals 0
.parameter
.prologue
.line 35
invoke-virtual {p0}, Lcom/spotify/mobile/android/service/ag;->c()V
.line 36
return-void
.end method
.method public final b()V
.locals 6
.prologue
const/4 v5, 0x0
const/4 v4, 0x0
.line 30
iget-object v0, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v0, p0}, Lcom/spotify/mobile/android/util/bb;->b(Lcom/spotify/mobile/android/util/bf;)V
.line 31
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/ag;->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/ag;->a:Landroid/app/Service;
invoke-virtual {v1, v0}, Landroid/app/Service;->sendBroadcast(Landroid/content/Intent;)V
.line 32
return-void
.end method
.method public final c()V
.locals 7
.prologue
.line 39
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 40
new-instance v0, Landroid/content/ComponentName;
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->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 42
const-string v0, "track_uri"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->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 43
const-string v0, "track_name"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->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;
.line 44
const-string v5, "track"
invoke-virtual {v4, v5, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const-string v0, "artist_name"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->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 45
const-string v0, "album_name"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->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/ag;->a:Landroid/app/Service;
invoke-virtual {v5, v4}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
.line 46
const-string v0, "paused"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->j()Z
move-result v2
invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
.line 48
iget-object v0, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v0}, Lcom/spotify/mobile/android/util/bb;->g()Landroid/graphics/Bitmap;
move-result-object v0
.line 49
if-eqz v0, :cond_0
.line 50
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->a:Landroid/app/Service;
invoke-virtual {v2}, Landroid/app/Service;->getResources()Landroid/content/res/Resources;
move-result-object v2
const v3, 0x7f09002c
invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I
move-result v2
.line 52
invoke-virtual {v0}, Landroid/graphics/Bitmap;->isRecycled()Z
move-result v3
if-eqz v3, :cond_1
.line 53
invoke-static {}, Lcom/spotify/mobile/android/ui/SpotifyImageLoader;->a()Lcom/spotify/mobile/android/ui/SpotifyImageLoader;
invoke-static {}, Lcom/spotify/mobile/android/ui/SpotifyImageLoader;->b()V
.line 54
sget-object v0, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config;
invoke-static {v2, v2, v0}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
move-result-object v0
.line 60
:cond_0
:goto_0
const-string v2, "cover"
invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
.line 61
const-string v0, "is_prev_enabled"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->k()Z
move-result v2
invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
.line 62
const-string v0, "is_next_enabled"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->l()Z
move-result v2
invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
.line 63
const-string v0, "is_ad_playing"
iget-object v2, p0, Lcom/spotify/mobile/android/service/ag;->b:Lcom/spotify/mobile/android/util/bb;
invoke-virtual {v2}, Lcom/spotify/mobile/android/util/bb;->m()Z
move-result v2
invoke-virtual {v1, v0, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
.line 64
iget-object v0, p0, Lcom/spotify/mobile/android/service/ag;->a:Landroid/app/Service;
invoke-virtual {v0, v1}, Landroid/app/Service;->sendBroadcast(Landroid/content/Intent;)V
.line 65
return-void
.line 56
:cond_1
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
goto :goto_0
.end method