summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryce Lee <brycelee@google.com>2015-11-16 10:35:39 -0800
committerBryce Lee <brycelee@google.com>2015-11-16 10:35:39 -0800
commit9e1b34b2a5a80c9b16cfc9e71fd4ff015086ab16 (patch)
tree26fa72ce725871736a32cefc3434433cb9f3ea0c
parent22bb39444356637fbcabd4acf04f2fdb9e3da177 (diff)
downloadandroid_packages_apps_Bluetooth-9e1b34b2a5a80c9b16cfc9e71fd4ff015086ab16.tar.gz
android_packages_apps_Bluetooth-9e1b34b2a5a80c9b16cfc9e71fd4ff015086ab16.tar.bz2
android_packages_apps_Bluetooth-9e1b34b2a5a80c9b16cfc9e71fd4ff015086ab16.zip
Allow for automatic routing on HF AG to be disabled.
Bug: 25485578 Change-Id: Iefe06f9df811311040f154ddf8f578893b275ef4
-rwxr-xr-xsrc/com/android/bluetooth/hfp/HeadsetService.java23
-rw-r--r--src/com/android/bluetooth/hfp/HeadsetStateMachine.java13
2 files changed, 35 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/hfp/HeadsetService.java b/src/com/android/bluetooth/hfp/HeadsetService.java
index f6153cb42..cda51fce1 100755
--- a/src/com/android/bluetooth/hfp/HeadsetService.java
+++ b/src/com/android/bluetooth/hfp/HeadsetService.java
@@ -243,6 +243,21 @@ public class HeadsetService extends ProfileService {
return service.disconnectAudio();
}
+ public void setAudioRouteAllowed(boolean allowed) {
+ HeadsetService service = getService();
+ if (service == null) return;
+ service.setAudioRouteAllowed(allowed);
+ }
+
+ public boolean getAudioRouteAllowed() {
+ HeadsetService service = getService();
+ if (service != null) {
+ return service.getAudioRouteAllowed();
+ }
+
+ return false;
+ }
+
public boolean startScoUsingVirtualVoiceCall(BluetoothDevice device) {
HeadsetService service = getService();
if (service == null) return false;
@@ -448,6 +463,14 @@ public class HeadsetService extends ProfileService {
return mStateMachine.getAudioState(device);
}
+ public void setAudioRouteAllowed(boolean allowed) {
+ mStateMachine.setAudioRouteAllowed(allowed);
+ }
+
+ public boolean getAudioRouteAllowed() {
+ return mStateMachine.getAudioRouteAllowed();
+ }
+
boolean connectAudio() {
// TODO(BT) BLUETOOTH or BLUETOOTH_ADMIN permission
enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
diff --git a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
index 0cf5f335f..fc55bae77 100644
--- a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+++ b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
@@ -162,6 +162,9 @@ final class HeadsetStateMachine extends StateMachine {
private IBluetoothHeadsetPhone mPhoneProxy;
private boolean mNativeAvailable;
+ // Indicates whether audio can be routed to the device.
+ private boolean mAudioRouteAllowed = true;
+
// mCurrentDevice is the device connected before the state changes
// mTargetDevice is the device to be connected
// mIncomingDevice is the device connecting to us, valid only in Pending state
@@ -2153,6 +2156,14 @@ final class HeadsetStateMachine extends StateMachine {
return false;
}
+ public void setAudioRouteAllowed(boolean allowed) {
+ mAudioRouteAllowed = allowed;
+ }
+
+ public boolean getAudioRouteAllowed() {
+ return mAudioRouteAllowed;
+ }
+
int getAudioState(BluetoothDevice device) {
synchronized(this) {
if (mConnectedDevicesList.size() == 0) {
@@ -3292,7 +3303,7 @@ final class HeadsetStateMachine extends StateMachine {
// Accept incoming SCO only when there is active call, VR activated,
// active VOIP call
private boolean isScoAcceptable() {
- return (mVoiceRecognitionStarted || isInCall());
+ return mAudioRouteAllowed && (mVoiceRecognitionStarted || isInCall());
}
boolean isConnected() {