From 43cf562c3a70dda6fe398e83f330ce3f3097c5c1 Mon Sep 17 00:00:00 2001 From: Abaddon Date: Tue, 26 Jul 2022 02:00:29 +0300 Subject: [PATCH 1/2] * setup priority hight level for player notification and try to avoid ForegroundServiceStartNotAllowedException error --- .../java/com/guichaguri/trackplayer/service/MusicService.java | 4 ++-- .../trackplayer/service/metadata/MetadataManager.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java b/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java index 48cf623b8..20c042a98 100644 --- a/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java +++ b/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java @@ -75,7 +75,7 @@ private void onStartForeground() { String channel = Utils.getNotificationChannel((Context) this); // Sets the service to foreground with an empty notification - startForeground(1, new NotificationCompat.Builder(this, channel).build()); + startForeground(1, new NotificationCompat.Builder(this, channel).setPriority(NotificationCompat.PRIORITY_HIGH).build()); // Stops the service right after stopSelf(); } @@ -116,7 +116,7 @@ public int onStartCommand(Intent intent, int flags, int startId) { public void onCreate() { super.onCreate(); String channel = Utils.getNotificationChannel((Context) this); - startForeground(1, new NotificationCompat.Builder(this, channel).build()); + startForeground(1, new NotificationCompat.Builder(this, channel).setPriority(NotificationCompat.PRIORITY_HIGH).build()); } @Override diff --git a/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.java b/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.java index b048c4e71..b1207ddc4 100644 --- a/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.java +++ b/android/src/main/java/com/guichaguri/trackplayer/service/metadata/MetadataManager.java @@ -56,7 +56,7 @@ public MetadataManager(MusicService service, MusicManager manager) { this.manager = manager; String channel = Utils.getNotificationChannel((Context) service); - this.builder = new NotificationCompat.Builder(service, channel); + this.builder = new NotificationCompat.Builder(service, channel).setPriority(NotificationCompat.PRIORITY_HIGH); this.session = new MediaSessionCompat(service, "TrackPlayer", null, null); session.setFlags(MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS); From 2133fa90672139346b7a13c164802a134df07dc2 Mon Sep 17 00:00:00 2001 From: Abaddon Date: Tue, 26 Jul 2022 02:10:13 +0300 Subject: [PATCH 2/2] * patch --- .../trackplayer/service/MusicService.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java b/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java index 20c042a98..6b076b9fa 100644 --- a/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java +++ b/android/src/main/java/com/guichaguri/trackplayer/service/MusicService.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.Intent; +import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -25,6 +26,7 @@ public class MusicService extends HeadlessJsTaskService { MusicManager manager; Handler handler; + MusicBinder binder; @Nullable @Override @@ -56,6 +58,7 @@ public void destroy() { manager.destroy(); manager = null; } + binder = null; } private void onStartForeground() { @@ -85,11 +88,7 @@ private void onStartForeground() { @Nullable @Override public IBinder onBind(Intent intent) { - if(Utils.CONNECT_INTENT.equals(intent.getAction())) { - return new MusicBinder(this, manager); - } - - return super.onBind(intent); + return binder; } @Override @@ -97,17 +96,14 @@ public int onStartCommand(Intent intent, int flags, int startId) { if(intent != null && Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { // Check if the app is on background, then starts a foreground service and then ends it right after onStartForeground(); - + if(manager != null) { MediaButtonReceiver.handleIntent(manager.getMetadata().getSession(), intent); } - + return START_NOT_STICKY; } - manager = new MusicManager(this); - handler = new Handler(); - super.onStartCommand(intent, flags, startId); return START_NOT_STICKY; } @@ -115,6 +111,9 @@ public int onStartCommand(Intent intent, int flags, int startId) { @Override public void onCreate() { super.onCreate(); + manager = new MusicManager(this); + handler = new Handler(); + binder = new MusicBinder(this, manager); String channel = Utils.getNotificationChannel((Context) this); startForeground(1, new NotificationCompat.Builder(this, channel).setPriority(NotificationCompat.PRIORITY_HIGH).build()); }