From d7141c6d6e7aa0909d84a5d75c8df24d4218b06f Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 1 Oct 2017 12:39:40 +0200 Subject: [PATCH] Fix crash on headset press (Oreo) --- .../gramophone/service/MediaButtonIntentReceiver.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MediaButtonIntentReceiver.java b/app/src/main/java/com/kabouzeid/gramophone/service/MediaButtonIntentReceiver.java index 607aea4f..c8440219 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MediaButtonIntentReceiver.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MediaButtonIntentReceiver.java @@ -14,13 +14,14 @@ package com.kabouzeid.gramophone.service; import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.os.Handler; import android.os.Message; import android.os.PowerManager; import android.os.PowerManager.WakeLock; -import android.support.v4.content.WakefulBroadcastReceiver; import android.util.Log; import android.view.KeyEvent; @@ -32,7 +33,7 @@ import com.kabouzeid.gramophone.BuildConfig; * Double press: next track * Triple press: previous track */ -public class MediaButtonIntentReceiver extends WakefulBroadcastReceiver { +public class MediaButtonIntentReceiver extends BroadcastReceiver { private static final boolean DEBUG = BuildConfig.DEBUG; public static final String TAG = MediaButtonIntentReceiver.class.getSimpleName(); @@ -164,7 +165,11 @@ public class MediaButtonIntentReceiver extends WakefulBroadcastReceiver { private static void startService(Context context, String command) { final Intent intent = new Intent(context, MusicService.class); intent.setAction(command); - startWakefulService(context, intent); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.startForegroundService(intent); + } else { + context.startService(intent); + } } private static void acquireWakeLockAndSendMessage(Context context, Message msg, long delay) {