diff options
| author | 2022-06-23 23:32:27 +0000 | |
|---|---|---|
| committer | 2022-09-23 08:17:17 +0000 | |
| commit | 7ea873b0dceb9916a973c34d1d5a65e461cebb98 (patch) | |
| tree | feb998adb47aedda22300ffe4ec527bfae3d74bb | |
| parent | a4d60be743ed8dee7f296ce0facc4a1ecc4d6998 (diff) | |
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
3 files changed, 25 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java index 03dcc8d711d3..b3aff65afb1f 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java +++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java @@ -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: { diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index 9c0d3dfe17a1..ce476f56b87e 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -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) { diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java index 0e3823275777..c168d07c04c9 100644 --- a/services/core/java/com/android/server/audio/BtHelper.java +++ b/services/core/java/com/android/server/audio/BtHelper.java @@ -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); } |