diff --git a/api/current.txt b/api/current.txt index 302ef74111f02..b7010178d09cc 100644 --- a/api/current.txt +++ b/api/current.txt @@ -19691,7 +19691,7 @@ package android.media { method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int generateAudioSessionId(); - method public android.media.AudioRecordingConfiguration[] getActiveRecordingConfigurations(); + method public java.util.List getActiveRecordingConfigurations(); method public android.media.AudioDeviceInfo[] getDevices(int); method public int getMode(); method public java.lang.String getParameters(java.lang.String); @@ -19837,7 +19837,7 @@ package android.media { public static abstract class AudioManager.AudioRecordingCallback { ctor public AudioManager.AudioRecordingCallback(); - method public void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + method public void onRecordingConfigChanged(java.util.List); } public static abstract interface AudioManager.OnAudioFocusChangeListener { diff --git a/api/removed.txt b/api/removed.txt index 42c64ea62cced..73a439c82d488 100644 --- a/api/removed.txt +++ b/api/removed.txt @@ -196,6 +196,10 @@ package android.media { ctor public AudioFormat(); } + public static abstract class AudioManager.AudioRecordingCallback { + method public deprecated void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + } + } package android.media.tv { diff --git a/api/system-current.txt b/api/system-current.txt index b3b6a7dba8882..7c765241985dc 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -21198,7 +21198,7 @@ package android.media { method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int generateAudioSessionId(); - method public android.media.AudioRecordingConfiguration[] getActiveRecordingConfigurations(); + method public java.util.List getActiveRecordingConfigurations(); method public android.media.AudioDeviceInfo[] getDevices(int); method public int getMode(); method public java.lang.String getParameters(java.lang.String); @@ -21352,7 +21352,7 @@ package android.media { public static abstract class AudioManager.AudioRecordingCallback { ctor public AudioManager.AudioRecordingCallback(); - method public void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + method public void onRecordingConfigChanged(java.util.List); } public static abstract interface AudioManager.OnAudioFocusChangeListener { diff --git a/api/system-removed.txt b/api/system-removed.txt index 4873605d4e1d0..0a758f81655f8 100644 --- a/api/system-removed.txt +++ b/api/system-removed.txt @@ -194,6 +194,10 @@ package android.media { ctor public AudioFormat(); } + public static abstract class AudioManager.AudioRecordingCallback { + method public deprecated void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + } + } package android.media.tv { diff --git a/api/test-current.txt b/api/test-current.txt index c5b367be21907..4a460dde9e073 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -19761,7 +19761,7 @@ package android.media { method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int generateAudioSessionId(); - method public android.media.AudioRecordingConfiguration[] getActiveRecordingConfigurations(); + method public java.util.List getActiveRecordingConfigurations(); method public android.media.AudioDeviceInfo[] getDevices(int); method public int getMode(); method public java.lang.String getParameters(java.lang.String); @@ -19907,7 +19907,7 @@ package android.media { public static abstract class AudioManager.AudioRecordingCallback { ctor public AudioManager.AudioRecordingCallback(); - method public void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + method public void onRecordingConfigChanged(java.util.List); } public static abstract interface AudioManager.OnAudioFocusChangeListener { diff --git a/api/test-removed.txt b/api/test-removed.txt index 42c64ea62cced..73a439c82d488 100644 --- a/api/test-removed.txt +++ b/api/test-removed.txt @@ -196,6 +196,10 @@ package android.media { ctor public AudioFormat(); } + public static abstract class AudioManager.AudioRecordingCallback { + method public deprecated void onRecordingConfigChanged(android.media.AudioRecordingConfiguration[]); + } + } package android.media.tv { diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 23ae691ddca94..7178313485b8b 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -2746,12 +2746,19 @@ public class AudioManager { * configuration. */ public static abstract class AudioRecordingCallback { + /** + * This method is deprecated, override {@link #onRecordingConfigChanged(List)} instead. + * @param configs + * @removed + */ + @Deprecated + public void onRecordingConfigChanged(AudioRecordingConfiguration[] configs) {} /** * Called whenever the device recording configuration has changed. - * @param configs array containing the results of + * @param configs list containing the results of * {@link AudioManager#getActiveRecordingConfigurations()}. */ - public void onRecordingConfigChanged(AudioRecordingConfiguration[] configs) {} + public void onRecordingConfigChanged(List configs) {} } private static class AudioRecordingCallbackInfo { @@ -2765,10 +2772,10 @@ public class AudioManager { private final static class RecordConfigChangeCallbackData { final AudioRecordingCallback mCb; - final AudioRecordingConfiguration[] mConfigs; + final List mConfigs; RecordConfigChangeCallbackData(AudioRecordingCallback cb, - AudioRecordingConfiguration[] configs) { + List configs) { mCb = cb; mConfigs = configs; } @@ -2848,10 +2855,10 @@ public class AudioManager { /** * Returns the current active audio recording configurations of the device. - * @return a non-null array of recording configurations. An array of length 0 indicates there is + * @return a non-null list of recording configurations. An empty list indicates there is * no recording active when queried. */ - public @NonNull AudioRecordingConfiguration[] getActiveRecordingConfigurations() { + public @NonNull List getActiveRecordingConfigurations() { final IAudioService service = getService(); try { return service.getActiveRecordingConfigurations(); @@ -2909,7 +2916,7 @@ public class AudioManager { private final IRecordingConfigDispatcher mRecCb = new IRecordingConfigDispatcher.Stub() { - public void dispatchRecordingConfigChange(AudioRecordingConfiguration[] configs) { + public void dispatchRecordingConfigChange(List configs) { synchronized(mRecordCallbackLock) { if (mRecordCallbackList != null) { for (int i=0 ; i < mRecordCallbackList.size() ; i++) { diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 97f670b171144..c7931fcd297bd 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -164,5 +164,5 @@ interface IAudioService { oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb); - AudioRecordingConfiguration[] getActiveRecordingConfigurations(); + List getActiveRecordingConfigurations(); } diff --git a/media/java/android/media/IRecordingConfigDispatcher.aidl b/media/java/android/media/IRecordingConfigDispatcher.aidl index e8032831af889..f4e98b20af7c6 100644 --- a/media/java/android/media/IRecordingConfigDispatcher.aidl +++ b/media/java/android/media/IRecordingConfigDispatcher.aidl @@ -25,6 +25,6 @@ import android.media.AudioRecordingConfiguration; */ oneway interface IRecordingConfigDispatcher { - void dispatchRecordingConfigChange(in AudioRecordingConfiguration[] configs); + void dispatchRecordingConfigChange(in List configs); } diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 0874fa7a58e53..7777ae23ff29c 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -6342,7 +6342,7 @@ public class AudioService extends IAudioService.Stub { mRecordMonitor.unregisterRecordingCallback(rcdb); } - public AudioRecordingConfiguration[] getActiveRecordingConfigurations() { + public List getActiveRecordingConfigurations() { return mRecordMonitor.getActiveRecordingConfigurations(); } diff --git a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java index 7a085e1435996..57d55de8d0020 100644 --- a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java +++ b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java @@ -29,6 +29,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; /** * Class to receive and dispatch updates from AudioSystem about recording configurations. @@ -54,7 +55,7 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin if (MediaRecorder.isSystemOnlyAudioSource(source)) { return; } - final AudioRecordingConfiguration[] configs = + final List configs = updateSnapshot(event, session, source, recordingInfo); if (configs != null){ synchronized(mClients) { @@ -104,9 +105,9 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin } } - AudioRecordingConfiguration[] getActiveRecordingConfigurations() { + List getActiveRecordingConfigurations() { synchronized(mRecordConfigs) { - return mRecordConfigs.values().toArray(new AudioRecordingConfiguration[0]); + return new ArrayList(mRecordConfigs.values()); } } @@ -118,13 +119,13 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin * @param recordingFormat see * {@link AudioSystem.AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int[])} * for the definition of the contents of the array - * @return null if the list of active recording sessions has not been modified, an array + * @return null if the list of active recording sessions has not been modified, a list * with the current active configurations otherwise. */ - private AudioRecordingConfiguration[] updateSnapshot(int event, int session, int source, + private List updateSnapshot(int event, int session, int source, int[] recordingInfo) { final boolean configChanged; - final AudioRecordingConfiguration[] configs; + final ArrayList configs; synchronized(mRecordConfigs) { switch (event) { case AudioManager.RECORD_CONFIG_EVENT_STOP: @@ -171,7 +172,7 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin configChanged = false; } if (configChanged) { - configs = mRecordConfigs.values().toArray(new AudioRecordingConfiguration[0]); + configs = new ArrayList(mRecordConfigs.values()); } else { configs = null; }