Merge "LeAudio: Fix volume control"
This commit is contained in:
commit
0075e9935d
@ -2376,6 +2376,14 @@ public class AudioSystem
|
|||||||
return types.size() == 1 && types.contains(type);
|
return types.size() == 1 && types.contains(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
* Return true if the audio device type is a Bluetooth LE Audio device.
|
||||||
|
*/
|
||||||
|
public static boolean isLeAudioDeviceType(int type) {
|
||||||
|
return DEVICE_OUT_ALL_BLE_SET.contains(type);
|
||||||
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public static final int DEFAULT_MUTE_STREAMS_AFFECTED =
|
public static final int DEFAULT_MUTE_STREAMS_AFFECTED =
|
||||||
(1 << STREAM_MUSIC) |
|
(1 << STREAM_MUSIC) |
|
||||||
|
@ -3243,8 +3243,7 @@ public class AudioService extends IAudioService.Stub
|
|||||||
dispatchAbsoluteVolumeChanged(streamType, info, newIndex);
|
dispatchAbsoluteVolumeChanged(streamType, info, newIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((device == AudioSystem.DEVICE_OUT_BLE_HEADSET
|
if (AudioSystem.isLeAudioDeviceType(device)
|
||||||
|| device == AudioSystem.DEVICE_OUT_BLE_BROADCAST)
|
|
||||||
&& streamType == getBluetoothContextualVolumeStream()
|
&& streamType == getBluetoothContextualVolumeStream()
|
||||||
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
|
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
|
||||||
if (DEBUG_VOL) {
|
if (DEBUG_VOL) {
|
||||||
@ -3937,8 +3936,7 @@ public class AudioService extends IAudioService.Stub
|
|||||||
dispatchAbsoluteVolumeChanged(streamType, info, index);
|
dispatchAbsoluteVolumeChanged(streamType, info, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((device == AudioSystem.DEVICE_OUT_BLE_HEADSET
|
if (AudioSystem.isLeAudioDeviceType(device)
|
||||||
|| device == AudioSystem.DEVICE_OUT_BLE_BROADCAST)
|
|
||||||
&& streamType == getBluetoothContextualVolumeStream()
|
&& streamType == getBluetoothContextualVolumeStream()
|
||||||
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
|
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
|
||||||
if (DEBUG_VOL) {
|
if (DEBUG_VOL) {
|
||||||
@ -6776,7 +6774,8 @@ public class AudioService extends IAudioService.Stub
|
|||||||
return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE;
|
return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE;
|
||||||
}
|
}
|
||||||
if (isAbsoluteVolumeDevice(audioSystemDeviceOut)
|
if (isAbsoluteVolumeDevice(audioSystemDeviceOut)
|
||||||
|| isA2dpAbsoluteVolumeDevice(audioSystemDeviceOut)) {
|
|| isA2dpAbsoluteVolumeDevice(audioSystemDeviceOut)
|
||||||
|
|| AudioSystem.isLeAudioDeviceType(audioSystemDeviceOut)) {
|
||||||
return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE;
|
return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE;
|
||||||
}
|
}
|
||||||
return AudioManager.DEVICE_VOLUME_BEHAVIOR_VARIABLE;
|
return AudioManager.DEVICE_VOLUME_BEHAVIOR_VARIABLE;
|
||||||
@ -7543,7 +7542,9 @@ public class AudioService extends IAudioService.Stub
|
|||||||
int index;
|
int index;
|
||||||
if (isFullyMuted()) {
|
if (isFullyMuted()) {
|
||||||
index = 0;
|
index = 0;
|
||||||
} else if (isAbsoluteVolumeDevice(device) || isA2dpAbsoluteVolumeDevice(device)) {
|
} else if (isAbsoluteVolumeDevice(device)
|
||||||
|
|| isA2dpAbsoluteVolumeDevice(device)
|
||||||
|
|| AudioSystem.isLeAudioDeviceType(device)) {
|
||||||
index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
|
index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
|
||||||
} else if (isFullVolumeDevice(device)) {
|
} else if (isFullVolumeDevice(device)) {
|
||||||
index = (mIndexMax + 5)/10;
|
index = (mIndexMax + 5)/10;
|
||||||
@ -7565,7 +7566,8 @@ public class AudioService extends IAudioService.Stub
|
|||||||
if (isFullyMuted()) {
|
if (isFullyMuted()) {
|
||||||
index = 0;
|
index = 0;
|
||||||
} else if (isAbsoluteVolumeDevice(device)
|
} else if (isAbsoluteVolumeDevice(device)
|
||||||
|| isA2dpAbsoluteVolumeDevice(device)) {
|
|| isA2dpAbsoluteVolumeDevice(device)
|
||||||
|
|| AudioSystem.isLeAudioDeviceType(device)) {
|
||||||
index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
|
index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
|
||||||
} else if (isFullVolumeDevice(device)) {
|
} else if (isFullVolumeDevice(device)) {
|
||||||
index = (mIndexMax + 5)/10;
|
index = (mIndexMax + 5)/10;
|
||||||
@ -7986,7 +7988,8 @@ public class AudioService extends IAudioService.Stub
|
|||||||
int streamDevice = getDeviceForStream(streamType);
|
int streamDevice = getDeviceForStream(streamType);
|
||||||
if ((device != streamDevice)
|
if ((device != streamDevice)
|
||||||
&& (isAbsoluteVolumeDevice(device)
|
&& (isAbsoluteVolumeDevice(device)
|
||||||
|| isA2dpAbsoluteVolumeDevice(device))) {
|
|| isA2dpAbsoluteVolumeDevice(device)
|
||||||
|
|| AudioSystem.isLeAudioDeviceType(device))) {
|
||||||
mStreamStates[streamType].applyDeviceVolume_syncVSS(device);
|
mStreamStates[streamType].applyDeviceVolume_syncVSS(device);
|
||||||
}
|
}
|
||||||
mStreamStates[streamType].applyDeviceVolume_syncVSS(streamDevice);
|
mStreamStates[streamType].applyDeviceVolume_syncVSS(streamDevice);
|
||||||
|
@ -394,7 +394,7 @@ public class AudioServiceEvents {
|
|||||||
case VOL_SET_LE_AUDIO_VOL:
|
case VOL_SET_LE_AUDIO_VOL:
|
||||||
return new StringBuilder("setLeAudioVolume:")
|
return new StringBuilder("setLeAudioVolume:")
|
||||||
.append(" index:").append(mVal1)
|
.append(" index:").append(mVal1)
|
||||||
.append(" gain dB:").append(mVal2)
|
.append(" maxIndex:").append(mVal2)
|
||||||
.toString();
|
.toString();
|
||||||
case VOL_SET_AVRCP_VOL:
|
case VOL_SET_AVRCP_VOL:
|
||||||
return new StringBuilder("setAvrcpVolume:")
|
return new StringBuilder("setAvrcpVolume:")
|
||||||
|
@ -410,9 +410,8 @@ public class BtHelper {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* leaudio expect volume value in range 0 to 255
|
/* leaudio expect volume value in range 0 to 255 */
|
||||||
*/
|
int volume = (int) Math.round((double) index * BT_LE_AUDIO_MAX_VOL / maxIndex);
|
||||||
int volume = (index * (BT_LE_AUDIO_MAX_VOL - BT_LE_AUDIO_MIN_VOL)) / maxIndex ;
|
|
||||||
|
|
||||||
if (AudioService.DEBUG_VOL) {
|
if (AudioService.DEBUG_VOL) {
|
||||||
Log.i(TAG, "setLeAudioVolume: calling mLeAudio.setVolume idx="
|
Log.i(TAG, "setLeAudioVolume: calling mLeAudio.setVolume idx="
|
||||||
|
Loading…
x
Reference in New Issue
Block a user