Loading core/java/android/service/voice/HotwordDetectionService.java +6 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.Context; import android.content.Intent; import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.media.AudioSystem; import android.os.Bundle; import android.os.IBinder; import android.os.IRemoteCallback; Loading Loading @@ -186,6 +187,11 @@ public abstract class HotwordDetectionService extends Service { } } @Override public void updateAudioFlinger(IBinder audioFlinger) { AudioSystem.setAudioFlingerBinder(audioFlinger); } @Override public void updateContentCaptureManager(IContentCaptureManager manager, ContentCaptureOptions options) { Loading core/java/android/service/voice/IHotwordDetectionService.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.service.voice; import android.content.ContentCaptureOptions; import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.os.IBinder; import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; Loading Loading @@ -50,6 +51,8 @@ oneway interface IHotwordDetectionService { in SharedMemory sharedMemory, in IRemoteCallback callback); void updateAudioFlinger(in IBinder audioFlinger); void updateContentCaptureManager( in IContentCaptureManager contentCaptureManager, in ContentCaptureOptions options); Loading core/jni/android_media_AudioSystem.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ #include "android_media_AudioFormat.h" #include "android_media_AudioProfile.h" #include "android_media_MicrophoneInfo.h" #include "android_util_Binder.h" // ---------------------------------------------------------------------------- Loading Loading @@ -850,6 +851,11 @@ android_media_AudioSystem_checkAudioFlinger(JNIEnv *env, jobject clazz) return (jint) check_AudioSystem_Command(AudioSystem::checkAudioFlinger()); } static void android_media_AudioSystem_setAudioFlingerBinder(JNIEnv *env, jobject clazz, jobject audioFlinger) { AudioSystem::setAudioFlingerBinder(android::ibinderForJavaObject(env, audioFlinger)); } static void convertAudioGainConfigToNative(JNIEnv *env, struct audio_gain_config *nAudioGainConfig, const jobject jAudioGainConfig, Loading Loading @@ -2728,6 +2734,8 @@ static const JNINativeMethod gMethods[] = {"getOutputLatency", "(I)I", (void *)android_media_AudioSystem_getOutputLatency}, {"setLowRamDevice", "(ZJ)I", (void *)android_media_AudioSystem_setLowRamDevice}, {"checkAudioFlinger", "()I", (void *)android_media_AudioSystem_checkAudioFlinger}, {"setAudioFlingerBinder", "(Landroid/os/IBinder;)V", (void *)android_media_AudioSystem_setAudioFlingerBinder}, {"listAudioPorts", "(Ljava/util/ArrayList;[I)I", (void *)android_media_AudioSystem_listAudioPorts}, {"createAudioPatch", Loading media/java/android/media/AudioSystem.java +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.pm.PackageManager; import android.media.audiofx.AudioEffect; import android.media.audiopolicy.AudioMix; import android.os.Build; import android.os.IBinder; import android.os.Vibrator; import android.telephony.TelephonyManager; import android.util.Log; Loading Loading @@ -1655,6 +1656,8 @@ public class AudioSystem /** @hide */ @UnsupportedAppUsage public static native int checkAudioFlinger(); /** @hide */ public static native void setAudioFlingerBinder(IBinder audioFlinger); /** @hide */ public static native int listAudioPorts(ArrayList<AudioPort> ports, int[] generation); Loading services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java +11 −1 Original line number Diff line number Diff line Loading @@ -156,8 +156,9 @@ final class HotwordDetectionConnection { updateStateLocked(options, sharedMemory); return; } updateStateWithCallbackLocked(options, sharedMemory, callback); updateAudioFlinger(); updateContentCaptureManager(); updateStateWithCallbackLocked(options, sharedMemory, callback); } private void updateStateWithCallbackLocked(PersistableBundle options, Loading Loading @@ -229,6 +230,15 @@ final class HotwordDetectionConnection { }); } private void updateAudioFlinger() { // TODO: Consider using a proxy that limits the exposed API surface. IBinder audioFlinger = ServiceManager.getService("media.audio_flinger"); if (audioFlinger == null) { throw new IllegalStateException("Service media.audio_flinger wasn't found."); } mRemoteHotwordDetectionService.post(service -> service.updateAudioFlinger(audioFlinger)); } private void updateContentCaptureManager() { IBinder b = ServiceManager .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE); Loading Loading
core/java/android/service/voice/HotwordDetectionService.java +6 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.Context; import android.content.Intent; import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.media.AudioSystem; import android.os.Bundle; import android.os.IBinder; import android.os.IRemoteCallback; Loading Loading @@ -186,6 +187,11 @@ public abstract class HotwordDetectionService extends Service { } } @Override public void updateAudioFlinger(IBinder audioFlinger) { AudioSystem.setAudioFlingerBinder(audioFlinger); } @Override public void updateContentCaptureManager(IContentCaptureManager manager, ContentCaptureOptions options) { Loading
core/java/android/service/voice/IHotwordDetectionService.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.service.voice; import android.content.ContentCaptureOptions; import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.os.IBinder; import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; Loading Loading @@ -50,6 +51,8 @@ oneway interface IHotwordDetectionService { in SharedMemory sharedMemory, in IRemoteCallback callback); void updateAudioFlinger(in IBinder audioFlinger); void updateContentCaptureManager( in IContentCaptureManager contentCaptureManager, in ContentCaptureOptions options); Loading
core/jni/android_media_AudioSystem.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ #include "android_media_AudioFormat.h" #include "android_media_AudioProfile.h" #include "android_media_MicrophoneInfo.h" #include "android_util_Binder.h" // ---------------------------------------------------------------------------- Loading Loading @@ -850,6 +851,11 @@ android_media_AudioSystem_checkAudioFlinger(JNIEnv *env, jobject clazz) return (jint) check_AudioSystem_Command(AudioSystem::checkAudioFlinger()); } static void android_media_AudioSystem_setAudioFlingerBinder(JNIEnv *env, jobject clazz, jobject audioFlinger) { AudioSystem::setAudioFlingerBinder(android::ibinderForJavaObject(env, audioFlinger)); } static void convertAudioGainConfigToNative(JNIEnv *env, struct audio_gain_config *nAudioGainConfig, const jobject jAudioGainConfig, Loading Loading @@ -2728,6 +2734,8 @@ static const JNINativeMethod gMethods[] = {"getOutputLatency", "(I)I", (void *)android_media_AudioSystem_getOutputLatency}, {"setLowRamDevice", "(ZJ)I", (void *)android_media_AudioSystem_setLowRamDevice}, {"checkAudioFlinger", "()I", (void *)android_media_AudioSystem_checkAudioFlinger}, {"setAudioFlingerBinder", "(Landroid/os/IBinder;)V", (void *)android_media_AudioSystem_setAudioFlingerBinder}, {"listAudioPorts", "(Ljava/util/ArrayList;[I)I", (void *)android_media_AudioSystem_listAudioPorts}, {"createAudioPatch", Loading
media/java/android/media/AudioSystem.java +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.pm.PackageManager; import android.media.audiofx.AudioEffect; import android.media.audiopolicy.AudioMix; import android.os.Build; import android.os.IBinder; import android.os.Vibrator; import android.telephony.TelephonyManager; import android.util.Log; Loading Loading @@ -1655,6 +1656,8 @@ public class AudioSystem /** @hide */ @UnsupportedAppUsage public static native int checkAudioFlinger(); /** @hide */ public static native void setAudioFlingerBinder(IBinder audioFlinger); /** @hide */ public static native int listAudioPorts(ArrayList<AudioPort> ports, int[] generation); Loading
services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java +11 −1 Original line number Diff line number Diff line Loading @@ -156,8 +156,9 @@ final class HotwordDetectionConnection { updateStateLocked(options, sharedMemory); return; } updateStateWithCallbackLocked(options, sharedMemory, callback); updateAudioFlinger(); updateContentCaptureManager(); updateStateWithCallbackLocked(options, sharedMemory, callback); } private void updateStateWithCallbackLocked(PersistableBundle options, Loading Loading @@ -229,6 +230,15 @@ final class HotwordDetectionConnection { }); } private void updateAudioFlinger() { // TODO: Consider using a proxy that limits the exposed API surface. IBinder audioFlinger = ServiceManager.getService("media.audio_flinger"); if (audioFlinger == null) { throw new IllegalStateException("Service media.audio_flinger wasn't found."); } mRemoteHotwordDetectionService.post(service -> service.updateAudioFlinger(audioFlinger)); } private void updateContentCaptureManager() { IBinder b = ServiceManager .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE); Loading