Merge "BT: Don't switch devices when one of the connected BT headsets disconnects" am: 0bebfe76fc

am: 2fe13541ad

Change-Id: Iba20aef49c4d34875d8521cba82e6ffc26051ac3
This commit is contained in:
Andre Eisenbach
2016-11-03 23:25:37 +00:00
committed by android-build-merger

View File

@@ -3100,14 +3100,28 @@ public class AudioService extends IAudioService.Stub {
boolean success =
handleDeviceConnection(connected, outDevice, address, btDeviceName) &&
handleDeviceConnection(connected, inDevice, address, btDeviceName);
if (success) {
synchronized (mScoClients) {
if (connected) {
mBluetoothHeadsetDevice = btDevice;
} else {
mBluetoothHeadsetDevice = null;
resetBluetoothSco();
}
if (!success) {
return;
}
/* When one BT headset is disconnected while another BT headset
* is connected, don't mess with the headset device.
*/
if ((state == BluetoothProfile.STATE_DISCONNECTED ||
state == BluetoothProfile.STATE_DISCONNECTING) &&
mBluetoothHeadset != null &&
mBluetoothHeadset.getAudioState(btDevice) == BluetoothHeadset.STATE_AUDIO_CONNECTED) {
Log.w(TAG, "SCO connected through another device, returning");
return;
}
synchronized (mScoClients) {
if (connected) {
mBluetoothHeadsetDevice = btDevice;
} else {
mBluetoothHeadsetDevice = null;
resetBluetoothSco();
}
}
}
@@ -5253,7 +5267,6 @@ public class AudioService extends IAudioService.Stub {
state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
BluetoothProfile.STATE_DISCONNECTED);
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
setBtScoDeviceConnectionState(btDevice, state);
} else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) {
boolean broadcast = false;