diff options
-rw-r--r-- | AndroidManifest.xml | 17 | ||||
-rw-r--r-- | res/values-de/strings.xml | 2 | ||||
-rw-r--r-- | res/values-es/strings.xml | 2 | ||||
-rw-r--r-- | res/values-hu/strings.xml | 2 | ||||
-rw-r--r-- | res/values/arrays.xml | 4 | ||||
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/receiver/AudioNoisyReceiver.java | 51 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/receiver/BluetoothIntentReceiver.java | 85 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java | 25 |
9 files changed, 59 insertions, 133 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f25aec29..4dbdbbd8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -120,18 +120,15 @@ <receiver android:name="github.daneren2005.dsub.receiver.MediaButtonIntentReceiver">
<intent-filter>
- <action android:name="android.intent.action.MEDIA_BUTTON" />
- </intent-filter>
+ <action android:name="android.intent.action.MEDIA_BUTTON" />
+ </intent-filter>
</receiver>
- <receiver android:name="github.daneren2005.dsub.receiver.BluetoothIntentReceiver">
- <intent-filter>
- <action android:name="android.bluetooth.a2dp.action.SINK_STATE_CHANGED"/>
- <action android:name="android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED"/> <!-- API Level 11 -->
- <action android:name="android.bluetooth.device.action.ACL_CONNECTED"/>
- <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED"/>
- </intent-filter>
- </receiver>
+ <receiver android:name="github.daneren2005.dsub.receiver.AudioNoisyReceiver">
+ <intent-filter>
+ <action android:name="android.media.AUDIO_BECOMING_NOISY" />
+ </intent-filter>
+ </receiver>
<receiver android:name="github.daneren2005.dsub.receiver.A2dpIntentReceiver">
<intent-filter>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 5e696050..d33a6bcb 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -336,8 +336,6 @@ <string name="settings.temp_loss_nothing">Nichts machen</string>
<string name="settings.disconnect_pause_title">Verhalten bei Verbindungsverlust</string>
<string name="settings.disconnect_pause_both">Immer pausieren</string>
- <string name="settings.disconnect_pause_headphone">Nur bei Kopfhörer pausieren</string>
- <string name="settings.disconnect_pause_bluetooth">Nur bei Bluetooth pausieren</string>
<string name="settings.disconnect_pause_neither">Nichts machen</string>
<string name="settings.persistent_title">Dauerhafte Benachrichtigung</string>
<string name="settings.persistent_summary">Zeige die Benachrichtigung auch nach pausieren der Wiedergabe. Zum entfernen Stop auswählen.</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 84b7c35c..ad182ded 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -328,8 +328,6 @@ <string name="settings.temp_loss_nothing">No hacer nada</string> <string name="settings.disconnect_pause_title">Pausar al desconectar</string> <string name="settings.disconnect_pause_both">Pausar en todos los casos</string> - <string name="settings.disconnect_pause_headphone">Pausar sólo con auriculares</string> - <string name="settings.disconnect_pause_bluetooth">Pausar sólo en bluetooth</string> <string name="settings.disconnect_pause_neither">No hacer nada</string> <string name="settings.persistent_title">Notificación permanente</string> <string name="settings.persistent_summary">Mostrar la notificación incluso tras pausar. Pulsar botón stop para quitarlo.</string> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index ffeb1282..a5be84ac 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -347,8 +347,6 @@ <string name="settings.temp_loss_nothing">Ne csináljon semmit.</string>
<string name="settings.disconnect_pause_title">Megállítás kapcsolatbontás esetén</string>
<string name="settings.disconnect_pause_both">Megállítás minden esetben.</string>
- <string name="settings.disconnect_pause_headphone">Megállítás fejhallgató használata esetén.</string>
- <string name="settings.disconnect_pause_bluetooth">Megállítás bluetooth használata esetén.</string>
<string name="settings.disconnect_pause_neither">Ne csináljon semmit.</string>
<string name="settings.persistent_title">Állandó kijelzés</string>
<string name="settings.persistent_summary">Kijelzés az értesítési sávon a lejátszás megállítása után is. Nyomja meg a stop gombot a törléséhez!</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index e8eee980..f6ee767f 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -180,14 +180,10 @@ <string-array name="disconnectPauseValues"> <item>0</item> - <item>1</item> - <item>2</item> <item>3</item> </string-array> <string-array name="disconnectPauseNames"> <item>@string/settings.disconnect_pause_both</item> - <item>@string/settings.disconnect_pause_headphone</item> - <item>@string/settings.disconnect_pause_bluetooth</item> <item>@string/settings.disconnect_pause_neither</item> </string-array> diff --git a/res/values/strings.xml b/res/values/strings.xml index 3cc120d6..fd0efec4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -355,9 +355,7 @@ <string name="settings.temp_loss_lower">Always lower volume</string>
<string name="settings.temp_loss_nothing">Do Nothing</string>
<string name="settings.disconnect_pause_title">Pause on Disconnect</string>
- <string name="settings.disconnect_pause_both">Pause on either</string>
- <string name="settings.disconnect_pause_headphone">Pause only for headphone</string>
- <string name="settings.disconnect_pause_bluetooth">Pause only for bluetooth</string>
+ <string name="settings.disconnect_pause_both">Pause</string>
<string name="settings.disconnect_pause_neither">Do Nothing</string>
<string name="settings.persistent_title">Persistent Notification</string>
<string name="settings.persistent_summary">Show the notification even after pausing. Press the stop button to clear it away.</string>
diff --git a/src/github/daneren2005/dsub/receiver/AudioNoisyReceiver.java b/src/github/daneren2005/dsub/receiver/AudioNoisyReceiver.java new file mode 100644 index 00000000..058d04b4 --- /dev/null +++ b/src/github/daneren2005/dsub/receiver/AudioNoisyReceiver.java @@ -0,0 +1,51 @@ +/*
+ This file is part of Subsonic.
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+ Copyright 2014 (C) Scott Jackson
+*/
+
+package github.daneren2005.dsub.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.media.AudioManager;
+import android.util.Log;
+
+import github.daneren2005.dsub.domain.PlayerState;
+import github.daneren2005.dsub.service.DownloadService;
+import github.daneren2005.dsub.util.Constants;
+import github.daneren2005.dsub.util.Util;
+
+public class AudioNoisyReceiver extends BroadcastReceiver {
+ private static final String TAG = AudioNoisyReceiver.class.getSimpleName();
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ DownloadService downloadService = DownloadService.getInstance();
+ // Don't do anything if downloadService is not started
+ if(downloadService == null) {
+ return;
+ }
+
+ if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals (intent.getAction ())) {
+ if(!downloadService.isRemoteEnabled() && downloadService.getPlayerState() == PlayerState.STARTED) {
+ SharedPreferences prefs = Util.getPreferences(downloadService);
+ int pausePref = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_PAUSE_DISCONNECT, "0"));
+ if(pausePref == 0) {
+ downloadService.pause();
+ }
+ }
+ }
+ }
+}
diff --git a/src/github/daneren2005/dsub/receiver/BluetoothIntentReceiver.java b/src/github/daneren2005/dsub/receiver/BluetoothIntentReceiver.java deleted file mode 100644 index 13de4d86..00000000 --- a/src/github/daneren2005/dsub/receiver/BluetoothIntentReceiver.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Subsonic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Subsonic. If not, see <http://www.gnu.org/licenses/>. - - Copyright 2010 (C) Sindre Mehus - */ -package github.daneren2005.dsub.receiver; - -import android.bluetooth.BluetoothDevice; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.util.Log; - -import github.daneren2005.dsub.service.DownloadService; -import github.daneren2005.dsub.util.Constants; -import github.daneren2005.dsub.util.Util; - -/** - * Request media button focus when connected to Bluetooth A2DP. - * - * @author Sindre Mehus - */ -public class BluetoothIntentReceiver extends BroadcastReceiver { - private static final String TAG = BluetoothIntentReceiver.class.getSimpleName(); - // Same as constants in android.bluetooth.BluetoothProfile, which is API level 11. - private static final int STATE_DISCONNECTED = 0; - private static final int STATE_CONNECTED = 2; - @Override - public void onReceive(Context context, Intent intent) { - Log.i(TAG, "GOT INTENT " + intent); - if (isConnected(intent)) { - Log.i(TAG, "Connected to Bluetooth A2DP, requesting media button focus."); - Util.registerMediaButtonEventReceiver(context); - } else if (isDisconnected(intent)) { - Log.i(TAG, "Disconnected from Bluetooth A2DP, requesting pause."); - SharedPreferences prefs = Util.getPreferences(context); - int pausePref = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_PAUSE_DISCONNECT, "0")); - if(pausePref == 0 || pausePref == 2) { - context.sendBroadcast(new Intent(DownloadService.CMD_PAUSE)); - } - } - } - private boolean isConnected(Intent intent) { - if ("android.bluetooth.a2dp.action.SINK_STATE_CHANGED".equals(intent.getAction()) && - intent.getIntExtra("android.bluetooth.a2dp.extra.SINK_STATE", -1) == STATE_CONNECTED) { - return true; - } - else if ("android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED".equals(intent.getAction()) && - intent.getIntExtra("android.bluetooth.profile.extra.STATE", -1) == STATE_CONNECTED) { - return true; - } - else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(intent.getAction())) { - return true; - } - return false; - } - private boolean isDisconnected(Intent intent) { - if ("android.bluetooth.a2dp.action.SINK_STATE_CHANGED".equals(intent.getAction()) && - intent.getIntExtra("android.bluetooth.a2dp.extra.SINK_STATE", -1) == STATE_DISCONNECTED) { - return true; - } - else if ("android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED".equals(intent.getAction()) && - intent.getIntExtra("android.bluetooth.profile.extra.STATE", -1) == STATE_DISCONNECTED) { - return true; - } - else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(intent.getAction())) { - return true; - } - return false; - } -} diff --git a/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java b/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java index db69517c..ed092328 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java @@ -54,7 +54,6 @@ public class DownloadServiceLifecycleSupport { private final DownloadService downloadService; private Looper eventLooper; private Handler eventHandler; - private BroadcastReceiver headsetEventReceiver; private BroadcastReceiver ejectEventReceiver; private PhoneStateListener phoneStateListener; private boolean externalStorageAvailable= true; @@ -118,29 +117,6 @@ public class DownloadServiceLifecycleSupport { } }, "DownloadServiceLifecycleSupport").start(); - // Pause when headset is unplugged. - headsetEventReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - Log.i(TAG, "Headset event for: " + intent.getExtras().get("name")); - if (intent.getExtras().getInt("state") == 0) { - eventHandler.post(new Runnable() { - @Override - public void run() { - if(!downloadService.isRemoteEnabled()) { - SharedPreferences prefs = Util.getPreferences(downloadService); - int pausePref = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_PAUSE_DISCONNECT, "0")); - if(pausePref == 0 || pausePref == 1) { - downloadService.pause(); - } - } - } - }); - } - } - }; - downloadService.registerReceiver(headsetEventReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG)); - // Stop when SD card is ejected. ejectEventReceiver = new BroadcastReceiver() { @Override @@ -210,7 +186,6 @@ public class DownloadServiceLifecycleSupport { eventLooper.quit(); serializeDownloadQueueNow(); downloadService.unregisterReceiver(ejectEventReceiver); - downloadService.unregisterReceiver(headsetEventReceiver); downloadService.unregisterReceiver(intentReceiver); TelephonyManager telephonyManager = (TelephonyManager) downloadService.getSystemService(Context.TELEPHONY_SERVICE); |