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

Commit 28ff76b4 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

API changes for audio recording notifications

Make AudioRecordConfiguration final since it is parcelable.
In AudioRecordingCallback, pass the array of active recording
  configurations.
Add @IntDef for return values for
  AudioRecordConfiguration.getClientAudioSource()

Bug 27385560

Change-Id: I01193577f50e50496742d888b45f89a2c3b67904
parent 342006e9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -19934,7 +19934,7 @@ package android.media {
  public static abstract class AudioManager.AudioRecordingCallback {
    ctor public AudioManager.AudioRecordingCallback();
    method public void onRecordConfigChanged();
    method public void onRecordConfigChanged(android.media.AudioRecordConfiguration[]);
  }
  public static abstract interface AudioManager.OnAudioFocusChangeListener {
@@ -20008,7 +20008,7 @@ package android.media {
    method public abstract void onRoutingChanged(android.media.AudioRecord);
  }
  public class AudioRecordConfiguration implements android.os.Parcelable {
  public final class AudioRecordConfiguration implements android.os.Parcelable {
    method public int describeContents();
    method public android.media.AudioDeviceInfo getAudioDevice();
    method public int getClientAudioSessionId();
+2 −2
Original line number Diff line number Diff line
@@ -21439,7 +21439,7 @@ package android.media {
  public static abstract class AudioManager.AudioRecordingCallback {
    ctor public AudioManager.AudioRecordingCallback();
    method public void onRecordConfigChanged();
    method public void onRecordConfigChanged(android.media.AudioRecordConfiguration[]);
  }
  public static abstract interface AudioManager.OnAudioFocusChangeListener {
@@ -21516,7 +21516,7 @@ package android.media {
    method public abstract void onRoutingChanged(android.media.AudioRecord);
  }
  public class AudioRecordConfiguration implements android.os.Parcelable {
  public final class AudioRecordConfiguration implements android.os.Parcelable {
    method public int describeContents();
    method public android.media.AudioDeviceInfo getAudioDevice();
    method public int getClientAudioSessionId();
+2 −2
Original line number Diff line number Diff line
@@ -19943,7 +19943,7 @@ package android.media {
  public static abstract class AudioManager.AudioRecordingCallback {
    ctor public AudioManager.AudioRecordingCallback();
    method public void onRecordConfigChanged();
    method public void onRecordConfigChanged(android.media.AudioRecordConfiguration[]);
  }
  public static abstract interface AudioManager.OnAudioFocusChangeListener {
@@ -20017,7 +20017,7 @@ package android.media {
    method public abstract void onRoutingChanged(android.media.AudioRecord);
  }
  public class AudioRecordConfiguration implements android.os.Parcelable {
  public final class AudioRecordConfiguration implements android.os.Parcelable {
    method public int describeContents();
    method public android.media.AudioDeviceInfo getAudioDevice();
    method public int getClientAudioSessionId();
+21 −6
Original line number Diff line number Diff line
@@ -2147,9 +2147,10 @@ public class AudioManager {
                                }
                                break;
                            case MSSG_RECORDING_CONFIG_CHANGE:
                                final AudioRecordingCallback cb = (AudioRecordingCallback) msg.obj;
                                if (cb != null) {
                                    cb.onRecordConfigChanged();
                                final RecordConfigChangeCallbackData cbData =
                                        (RecordConfigChangeCallbackData) msg.obj;
                                if (cbData.mCb != null) {
                                    cbData.mCb.onRecordConfigChanged(cbData.mConfigs);
                                }
                                break;
                            default:
@@ -2734,8 +2735,10 @@ public class AudioManager {
    public static abstract class AudioRecordingCallback {
        /**
         * Called whenever the device recording configuration has changed.
         * @param configs array containing the results of
         *      {@link AudioManager#getActiveRecordConfigurations()}.
         */
        public void onRecordConfigChanged() {}
        public void onRecordConfigChanged(AudioRecordConfiguration[] configs) {}
    }

    private static class AudioRecordingCallbackInfo {
@@ -2747,6 +2750,17 @@ public class AudioManager {
        }
    }

    private final static class RecordConfigChangeCallbackData {
        final AudioRecordingCallback mCb;
        final AudioRecordConfiguration[] mConfigs;

        RecordConfigChangeCallbackData(AudioRecordingCallback cb,
                AudioRecordConfiguration[] configs) {
            mCb = cb;
            mConfigs = configs;
        }
    }

    /**
     * Register a callback to be notified of audio recording changes through
     * {@link AudioRecordingCallback}
@@ -2882,14 +2896,15 @@ public class AudioManager {

    private final IRecordingConfigDispatcher mRecCb = new IRecordingConfigDispatcher.Stub() {

        public void dispatchRecordingConfigChange() {
        public void dispatchRecordingConfigChange(AudioRecordConfiguration[] configs) {
            synchronized(mRecordCallbackLock) {
                if (mRecordCallbackList != null) {
                    for (int i=0 ; i < mRecordCallbackList.size() ; i++) {
                        final AudioRecordingCallbackInfo arci = mRecordCallbackList.get(i);
                        if (arci.mHandler != null) {
                            final Message m = arci.mHandler.obtainMessage(
                                    MSSG_RECORDING_CONFIG_CHANGE/*what*/, arci.mCb/*obj*/);
                                    MSSG_RECORDING_CONFIG_CHANGE/*what*/,
                                    new RecordConfigChangeCallbackData(arci.mCb, configs)/*obj*/);
                            arci.mHandler.sendMessage(m);
                        }
                    }
+18 −2
Original line number Diff line number Diff line
@@ -16,10 +16,13 @@

package android.media;

import android.annotation.IntDef;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Objects;

@@ -29,7 +32,7 @@ import java.util.Objects;
 * {@link AudioManager#getActiveRecordConfigurations()} method.
 *
 */
public class AudioRecordConfiguration implements Parcelable {
public final class AudioRecordConfiguration implements Parcelable {
    private final static String TAG = new String("AudioRecordConfiguration");

    private final int mSessionId;
@@ -53,6 +56,19 @@ public class AudioRecordConfiguration implements Parcelable {
        mPatchHandle = patchHandle;
    }

    /** @hide */
    @IntDef({
        MediaRecorder.AudioSource.DEFAULT,
        MediaRecorder.AudioSource.VOICE_UPLINK,
        MediaRecorder.AudioSource.VOICE_DOWNLINK,
        MediaRecorder.AudioSource.VOICE_CALL,
        MediaRecorder.AudioSource.CAMCORDER,
        MediaRecorder.AudioSource.VOICE_RECOGNITION,
        MediaRecorder.AudioSource.VOICE_COMMUNICATION
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface AudioSource {}

    /**
     * Returns the audio source being used for the recording.
     * @return one of {@link MediaRecorder.AudioSource#MIC},
@@ -63,7 +79,7 @@ public class AudioRecordConfiguration implements Parcelable {
     *       {@link MediaRecorder.AudioSource#VOICE_RECOGNITION},
     *       {@link MediaRecorder.AudioSource#VOICE_COMMUNICATION}.
     */
    public int getClientAudioSource() { return mClientSource; }
    public @AudioSource int getClientAudioSource() { return mClientSource; }

    /**
     * Returns the session number of the recording, see {@link AudioRecord#getAudioSessionId()}.
Loading