Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 958faf9a authored by jiabin's avatar jiabin
Browse files

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
parent e4ba4f83
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -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<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(int capturePreset) {
    public List<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(
            @MediaRecorder.SystemSource int capturePreset) {
        if (!MediaRecorder.isValidAudioSource(capturePreset)) {
            return new ArrayList<AudioDeviceAttributes>();
        }
@@ -2036,7 +2038,8 @@ public class AudioManager {
    }

    private boolean setPreferredDevicesForCapturePreset(
            int capturePreset, @NonNull List<AudioDeviceAttributes> devices) {
            @MediaRecorder.SystemSource int capturePreset,
            @NonNull List<AudioDeviceAttributes> 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<AudioDeviceAttributes> devices);
                @MediaRecorder.SystemSource int capturePreset,
                @NonNull List<AudioDeviceAttributes> devices);
    }

    /**
+20 −0
Original line number Diff line number Diff line
@@ -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