diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index fc2b7f66e77a7..686a91901b5f8 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -2242,6 +2242,12 @@ android_media_AudioSystem_setAllowedCapturePolicy(JNIEnv *env, jobject thiz, jin return AudioSystem::setAllowedCapturePolicy(uid, flags); } +static jint +android_media_AudioSystem_setRttEnabled(JNIEnv *env, jobject thiz, jboolean enabled) +{ + return (jint) check_AudioSystem_Command(AudioSystem::setRttEnabled(enabled)); +} + // ---------------------------------------------------------------------------- static const JNINativeMethod gMethods[] = { @@ -2319,6 +2325,7 @@ static const JNINativeMethod gMethods[] = { {"getHwOffloadEncodingFormatsSupportedForA2DP", "(Ljava/util/ArrayList;)I", (void*)android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP}, {"setAllowedCapturePolicy", "(II)I", (void *)android_media_AudioSystem_setAllowedCapturePolicy}, + {"setRttEnabled", "(Z)I", (void *)android_media_AudioSystem_setRttEnabled}, }; static const JNINativeMethod gEventHandlerMethods[] = { diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index fde0e640d92c4..53bc65d711b0d 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -24,7 +24,6 @@ import android.content.Context; import android.content.pm.PackageManager; import android.media.audiofx.AudioEffect; import android.media.audiopolicy.AudioMix; -import android.os.Build; import android.util.Log; import java.util.ArrayList; @@ -981,6 +980,8 @@ public class AudioSystem public static native boolean getMasterMono(); /** @hide enables or disables the master mono mode. */ public static native int setMasterMono(boolean mono); + /** @hide enables or disables the RTT mode. */ + public static native int setRttEnabled(boolean enabled); /** @hide returns master balance value in range -1.f -> 1.f, where 0.f is dead center. */ @TestApi diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index e43c548eb66ab..5ae51138f7211 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1016,6 +1016,7 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); sendEnabledSurroundFormats(mContentResolver, true); updateAssistantUId(true); + updateRttEanbled(mContentResolver); } synchronized (mAccessibilityServiceUidsLock) { AudioSystem.setA11yServicesUids(mAccessibilityServiceUids); @@ -1480,6 +1481,12 @@ public class AudioService extends IAudioService.Stub } } + private void updateRttEanbled(ContentResolver cr) { + final boolean rttEnabled = Settings.Secure.getIntForUser(cr, + Settings.Secure.RTT_CALLING_MODE, 0, UserHandle.USER_CURRENT) != 0; + AudioSystem.setRttEnabled(rttEnabled); + } + private void readPersistedSettings() { final ContentResolver cr = mContentResolver; @@ -1524,6 +1531,7 @@ public class AudioService extends IAudioService.Stub sendEncodedSurroundMode(cr, "readPersistedSettings"); sendEnabledSurroundFormats(cr, true); updateAssistantUId(true); + updateRttEanbled(cr); } mMuteAffectedStreams = System.getIntForUser(cr, @@ -5502,6 +5510,8 @@ public class AudioService extends IAudioService.Stub mContentResolver.registerContentObserver(Settings.Secure.getUriFor( Settings.Secure.VOICE_INTERACTION_SERVICE), false, this); + mContentResolver.registerContentObserver(Settings.Secure.getUriFor( + Settings.Secure.RTT_CALLING_MODE), false, this); } @Override @@ -5525,6 +5535,7 @@ public class AudioService extends IAudioService.Stub updateEncodedSurroundOutput(); sendEnabledSurroundFormats(mContentResolver, mSurroundModeChanged); updateAssistantUId(false); + updateRttEanbled(mContentResolver); } }