diff options
| author | 2022-07-11 07:55:54 +0000 | |
|---|---|---|
| committer | 2022-07-11 07:55:54 +0000 | |
| commit | 8a3b78ac7f7be0dce955c0c985a2c7f3af1877b4 (patch) | |
| tree | cfad6db4681264f357f0150d78c9ea6841a06b97 | |
| parent | 62447342664ddca59979266644a42c0a750e83f0 (diff) | |
| parent | d6c098fe2daee74154aa16e69f6df8e748314020 (diff) | |
Merge "AudioService: conditional logging of hearing aid volume"
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 dbe4fb8c8795..1312d082a832 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -1158,6 +1158,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 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 73e4cf23c347..d9037fe7aca7 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); } |