Fix issue 2361949: A2DP suspend parameters set wrongly.
Move reset of A2DP suspend state from handleSinkStateChange() in BluetoothA2dpService to BluetoothA2dp.ACTION_SINK_STATE_CHANGED intent receiver in AudioService. Previous implementation could cause a false reset of suspend state if a new sink attempted to connect while A2DP was suspended. New implementation only resets A2DP suspend state when a new sink is actually connected.
This commit is contained in:
@@ -459,10 +459,6 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
|
|||||||
checkSinkSuspendState(state);
|
checkSinkSuspendState(state);
|
||||||
mTargetA2dpState = -1;
|
mTargetA2dpState = -1;
|
||||||
|
|
||||||
if (state == BluetoothA2dp.STATE_CONNECTING) {
|
|
||||||
mAudioManager.setParameters("A2dpSuspended=false");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getSinkPriority(device) > BluetoothA2dp.PRIORITY_OFF &&
|
if (getSinkPriority(device) > BluetoothA2dp.PRIORITY_OFF &&
|
||||||
state == BluetoothA2dp.STATE_CONNECTING ||
|
state == BluetoothA2dp.STATE_CONNECTING ||
|
||||||
state == BluetoothA2dp.STATE_CONNECTED) {
|
state == BluetoothA2dp.STATE_CONNECTED) {
|
||||||
|
|||||||
@@ -1438,6 +1438,8 @@ public class AudioService extends IAudioService.Stub {
|
|||||||
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
|
AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
|
||||||
AudioSystem.DEVICE_STATE_AVAILABLE,
|
AudioSystem.DEVICE_STATE_AVAILABLE,
|
||||||
address);
|
address);
|
||||||
|
// Reset A2DP suspend state each time a new sink is connected
|
||||||
|
AudioSystem.setParameters("A2dpSuspended=false");
|
||||||
mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP),
|
mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP),
|
||||||
address);
|
address);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user