diff options
Diffstat (limited to 'src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java')
-rw-r--r-- | src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java index f9cadabe9..ab0af9933 100644 --- a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java +++ b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java @@ -40,9 +40,11 @@ import android.bluetooth.BluetoothHeadsetClient; import android.bluetooth.BluetoothHeadsetClientCall; import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothUuid; +import android.bluetooth.IBluetoothHeadsetClientController; import android.os.Bundle; import android.os.Message; import android.os.ParcelUuid; +import android.os.RemoteException; import android.util.Log; import android.util.Pair; import android.content.Context; @@ -140,6 +142,7 @@ final class HeadsetClientStateMachine extends StateMachine { // indicator private Pair<Integer, Object> mPendingAction; + private IBluetoothHeadsetClientController mClientController; private final AudioManager mAudioManager; private int mAudioState; private boolean mAudioWbs; @@ -157,6 +160,10 @@ final class HeadsetClientStateMachine extends StateMachine { classInitNative(); } + public void setClientController(IBluetoothHeadsetClientController clientController) { + mClientController = clientController; + } + public void dump(StringBuilder sb) { ProfileService.println(sb, "mCurrentDevice: " + mCurrentDevice); ProfileService.println(sb, "mAudioOn: " + mAudioOn); @@ -2016,6 +2023,15 @@ final class HeadsetClientStateMachine extends StateMachine { mAudioWbs = true; // fall through case HeadsetClientHalConstants.AUDIO_STATE_CONNECTED: + try { + if (mClientController != null && !mClientController.allowAudioConnect()) { + sendMessage(HeadsetClientStateMachine.DISCONNECT_AUDIO); + break; + } + } catch (RemoteException remoteException) { + Log.e(TAG, "ERROR: couldn't communicate with client controller"); + } + mAudioState = BluetoothHeadsetClient.STATE_AUDIO_CONNECTED; // request audio focus for call int newAudioMode = AudioManager.MODE_IN_CALL; |