diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java
index 0c27ffb6..aea69afa 100644
--- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java
+++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.java
@@ -190,7 +190,17 @@ public class MediaPlayerLifecycleSupport
return;
}
- final int keyCode = event.getKeyCode();
+ final int keyCode;
+ int receivedKeyCode = event.getKeyCode();
+ // Translate PLAY and PAUSE codes to PLAY_PAUSE to improve compatibility with old Bluetooth devices
+ if (Util.getSingleButtonPlayPause(context) &&
+ (receivedKeyCode == KeyEvent.KEYCODE_MEDIA_PLAY ||
+ receivedKeyCode == KeyEvent.KEYCODE_MEDIA_PAUSE)) {
+ Timber.i("Single button Play/Pause is set, rewriting keyCode to PLAY_PAUSE");
+ keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE;
+ }
+ else keyCode = receivedKeyCode;
+
boolean autoStart = (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE ||
keyCode == KeyEvent.KEYCODE_MEDIA_PLAY ||
keyCode == KeyEvent.KEYCODE_HEADSETHOOK ||
diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java
index fbb19e50..1f2b1b08 100644
--- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java
+++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java
@@ -137,6 +137,7 @@ public final class Constants
public static final String PREFERENCES_KEY_FIRST_RUN_EXECUTED = "firstRunExecuted";
public static final String PREFERENCES_KEY_RESUME_ON_BLUETOOTH_DEVICE = "resumeOnBluetoothDevice";
public static final String PREFERENCES_KEY_PAUSE_ON_BLUETOOTH_DEVICE = "pauseOnBluetoothDevice";
+ public static final String PREFERENCES_KEY_SINGLE_BUTTON_PLAY_PAUSE = "singleButtonPlayPause";
public static final String PREFERENCES_KEY_DEBUG_LOG_TO_FILE = "debugLogToFile";
public static final int PREFERENCE_VALUE_ALL = 0;
diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java
index 1c322bef..7a8c4281 100644
--- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java
+++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java
@@ -1221,6 +1221,12 @@ public class Util
return preferences.getBoolean(Constants.PREFERENCES_KEY_CLEAR_BOOKMARK, false);
}
+ public static boolean getSingleButtonPlayPause(Context context)
+ {
+ SharedPreferences preferences = getPreferences(context);
+ return preferences.getBoolean(Constants.PREFERENCES_KEY_SINGLE_BUTTON_PLAY_PAUSE, false);
+ }
+
public static String formatTotalDuration(long totalDuration, boolean inMilliseconds)
{
long millis = totalDuration;
diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml
index af36f428..53b796ef 100644
--- a/ultrasonic/src/main/res/values/strings.xml
+++ b/ultrasonic/src/main/res/values/strings.xml
@@ -407,6 +407,8 @@
All Bluetooth devices
Only audio (A2DP) devices
Disabled
+ Single button Play/Pause on Bluetooth device
+ Enabling this may help with older Bluetooth devices when Play/Pause doesn\'t work correctly
Debug options
Write debug log to file
The log files are available at %1$s/%2$s
diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml
index 86c61d9f..0101ea77 100644
--- a/ultrasonic/src/main/res/xml/settings.xml
+++ b/ultrasonic/src/main/res/xml/settings.xml
@@ -104,14 +104,18 @@
a:defaultValue="false"
a:key="@string/settings.playback.resume_play_on_headphones_plug"
a:title="@string/settings.playback.resume_play_on_headphones_plug.title"
- a:summary="@string/settings.playback.resume_play_on_headphones_plug.summary"
- />
+ a:summary="@string/settings.playback.resume_play_on_headphones_plug.summary" />
+