Merge "BtHelper: do not clear sco clients when sco audio is disconnected" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8c018bace8
@@ -211,7 +211,13 @@ import java.io.PrintWriter;
|
|||||||
}
|
}
|
||||||
mForcedUseForComm = AudioSystem.FORCE_SPEAKER;
|
mForcedUseForComm = AudioSystem.FORCE_SPEAKER;
|
||||||
} else if (mForcedUseForComm == AudioSystem.FORCE_SPEAKER) {
|
} else if (mForcedUseForComm == AudioSystem.FORCE_SPEAKER) {
|
||||||
mForcedUseForComm = AudioSystem.FORCE_NONE;
|
if (mBtHelper.isBluetoothScoOn()) {
|
||||||
|
mForcedUseForComm = AudioSystem.FORCE_BT_SCO;
|
||||||
|
setForceUse_Async(
|
||||||
|
AudioSystem.FOR_RECORD, AudioSystem.FORCE_BT_SCO, eventSource);
|
||||||
|
} else {
|
||||||
|
mForcedUseForComm = AudioSystem.FORCE_NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mForcedUseForCommExt = mForcedUseForComm;
|
mForcedUseForCommExt = mForcedUseForComm;
|
||||||
|
|||||||
@@ -307,8 +307,15 @@ public class BtHelper {
|
|||||||
case BluetoothHeadset.STATE_AUDIO_DISCONNECTED:
|
case BluetoothHeadset.STATE_AUDIO_DISCONNECTED:
|
||||||
mDeviceBroker.setBluetoothScoOn(false, "BtHelper.receiveBtEvent");
|
mDeviceBroker.setBluetoothScoOn(false, "BtHelper.receiveBtEvent");
|
||||||
scoAudioState = AudioManager.SCO_AUDIO_STATE_DISCONNECTED;
|
scoAudioState = AudioManager.SCO_AUDIO_STATE_DISCONNECTED;
|
||||||
// startBluetoothSco called after stopBluetoothSco
|
// There are two cases where we want to immediately reconnect audio:
|
||||||
if (mScoAudioState == SCO_STATE_ACTIVATE_REQ) {
|
// 1) If a new start request was received while disconnecting: this was
|
||||||
|
// notified by requestScoState() setting state to SCO_STATE_ACTIVATE_REQ.
|
||||||
|
// 2) If audio was connected then disconnected via Bluetooth APIs and
|
||||||
|
// we still have pending activation requests by apps: this is indicated by
|
||||||
|
// state SCO_STATE_ACTIVE_EXTERNAL and the mScoClients list not empty.
|
||||||
|
if (mScoAudioState == SCO_STATE_ACTIVATE_REQ
|
||||||
|
|| (mScoAudioState == SCO_STATE_ACTIVE_EXTERNAL
|
||||||
|
&& !mScoClients.isEmpty())) {
|
||||||
if (mBluetoothHeadset != null && mBluetoothHeadsetDevice != null
|
if (mBluetoothHeadset != null && mBluetoothHeadsetDevice != null
|
||||||
&& connectBluetoothScoAudioHelper(mBluetoothHeadset,
|
&& connectBluetoothScoAudioHelper(mBluetoothHeadset,
|
||||||
mBluetoothHeadsetDevice, mScoAudioMode)) {
|
mBluetoothHeadsetDevice, mScoAudioMode)) {
|
||||||
@@ -318,7 +325,9 @@ public class BtHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tear down SCO if disconnected from external
|
// Tear down SCO if disconnected from external
|
||||||
clearAllScoClients(0, mScoAudioState == SCO_STATE_ACTIVE_INTERNAL);
|
if (mScoAudioState == SCO_STATE_DEACTIVATING) {
|
||||||
|
clearAllScoClients(0, false);
|
||||||
|
}
|
||||||
mScoAudioState = SCO_STATE_INACTIVE;
|
mScoAudioState = SCO_STATE_INACTIVE;
|
||||||
break;
|
break;
|
||||||
case BluetoothHeadset.STATE_AUDIO_CONNECTING:
|
case BluetoothHeadset.STATE_AUDIO_CONNECTING:
|
||||||
|
|||||||
Reference in New Issue
Block a user