summaryrefslogtreecommitdiffstats
path: root/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java')
-rw-r--r--src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java16
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;