summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2023-04-14 15:41:03 +0200
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-04-17 20:13:18 +0000
commit41b888f32c83452f1401d6febc0176dacba10819 (patch)
treed829152bd9d68d2eefd24b56216d7e2f6683fd2b
parentc34ca49a06cec8abc10236496bfdfbaae9122f96 (diff)
downloadbase-41b888f32c83452f1401d6febc0176dacba10819.tar.gz
AudioService: fix volume group setting name
The setting name for a volume group must also be updated when the corresponding public stream setting name is changed. Also no need to persist the volume group index when there is a corresponding public stream as this is redundant. Bug: 270815307 Test: repro steps in bug Test: ates AudioManagerTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:205fdba74eeced1b9f9cb13b415afa6e87ea72f8) Merged-In: I4edc8036201cba1fb7f79f12f434a871f6010114 Change-Id: I4edc8036201cba1fb7f79f12f434a871f6010114
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java38
1 files changed, 32 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 158492056fb5..3ddb0ae96a22 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -2251,8 +2251,8 @@ public class AudioService extends IAudioService.Stub
synchronized (VolumeStreamState.class) {
mStreamStates[AudioSystem.STREAM_DTMF]
.setAllIndexes(mStreamStates[dtmfStreamAlias], caller);
- mStreamStates[AudioSystem.STREAM_ACCESSIBILITY].mVolumeIndexSettingName =
- System.VOLUME_SETTINGS_INT[a11yStreamAlias];
+ mStreamStates[AudioSystem.STREAM_ACCESSIBILITY].setSettingName(
+ System.VOLUME_SETTINGS_INT[a11yStreamAlias]);
mStreamStates[AudioSystem.STREAM_ACCESSIBILITY].setAllIndexes(
mStreamStates[a11yStreamAlias], caller);
}
@@ -7505,7 +7505,7 @@ public class AudioService extends IAudioService.Stub
private int mPublicStreamType = AudioSystem.STREAM_MUSIC;
private AudioAttributes mAudioAttributes = AudioProductStrategy.getDefaultAttributes();
private boolean mIsMuted = false;
- private final String mSettingName;
+ private String mSettingName;
// No API in AudioSystem to get a device from strategy or from attributes.
// Need a valid public stream type to use current API getDeviceForStream
@@ -7834,15 +7834,19 @@ public class AudioService extends IAudioService.Stub
}
private void persistVolumeGroup(int device) {
- if (mUseFixedVolume) {
+ // No need to persist the index if the volume group is backed up
+ // by a public stream type as this is redundant
+ if (mUseFixedVolume || mHasValidStreamType) {
return;
}
if (DEBUG_VOL) {
Log.v(TAG, "persistVolumeGroup: storing index " + getIndex(device) + " for group "
+ mAudioVolumeGroup.name()
+ ", device " + AudioSystem.getOutputDeviceName(device)
- + " and User=" + getCurrentUserId());
+ + " and User=" + getCurrentUserId()
+ + " mSettingName: " + mSettingName);
}
+
boolean success = mSettings.putSystemIntForUser(mContentResolver,
getSettingNameForDevice(device),
getIndex(device),
@@ -7905,6 +7909,14 @@ public class AudioService extends IAudioService.Stub
return mSettingName + "_" + AudioSystem.getOutputDeviceName(device);
}
+ void setSettingName(String settingName) {
+ mSettingName = settingName;
+ }
+
+ String getSettingName() {
+ return mSettingName;
+ }
+
private void dump(PrintWriter pw) {
pw.println("- VOLUME GROUP " + mAudioVolumeGroup.name() + ":");
pw.print(" Muted: ");
@@ -8029,6 +8041,9 @@ public class AudioService extends IAudioService.Stub
*/
public void setVolumeGroupState(VolumeGroupState volumeGroupState) {
mVolumeGroupState = volumeGroupState;
+ if (mVolumeGroupState != null) {
+ mVolumeGroupState.setSettingName(mVolumeIndexSettingName);
+ }
}
/**
* Update the minimum index that can be used without MODIFY_AUDIO_SETTINGS permission
@@ -8099,6 +8114,17 @@ public class AudioService extends IAudioService.Stub
return (mVolumeIndexSettingName != null && !mVolumeIndexSettingName.isEmpty());
}
+ void setSettingName(String settingName) {
+ mVolumeIndexSettingName = settingName;
+ if (mVolumeGroupState != null) {
+ mVolumeGroupState.setSettingName(mVolumeIndexSettingName);
+ }
+ }
+
+ String getSettingName() {
+ return mVolumeIndexSettingName;
+ }
+
public void readSettings() {
synchronized (mSettingsLock) {
synchronized (VolumeStreamState.class) {
@@ -8747,7 +8773,7 @@ public class AudioService extends IAudioService.Stub
if (streamState.hasValidSettingsName()) {
mSettings.putSystemIntForUser(mContentResolver,
streamState.getSettingNameForDevice(device),
- (streamState.getIndex(device) + 5)/ 10,
+ (streamState.getIndex(device) + 5) / 10,
UserHandle.USER_CURRENT);
}
}