From 046916221d1e78160b4036dee7e1d1f94647e16c Mon Sep 17 00:00:00 2001 From: Nite Date: Fri, 25 Sep 2020 19:03:53 +0200 Subject: [PATCH] Started implementing Bluetooth connection settings --- .../ultrasonic/fragment/SettingsFragment.java | 16 ++++++++++++++++ .../ultrasonic/receiver/A2dpIntentReceiver.java | 11 ++--------- .../receiver/BluetoothIntentReceiver.java | 10 +++++----- .../org/moire/ultrasonic/util/Constants.java | 6 ++++++ ultrasonic/src/main/res/values/strings.xml | 7 ++++++- ultrasonic/src/main/res/xml/settings.xml | 6 ++++++ 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java index c5179d6b..c89575f5 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/SettingsFragment.java @@ -64,6 +64,8 @@ public class SettingsFragment extends PreferenceFragment private EditTextPreference sharingDefaultGreeting; private TimeSpanPreference sharingDefaultExpiration; private PreferenceCategory serversCategory; + private Preference resumeOnBluetoothDevice; + private Preference pauseOnBluetoothDevice; private SharedPreferences settings; @@ -110,6 +112,8 @@ public class SettingsFragment extends PreferenceFragment sharingDefaultGreeting = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_DEFAULT_SHARE_GREETING); sharingDefaultExpiration = (TimeSpanPreference) findPreference(Constants.PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION); serversCategory = (PreferenceCategory) findPreference(Constants.PREFERENCES_KEY_SERVERS_KEY); + resumeOnBluetoothDevice = findPreference(Constants.PREFERENCES_KEY_RESUME_ON_BLUETOOTH_DEVICE); + pauseOnBluetoothDevice = findPreference(Constants.PREFERENCES_KEY_PAUSE_ON_BLUETOOTH_DEVICE); sharingDefaultGreeting.setText(Util.getShareGreeting(getActivity())); setupClearSearchPreference(); @@ -199,6 +203,18 @@ public class SettingsFragment extends PreferenceFragment }); } + private void setupBluetoothDevicePreferences() { + resumeOnBluetoothDevice.setSummary(settings.getString(Constants.PREFERENCES_KEY_CACHE_LOCATION, + FileUtil.getDefaultMusicDirectory(getActivity()).getPath())); + + resumeOnBluetoothDevice.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + return true; + } + }); + } + private void setupClearSearchPreference() { Preference clearSearchPreference = findPreference(Constants.PREFERENCES_KEY_CLEAR_SEARCH_HISTORY); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/A2dpIntentReceiver.java b/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/A2dpIntentReceiver.java index 52274108..1479f57b 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/A2dpIntentReceiver.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/A2dpIntentReceiver.java @@ -19,17 +19,10 @@ public class A2dpIntentReceiver extends BroadcastReceiver @Override public void onReceive(Context context, Intent intent) { - if (mediaPlayerControllerLazy.getValue().getCurrentPlaying() == null) - { - return; - } + if (mediaPlayerControllerLazy.getValue().getCurrentPlaying() == null) return; Entry song = mediaPlayerControllerLazy.getValue().getCurrentPlaying().getSong(); - - if (song == null) - { - return; - } + if (song == null) return; Intent avrcpIntent = new Intent(PLAYSTATUS_RESPONSE); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/BluetoothIntentReceiver.java b/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/BluetoothIntentReceiver.java index fa1c61c4..abee751e 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/BluetoothIntentReceiver.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/receiver/BluetoothIntentReceiver.java @@ -34,7 +34,6 @@ import org.moire.ultrasonic.util.Util; */ public class BluetoothIntentReceiver extends BroadcastReceiver { - private static final String TAG = BluetoothIntentReceiver.class.getSimpleName(); @Override @@ -43,9 +42,10 @@ public class BluetoothIntentReceiver extends BroadcastReceiver int state = intent.getIntExtra("android.bluetooth.a2dp.extra.SINK_STATE", -1); BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); String action = intent.getAction(); - String name = device != null ? device.getName() : "None"; + String name = device != null ? device.getName() : "Unknown"; + String address = device != null ? device.getAddress() : "Unknown"; - Log.d(TAG, String.format("Sink State: %d; Action: %s; Device: %s", state, action, name)); + Log.d(TAG, String.format("Sink State: %d; Action: %s; Device: %s; Address: %s", state, action, name, address)); boolean actionConnected = false; boolean actionDisconnected = false; @@ -64,13 +64,13 @@ public class BluetoothIntentReceiver extends BroadcastReceiver if (connected) { - Log.i(TAG, "Connected to Bluetooth device, requesting media button focus."); + Log.i(TAG, String.format("Connected to Bluetooth device %s address %s, requesting media button focus.", name, address)); Util.registerMediaButtonEventReceiver(context, false); } if (disconnected) { - Log.i(TAG, "Disconnected from Bluetooth device, requesting pause."); + Log.i(TAG, String.format("Disconnected from Bluetooth device %s address %s, requesting pause.", name, address)); context.sendBroadcast(new Intent(Constants.CMD_PAUSE)); } } 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 4008f7b5..792d33ab 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java @@ -131,6 +131,12 @@ public final class Constants public static final String PREFERENCES_KEY_USE_FIVE_STAR_RATING = "use_five_star_rating"; public static final String PREFERENCES_KEY_CATEGORY_NOTIFICATIONS = "notificationsCategory"; 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 PREFERENCE_VALUE_ALL = "all"; + public static final String PREFERENCE_VALUE_A2DP = "a2dp"; + public static final String PREFERENCE_VALUE_DISABLED = "disabled"; // Number of free trial days for non-licensed servers. public static final int FREE_TRIAL_DAYS = 30; diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index a44798b3..f01e8e34 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -254,7 +254,7 @@ 5 songs Unlimited Resume on headphones insertion - App will resume paused playback on headphones insertion into device. + App will resume paused playback on wired headphones insertion into device. Keeping the screen on while downloading improves download speed. Keep Screen On Remember to set up your Last.fm user and password on the Subsonic server @@ -400,6 +400,11 @@ albumArt Multiple Years http://example.com + Resume when a bluetooth device is connected + Pause when a bluetooth device is disconnected + All bluetooth devices + Only A2dp devices + Disabled Ultrasonic can\'t access the music file cache. Cache location was reset to the default path. Warning diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml index 3baa16ac..51d61dfb 100644 --- a/ultrasonic/src/main/res/xml/settings.xml +++ b/ultrasonic/src/main/res/xml/settings.xml @@ -106,6 +106,12 @@ a:title="@string/settings.playback.resume_play_on_headphones_plug.title" a:summary="@string/settings.playback.resume_play_on_headphones_plug.summary" /> + +