AudioService: conditional logging of hearing aid volume

To avoid confusion when reading audio dumpsys, do not log
hearing aid volume changes when a DEVICE_OUT_HEARING_AID is
not connected.

Bug: 236983951
Test: adb shell dumpsys audio | grep HEARING_AID
Merged-In: I36f39e88e11f4e8ed644b54bfb15308f08a3d698
Change-Id: I36f39e88e11f4e8ed644b54bfb15308f08a3d698
This commit is contained in:
Jean-Michel Trivi
2022-06-23 23:32:27 +00:00
committed by Jakub Pawłowski
parent a4d60be743
commit 7ea873b0dc
3 changed files with 25 additions and 4 deletions

View File

@@ -1323,7 +1323,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
break;
case MSG_II_SET_HEARING_AID_VOLUME:
synchronized (mDeviceStateLock) {
mBtHelper.setHearingAidVolume(msg.arg1, msg.arg2);
mBtHelper.setHearingAidVolume(msg.arg1, msg.arg2,
mDeviceInventory.isHearingAidConnected());
}
break;
case MSG_II_SET_LE_AUDIO_OUT_VOLUME: {

View File

@@ -1159,6 +1159,22 @@ public class AudioDeviceInventory {
.record();
}
/**
* Returns whether a device of type DEVICE_OUT_HEARING_AID is connected.
* Visibility by APM plays no role
* @return true if a DEVICE_OUT_HEARING_AID is connected, false otherwise.
*/
boolean isHearingAidConnected() {
synchronized (mDevicesLock) {
for (DeviceInfo di : mConnectedDevices.values()) {
if (di.mDeviceType == AudioSystem.DEVICE_OUT_HEARING_AID) {
return true;
}
}
return false;
}
}
@GuardedBy("mDevicesLock")
private void makeLeAudioDeviceAvailable(String address, String name, int streamType,
int volumeIndex, int device, String eventSource) {

View File

@@ -423,7 +423,8 @@ public class BtHelper {
mLeAudio.setVolume(volume);
}
/*package*/ synchronized void setHearingAidVolume(int index, int streamType) {
/*package*/ synchronized void setHearingAidVolume(int index, int streamType,
boolean isHeadAidConnected) {
if (mHearingAid == null) {
if (AudioService.DEBUG_VOL) {
Log.i(TAG, "setHearingAidVolume: null mHearingAid");
@@ -440,8 +441,11 @@ public class BtHelper {
Log.i(TAG, "setHearingAidVolume: calling mHearingAid.setVolume idx="
+ index + " gain=" + gainDB);
}
AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
AudioServiceEvents.VolumeEvent.VOL_SET_HEARING_AID_VOL, index, gainDB));
// do not log when hearing aid is not connected to avoid confusion when reading dumpsys
if (isHeadAidConnected) {
AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
AudioServiceEvents.VolumeEvent.VOL_SET_HEARING_AID_VOL, index, gainDB));
}
mHearingAid.setVolume(gainDB);
}