From 9e1b34b2a5a80c9b16cfc9e71fd4ff015086ab16 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Mon, 16 Nov 2015 10:35:39 -0800 Subject: [PATCH] Allow for automatic routing on HF AG to be disabled. Bug: 25485578 Change-Id: Iefe06f9df811311040f154ddf8f578893b275ef4 --- src/com/android/bluetooth/hfp/HeadsetService.java | 23 ++++++++++++++++++++++ .../android/bluetooth/hfp/HeadsetStateMachine.java | 13 +++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/com/android/bluetooth/hfp/HeadsetService.java b/src/com/android/bluetooth/hfp/HeadsetService.java index f6153cb4..cda51fce 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 0cf5f335..fc55bae7 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() { -- 2.11.0