From 958faf9a252a62a79c426f99ba23b83f93705157 Mon Sep 17 00:00:00 2001 From: jiabin Date: Fri, 12 Mar 2021 20:00:05 +0000 Subject: [PATCH] Add MediaRecorder.SystemSource. Add an IntDef named MediaRecorder.SystemSource, which includes all audio source that is defined in MediaRecorder.AudioSource. It can be used for preferred device for capture preset APIs. Test: atest AudioServiceHostTest Bug: 180395563 Change-Id: If80a2875b64544c1e7e60999bad6dafdba712333 --- media/java/android/media/AudioManager.java | 14 +++++++++----- media/java/android/media/MediaRecorder.java | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 1cef0922a48e6..c40974dcb3dcb 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -1988,7 +1988,7 @@ public class AudioManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public boolean setPreferredDeviceForCapturePreset(int capturePreset, + public boolean setPreferredDeviceForCapturePreset(@MediaRecorder.SystemSource int capturePreset, @NonNull AudioDeviceAttributes device) { return setPreferredDevicesForCapturePreset(capturePreset, Arrays.asList(device)); } @@ -2002,7 +2002,8 @@ public class AudioManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public boolean clearPreferredDevicesForCapturePreset(int capturePreset) { + public boolean clearPreferredDevicesForCapturePreset( + @MediaRecorder.SystemSource int capturePreset) { if (!MediaRecorder.isValidAudioSource(capturePreset)) { return false; } @@ -2024,7 +2025,8 @@ public class AudioManager { @NonNull @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public List getPreferredDevicesForCapturePreset(int capturePreset) { + public List getPreferredDevicesForCapturePreset( + @MediaRecorder.SystemSource int capturePreset) { if (!MediaRecorder.isValidAudioSource(capturePreset)) { return new ArrayList(); } @@ -2036,7 +2038,8 @@ public class AudioManager { } private boolean setPreferredDevicesForCapturePreset( - int capturePreset, @NonNull List devices) { + @MediaRecorder.SystemSource int capturePreset, + @NonNull List devices) { Objects.requireNonNull(devices); if (!MediaRecorder.isValidAudioSource(capturePreset)) { return false; @@ -2081,7 +2084,8 @@ public class AudioManager { * @param devices a list of newly set preferred audio devices */ void onPreferredDevicesForCapturePresetChanged( - int capturePreset, @NonNull List devices); + @MediaRecorder.SystemSource int capturePreset, + @NonNull List devices); } /** diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 49a4cc6239bb8..c35a92031ca31 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -379,6 +379,26 @@ public class MediaRecorder implements AudioRouting, @Retention(RetentionPolicy.SOURCE) public @interface Source {} + /** @hide */ + @IntDef({ + AudioSource.DEFAULT, + AudioSource.MIC, + AudioSource.VOICE_UPLINK, + AudioSource.VOICE_DOWNLINK, + AudioSource.VOICE_CALL, + AudioSource.CAMCORDER, + AudioSource.VOICE_RECOGNITION, + AudioSource.VOICE_COMMUNICATION, + AudioSource.REMOTE_SUBMIX, + AudioSource.UNPROCESSED, + AudioSource.VOICE_PERFORMANCE, + AudioSource.ECHO_REFERENCE, + AudioSource.RADIO_TUNER, + AudioSource.HOTWORD, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SystemSource {} + // TODO make AudioSource static (API change) and move this method inside the AudioSource class /** * @hide