summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenson Huang <benson.huang@mediatek.com>2014-12-24 16:25:46 +0800
committerNicholas Sauer <nicksauer@google.com>2014-12-31 03:24:06 +0000
commit2816b93f7207ca62e83dda35716e8ce267e84197 (patch)
tree097f5ad990f5ff3692a3ecfe37412b45bbc95f77
parentf6b3781771ae674c755661ddbf77b0ce3ee99f1f (diff)
downloadandroid_packages_apps_FMRadio-2816b93f7207ca62e83dda35716e8ce267e84197.tar.gz
android_packages_apps_FMRadio-2816b93f7207ca62e83dda35716e8ce267e84197.tar.bz2
android_packages_apps_FMRadio-2816b93f7207ca62e83dda35716e8ce267e84197.zip
[FM] "Speaker on/headset" should not be available while BT earphone is connected
Launch FM Radio and play -> Turn on BT and connect with BT earphone -> Enter FM again and check "Speaker on/headset" , "Speaker on/headset" will be available. The fix is to also check BT headset is connected or not when enabling menu item. Bug 18795153 from: https://partner-android-review.googlesource.com/#/c/192377/2 Change-Id: Ia6d78b85563389f193860820447273a27e76d050 Signed-off-by: Benson Huang <benson.huang@mediatek.com>
-rw-r--r--AndroidManifest.xml1
-rw-r--r--src/com/android/fmradio/FmMainActivity.java3
-rw-r--r--src/com/android/fmradio/FmService.java13
3 files changed, 16 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1b68eba..cebce11 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -29,6 +29,7 @@
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FM_RADIO" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
+ <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
diff --git a/src/com/android/fmradio/FmMainActivity.java b/src/com/android/fmradio/FmMainActivity.java
index ec7baf0..09fca23 100644
--- a/src/com/android/fmradio/FmMainActivity.java
+++ b/src/com/android/fmradio/FmMainActivity.java
@@ -989,7 +989,8 @@ public class FmMainActivity extends Activity implements FmFavoriteEditDialog.Edi
// if power down by other app, should disable station list, over
// menu
mMenuItemStationlList.setEnabled(enabled);
- mMenuItemHeadset.setEnabled(enabled);
+ // If BT headset is in use, need to disable speaker/earphone switching menu.
+ mMenuItemHeadset.setEnabled(enabled && !mService.isBluetoothHeadsetInUse());
}
}
diff --git a/src/com/android/fmradio/FmService.java b/src/com/android/fmradio/FmService.java
index d9ac99e..ca940fd 100644
--- a/src/com/android/fmradio/FmService.java
+++ b/src/com/android/fmradio/FmService.java
@@ -21,6 +21,8 @@ import android.app.Notification;
import android.app.Notification.BigTextStyle;
import android.app.PendingIntent;
import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -367,6 +369,17 @@ public class FmService extends Service implements FmRecorder.OnRecorderStateChan
setForceUse(isSpeaker);
}
+ /**
+ * Check if BT headset is connected
+ * @return true if current is playing with BT headset
+ */
+ public boolean isBluetoothHeadsetInUse() {
+ BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
+ int a2dpState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET);
+ return (BluetoothProfile.STATE_CONNECTED == a2dpState
+ || BluetoothProfile.STATE_CONNECTING == a2dpState);
+ }
+
private synchronized void startRender() {
Log.d(TAG, "startRender");
mIsRender = true;