Merge "AudioService: Use proper stream context for Le Audio stream volume" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-10-26 08:37:43 +00:00
committed by Android (Google) Code Review

View File

@@ -4018,7 +4018,7 @@ public class AudioService extends IAudioService.Stub
}
}
private void setLeAudioVolumeOnModeUpdate(int mode, int streamType, int device) {
private void setLeAudioVolumeOnModeUpdate(int mode, int device) {
switch (mode) {
case AudioSystem.MODE_IN_COMMUNICATION:
case AudioSystem.MODE_IN_CALL:
@@ -4032,10 +4032,16 @@ public class AudioService extends IAudioService.Stub
return;
}
// Currently, DEVICE_OUT_BLE_HEADSET is the only output type for LE_AUDIO profile.
// (See AudioDeviceBroker#createBtDeviceInfo())
int index = mStreamStates[streamType].getIndex(AudioSystem.DEVICE_OUT_BLE_HEADSET);
int maxIndex = mStreamStates[streamType].getMaxIndex();
// Forcefully set LE audio volume as a workaround, since in some cases
// (like the outgoing call) the value of 'device' is not DEVICE_OUT_BLE_*
// even when BLE is connected.
if (!AudioSystem.isLeAudioDeviceType(device)) {
device = AudioSystem.DEVICE_OUT_BLE_HEADSET;
}
final int streamType = getBluetoothContextualVolumeStream(mode);
final int index = mStreamStates[streamType].getIndex(device);
final int maxIndex = mStreamStates[streamType].getMaxIndex();
if (DEBUG_VOL) {
Log.d(TAG, "setLeAudioVolumeOnModeUpdate postSetLeAudioVolumeIndex index="
@@ -5421,9 +5427,7 @@ public class AudioService extends IAudioService.Stub
// change of mode may require volume to be re-applied on some devices
updateAbsVolumeMultiModeDevices(previousMode, mode);
// Forcefully set LE audio volume as a workaround, since the value of 'device'
// is not DEVICE_OUT_BLE_* even when BLE is connected.
setLeAudioVolumeOnModeUpdate(mode, streamType, device);
setLeAudioVolumeOnModeUpdate(mode, device);
// when entering RINGTONE, IN_CALL or IN_COMMUNICATION mode, clear all SCO
// connections not started by the application changing the mode when pid changes