diff options
author | Bryce Lee <brycelee@google.com> | 2015-10-29 07:15:39 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-10-29 07:15:39 +0000 |
commit | c3da0f7bb39fc5d234a360bc6a1dd6c1d8382ee2 (patch) | |
tree | 7c19b3646af70b938c7bcb445b11c711589064ad | |
parent | 4af80a65ffe6570bdd9d86dd5b3a6e7e66211ff1 (diff) | |
parent | 22bb39444356637fbcabd4acf04f2fdb9e3da177 (diff) | |
download | android_packages_apps_Bluetooth-c3da0f7bb39fc5d234a360bc6a1dd6c1d8382ee2.tar.gz android_packages_apps_Bluetooth-c3da0f7bb39fc5d234a360bc6a1dd6c1d8382ee2.tar.bz2 android_packages_apps_Bluetooth-c3da0f7bb39fc5d234a360bc6a1dd6c1d8382ee2.zip |
Implement setting/getting whether audio can be routed to the HFP HF device.
am: 22bb394443
* commit '22bb39444356637fbcabd4acf04f2fdb9e3da177':
Implement setting/getting whether audio can be routed to the HFP HF device.
-rw-r--r-- | res/values/config.xml | 2 | ||||
-rw-r--r-- | src/com/android/bluetooth/hfpclient/HeadsetClientService.java | 26 | ||||
-rw-r--r-- | src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java | 20 |
3 files changed, 48 insertions, 0 deletions
diff --git a/res/values/config.xml b/res/values/config.xml index 79fe9ce62..42ab4b98a 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -41,4 +41,6 @@ <integer name="gatt_high_priority_max_interval">12</integer> <integer name="gatt_low_power_min_interval">80</integer> <integer name="gatt_low_power_max_interval">100</integer> + + <bool name="headset_client_initial_audio_route_allowed">true</bool> </resources> diff --git a/src/com/android/bluetooth/hfpclient/HeadsetClientService.java b/src/com/android/bluetooth/hfpclient/HeadsetClientService.java index d7eb12d91..b0e026bf9 100644 --- a/src/com/android/bluetooth/hfpclient/HeadsetClientService.java +++ b/src/com/android/bluetooth/hfpclient/HeadsetClientService.java @@ -253,6 +253,24 @@ public class HeadsetClientService extends ProfileService { } @Override + public void setAudioRouteAllowed(boolean allowed) { + HeadsetClientService service = getService(); + if (service != null) { + service.setAudioRouteAllowed(allowed); + } + } + + @Override + public boolean getAudioRouteAllowed() { + HeadsetClientService service = getService(); + if (service != null) { + return service.getAudioRouteAllowed(); + } + + return false; + } + + @Override public boolean connectAudio() { HeadsetClientService service = getService(); if (service == null) { @@ -543,6 +561,14 @@ public class HeadsetClientService extends ProfileService { return mStateMachine.getAudioState(device); } + public void setAudioRouteAllowed(boolean allowed) { + mStateMachine.setAudioRouteAllowed(allowed); + } + + public boolean getAudioRouteAllowed() { + return mStateMachine.getAudioRouteAllowed(); + } + boolean connectAudio() { enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission"); if (!mStateMachine.isConnected()) { diff --git a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java index f9cadabe9..9ae7ba3c8 100644 --- a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java +++ b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java @@ -68,6 +68,8 @@ import java.util.List; import java.util.Queue; import java.util.Set; +import com.android.bluetooth.R; + final class HeadsetClientStateMachine extends StateMachine { private static final String TAG = "HeadsetClientStateMachine"; private static final boolean DBG = false; @@ -142,6 +144,8 @@ final class HeadsetClientStateMachine extends StateMachine { private final AudioManager mAudioManager; private int mAudioState; + // Indicates whether audio can be routed to the device. + private boolean mAudioRouteAllowed; private boolean mAudioWbs; private final BluetoothAdapter mAdapter; private boolean mNativeAvailable; @@ -1210,6 +1214,9 @@ final class HeadsetClientStateMachine extends StateMachine { mAudioState = BluetoothHeadsetClient.STATE_AUDIO_DISCONNECTED; mAudioWbs = false; + mAudioRouteAllowed = context.getResources().getBoolean( + R.bool.headset_client_initial_audio_route_allowed); + mIndicatorNetworkState = HeadsetClientHalConstants.NETWORK_STATE_NOT_AVAILABLE; mIndicatorNetworkType = HeadsetClientHalConstants.SERVICE_TYPE_HOME; mIndicatorNetworkSignal = 0; @@ -2016,6 +2023,11 @@ final class HeadsetClientStateMachine extends StateMachine { mAudioWbs = true; // fall through case HeadsetClientHalConstants.AUDIO_STATE_CONNECTED: + if (!mAudioRouteAllowed) { + sendMessage(HeadsetClientStateMachine.DISCONNECT_AUDIO); + break; + } + mAudioState = BluetoothHeadsetClient.STATE_AUDIO_CONNECTED; // request audio focus for call int newAudioMode = AudioManager.MODE_IN_CALL; @@ -2365,6 +2377,14 @@ final class HeadsetClientStateMachine extends StateMachine { return (getCurrentState() == mAudioOn); } + public void setAudioRouteAllowed(boolean allowed) { + mAudioRouteAllowed = allowed; + } + + public boolean getAudioRouteAllowed() { + return mAudioRouteAllowed; + } + synchronized int getAudioState(BluetoothDevice device) { if (mCurrentDevice == null || !mCurrentDevice.equals(device)) { return BluetoothHeadsetClient.STATE_AUDIO_DISCONNECTED; |