From f04fab160a044e4e7d936c0457a156d7911f924c Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Thu, 19 May 2016 10:42:35 -0700 Subject: [PATCH] Recording activity notification: return list of configuration Use a list of configurations instead of an array Bug 28819230 Change-Id: Ia4a3cdabf8337cfb98abe4d0055d497bcab8a5ee --- api/current.txt | 4 ++-- api/removed.txt | 4 ++++ api/system-current.txt | 4 ++-- api/system-removed.txt | 4 ++++ api/test-current.txt | 4 ++-- api/test-removed.txt | 4 ++++ media/java/android/media/AudioManager.java | 21 ++++++++++++------- media/java/android/media/IAudioService.aidl | 2 +- .../media/IRecordingConfigDispatcher.aidl | 2 +- .../android/server/audio/AudioService.java | 2 +- .../audio/RecordingActivityMonitor.java | 15 ++++++------- 11 files changed, 43 insertions(+), 23 deletions(-) diff --git a/api/current.txt b/api/current.txt index 17182dbde4ced..30b5be45a0a86 100644 --- a/api/current.txt +++ b/api/current.txt @@ -19584,7 +19584,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); @@ -19730,7 +19730,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 9bccb9ebc8371..673cbba06c02a 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -21091,7 +21091,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); @@ -21245,7 +21245,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 13a96e013670a..cc0f3e50d6b28 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -19653,7 +19653,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); @@ -19799,7 +19799,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; }