Merge "Set LE audio volume when audio mode is changed"
This commit is contained in:
@@ -3584,6 +3584,36 @@ public class AudioService extends IAudioService.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setLeAudioVolumeOnModeUpdate(int mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case AudioSystem.MODE_IN_COMMUNICATION:
|
||||||
|
case AudioSystem.MODE_IN_CALL:
|
||||||
|
case AudioSystem.MODE_NORMAL:
|
||||||
|
break;
|
||||||
|
case AudioSystem.MODE_RINGTONE:
|
||||||
|
// not changing anything for ringtone
|
||||||
|
return;
|
||||||
|
case AudioSystem.MODE_CURRENT:
|
||||||
|
case AudioSystem.MODE_INVALID:
|
||||||
|
default:
|
||||||
|
// don't know what to do in this case, better bail
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int streamType = getBluetoothContextualVolumeStream(mode);
|
||||||
|
|
||||||
|
// 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();
|
||||||
|
|
||||||
|
if (DEBUG_VOL) {
|
||||||
|
Log.d(TAG, "setLeAudioVolumeOnModeUpdate postSetLeAudioVolumeIndex index="
|
||||||
|
+ index + " maxIndex=" + maxIndex + " streamType=" + streamType);
|
||||||
|
}
|
||||||
|
mDeviceBroker.postSetLeAudioVolumeIndex(index, maxIndex, streamType);
|
||||||
|
}
|
||||||
|
|
||||||
private void setStreamVolume(int streamType, int index, int flags, String callingPackage,
|
private void setStreamVolume(int streamType, int index, int flags, String callingPackage,
|
||||||
String caller, int uid, boolean hasModifyAudioSettings) {
|
String caller, int uid, boolean hasModifyAudioSettings) {
|
||||||
if (DEBUG_VOL) {
|
if (DEBUG_VOL) {
|
||||||
@@ -4915,6 +4945,10 @@ public class AudioService extends IAudioService.Stub
|
|||||||
// change of mode may require volume to be re-applied on some devices
|
// change of mode may require volume to be re-applied on some devices
|
||||||
updateAbsVolumeMultiModeDevices(previousMode, mode);
|
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);
|
||||||
|
|
||||||
// when entering RINGTONE, IN_CALL or IN_COMMUNICATION mode, clear all SCO
|
// when entering RINGTONE, IN_CALL or IN_COMMUNICATION mode, clear all SCO
|
||||||
// connections not started by the application changing the mode when pid changes
|
// connections not started by the application changing the mode when pid changes
|
||||||
mDeviceBroker.postSetModeOwnerPid(pid, mode);
|
mDeviceBroker.postSetModeOwnerPid(pid, mode);
|
||||||
|
|||||||
Reference in New Issue
Block a user