aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml17
-rw-r--r--res/values-de/strings.xml2
-rw-r--r--res/values-es/strings.xml2
-rw-r--r--res/values-hu/strings.xml2
-rw-r--r--res/values/arrays.xml4
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/github/daneren2005/dsub/receiver/AudioNoisyReceiver.java51
-rw-r--r--src/github/daneren2005/dsub/receiver/BluetoothIntentReceiver.java85
-rw-r--r--src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java25
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);