summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java29
-rw-r--r--services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java12
2 files changed, 29 insertions, 12 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index ee37e97d7ad8..4e84733d540f 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -1269,8 +1269,7 @@ public class AudioService extends IAudioService.Stub
}
};
- @GuardedBy("mSettingsLock")
- private boolean mRttEnabled = false;
+ private AtomicBoolean mRttEnabled = new AtomicBoolean(false);
private AtomicBoolean mMasterMute = new AtomicBoolean(false);
@@ -2091,13 +2090,13 @@ public class AudioService extends IAudioService.Stub
// Restore setParameters and other queued setters.
mRestorableParameters.restoreAll();
+ final int forDock = mDockAudioMediaEnabled ?
+ AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE;
+ mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied");
+ sendEncodedSurroundMode(mContentResolver, "onAudioServerDied");
+ sendEnabledSurroundFormats(mContentResolver, true);
+ AudioSystem.setRttEnabled(mRttEnabled.get());
synchronized (mSettingsLock) {
- final int forDock = mDockAudioMediaEnabled ?
- AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE;
- mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied");
- sendEncodedSurroundMode(mContentResolver, "onAudioServerDied");
- sendEnabledSurroundFormats(mContentResolver, true);
- AudioSystem.setRttEnabled(mRttEnabled);
resetAssistantServicesUidsLocked();
}
@@ -3234,9 +3233,10 @@ public class AudioService extends IAudioService.Stub
sendEnabledSurroundFormats(cr, true);
updateAssistantUIdLocked(/* forceUpdate= */ true);
resetActiveAssistantUidsLocked();
- AudioSystem.setRttEnabled(mRttEnabled);
}
+ AudioSystem.setRttEnabled(mRttEnabled.get());
+
mMuteAffectedStreams = mSettings.getSystemIntForUser(cr,
System.MUTE_STREAMS_AFFECTED, AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED,
UserHandle.USER_CURRENT);
@@ -6836,7 +6836,7 @@ public class AudioService extends IAudioService.Stub
return false;
}
- /** @see AudioManager#setRttEnabled() */
+ /** @see AudioManager#setRttEnabled(boolean) */
@Override
public void setRttEnabled(boolean rttEnabled) {
if (mContext.checkCallingOrSelfPermission(
@@ -6846,8 +6846,8 @@ public class AudioService extends IAudioService.Stub
+ Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
return;
}
- synchronized (mSettingsLock) {
- mRttEnabled = rttEnabled;
+ synchronized (this) {
+ mRttEnabled.set(rttEnabled);
final long identity = Binder.clearCallingIdentity();
try {
AudioSystem.setRttEnabled(rttEnabled);
@@ -6857,6 +6857,11 @@ public class AudioService extends IAudioService.Stub
}
}
+ @VisibleForTesting(visibility = PACKAGE)
+ protected boolean isRttEnabled() {
+ return mRttEnabled.get();
+ }
+
/** @see AudioManager#adjustSuggestedStreamVolumeForUid(int, int, int, String, int, int, int) */
@Override
public void adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags,
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
index aa9d2058e659..9e8c34eabd40 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
@@ -259,4 +259,16 @@ public class AudioServiceTest {
inputGainIndex,
mAudioService.getInputGainIndex(ada));
}
+
+ @Test
+ public void testRttEnabled() throws Exception {
+ Log.i(TAG, "running testRttEnabled");
+ Assert.assertNotNull(mAudioService);
+
+ mAudioService.setRttEnabled(true);
+ Assert.assertTrue(mAudioService.isRttEnabled());
+
+ mAudioService.setRttEnabled(false);
+ Assert.assertFalse(mAudioService.isRttEnabled());
+ }
}