diff options
| author | 2023-09-21 18:26:30 +0000 | |
|---|---|---|
| committer | 2023-09-21 18:26:30 +0000 | |
| commit | 83f9cf96a7885c7a632f1b6e8c625e8ef0c554cf (patch) | |
| tree | ceb80f623ebbc569abf519cf0d82d382dc3d966b | |
| parent | 335ebbcd2174e052f116eda2de533f23329cbebc (diff) | |
| parent | 9f6898392ee28f713912545d4e12d955ee72bd90 (diff) | |
Merge "CSD: legacy safe hearing works only for wired HS/HP" into udc-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/audio/SoundDoseHelper.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/audio/SoundDoseHelper.java b/services/core/java/com/android/server/audio/SoundDoseHelper.java index 95b6c2cef963..81365bfbf2a6 100644 --- a/services/core/java/com/android/server/audio/SoundDoseHelper.java +++ b/services/core/java/com/android/server/audio/SoundDoseHelper.java @@ -719,7 +719,9 @@ public class SoundDoseHelper { /*package*/ void initSafeMediaVolumeIndex() { for (int i = 0; i < mSafeMediaVolumeDevices.size(); ++i) { int deviceType = mSafeMediaVolumeDevices.keyAt(i); - mSafeMediaVolumeDevices.put(deviceType, getSafeDeviceMediaVolumeIndex(deviceType)); + if (mSafeMediaVolumeDevices.valueAt(i) == SAFE_MEDIA_VOLUME_UNINITIALIZED) { + mSafeMediaVolumeDevices.put(deviceType, getSafeDeviceMediaVolumeIndex(deviceType)); + } } } @@ -743,7 +745,7 @@ public class SoundDoseHelper { } /*package*/ boolean safeDevicesContains(int device) { - return mSafeMediaVolumeDevices.indexOfKey(device) >= 0; + return mSafeMediaVolumeDevices.get(device, SAFE_MEDIA_VOLUME_UNINITIALIZED) >= 0; } /*package*/ void invalidatPendingVolumeCommand() { @@ -1014,6 +1016,7 @@ public class SoundDoseHelper { initCsd(); synchronized (mSafeMediaVolumeStateLock) { + initSafeMediaVolumeIndex(); updateSafeMediaVolume_l(caller); } } @@ -1065,11 +1068,18 @@ public class SoundDoseHelper { } private int getSafeDeviceMediaVolumeIndex(int deviceType) { - // legacy implementation uses mSafeMediaVolumeIndex for wired HS/HP - // instead of computing it from the volume curves - if ((deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADPHONE - || deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADSET) && !mEnableCsd.get()) { - return mSafeMediaVolumeIndex; + if (!mEnableCsd.get()) { + // legacy hearing safety only for wired and USB HS/HP + if (deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADPHONE + || deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADSET) { + // legacy hearing safety uses mSafeMediaVolumeIndex for wired HS/HP + // instead of computing it from the volume curves + return mSafeMediaVolumeIndex; + } + + if (deviceType != AudioSystem.DEVICE_OUT_USB_HEADSET) { + return SAFE_MEDIA_VOLUME_UNINITIALIZED; + } } // determine UI volume index corresponding to the wanted safe gain in dBFS |