From 92f01fec268b4379197fe6ad026c805e5434fe69 Mon Sep 17 00:00:00 2001 From: Nite Date: Fri, 6 Nov 2020 18:08:36 +0100 Subject: [PATCH] Implemented single button play/pause support for old Bluetooth devices --- .../service/MediaPlayerLifecycleSupport.java | 12 +++++++++++- .../java/org/moire/ultrasonic/util/Constants.java | 1 + .../main/java/org/moire/ultrasonic/util/Util.java | 6 ++++++ ultrasonic/src/main/res/values/strings.xml | 2 ++ ultrasonic/src/main/res/xml/settings.xml | 8 ++++++-- 5 files changed, 26 insertions(+), 3 deletions(-) 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" /> +