Merge "Remove SCO devices if Bluetooth process is dead" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-05-16 18:06:46 +00:00
committed by Android (Google) Code Review

View File

@@ -3713,26 +3713,35 @@ public class AudioService extends IAudioService.Stub
}
String address = btDevice.getAddress();
BluetoothClass btClass = btDevice.getBluetoothClass();
int outDevice = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;
int inDevice = AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET;
int[] outDeviceTypes = {
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO,
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET,
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT
};
if (btClass != null) {
switch (btClass.getDeviceClass()) {
case BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET:
case BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE:
outDevice = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET;
outDeviceTypes = new int[] { AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET };
break;
case BluetoothClass.Device.AUDIO_VIDEO_CAR_AUDIO:
outDevice = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT;
outDeviceTypes = new int[] { AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT };
break;
}
}
if (!BluetoothAdapter.checkBluetoothAddress(address)) {
address = "";
}
String btDeviceName = btDevice.getName();
boolean result = handleDeviceConnection(isActive, outDevice, address, btDeviceName);
boolean result = false;
if (isActive) {
result |= handleDeviceConnection(isActive, outDeviceTypes[0], address, btDeviceName);
} else {
for (int outDeviceType : outDeviceTypes) {
result |= handleDeviceConnection(isActive, outDeviceType, address, btDeviceName);
}
}
// handleDeviceConnection() && result to make sure the method get executed
result = handleDeviceConnection(isActive, inDevice, address, btDeviceName) && result;
return result;