Loading api/current.txt +14 −2 Original line number Diff line number Diff line Loading @@ -23379,12 +23379,13 @@ package android.media { method public android.media.AudioPresentation.Builder setProgramId(int); } public class AudioRecord implements android.media.AudioRouting { public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); method protected void finalize(); method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException; method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); Loading @@ -23409,6 +23410,7 @@ package android.media { method public int read(float[], int, int, int); method public int read(java.nio.ByteBuffer, int); method public int read(java.nio.ByteBuffer, int, int); method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public void release(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public deprecated void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener); Loading @@ -23420,6 +23422,7 @@ package android.media { method public void startRecording() throws java.lang.IllegalStateException; method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException; method public void stop() throws java.lang.IllegalStateException; method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa Loading Loading @@ -23474,6 +23477,12 @@ package android.media { field public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR; } public abstract interface AudioRecordingMonitor { method public abstract android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public abstract void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public abstract void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); } public abstract interface AudioRouting { method public abstract void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public abstract android.media.AudioDeviceInfo getPreferredDevice(); Loading Loading @@ -25475,11 +25484,12 @@ package android.media { field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1 } public class MediaRecorder implements android.media.AudioRouting { public class MediaRecorder implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public MediaRecorder(); method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method protected void finalize(); method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException; method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public static final int getAudioSourceMax(); method public int getMaxAmplitude() throws java.lang.IllegalStateException; method public android.os.PersistableBundle getMetrics(); Loading @@ -25488,6 +25498,7 @@ package android.media { method public android.view.Surface getSurface(); method public void pause() throws java.lang.IllegalStateException; method public void prepare() throws java.io.IOException, java.lang.IllegalStateException; method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public void release(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public void reset(); Loading Loading @@ -25523,6 +25534,7 @@ package android.media { method public void setVideoSource(int) throws java.lang.IllegalStateException; method public void start() throws java.lang.IllegalStateException; method public void stop() throws java.lang.IllegalStateException; method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64 field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1 field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320 api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -2953,7 +2953,7 @@ package android.media { field public static final int PLAYER_TYPE_UNKNOWN = -1; // 0xffffffff } public class AudioRecord implements android.media.AudioRouting { public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException; } Loading media/java/android/media/AudioRecord.java +54 −1 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package android.media; import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityThread; Loading @@ -43,6 +45,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.Executor; /** * The AudioRecord class manages the audio resources for Java applications Loading @@ -58,7 +61,7 @@ import java.util.List; * been read yet. Data should be read from the audio hardware in chunks of sizes inferior to * the total recording buffer size. */ public class AudioRecord implements AudioRouting public class AudioRecord implements AudioRouting, AudioRecordingMonitor, AudioRecordingMonitorClient { //--------------------------------------------------------- // Constants Loading Loading @@ -1654,6 +1657,56 @@ public class AudioRecord implements AudioRouting return activeMicrophones; } //-------------------------------------------------------------------------- // Implementation of AudioRecordingMonitor interface //-------------------- AudioRecordingMonitorImpl mRecordingInfoImpl = new AudioRecordingMonitorImpl((AudioRecordingMonitorClient) this); /** * Register a callback to be notified of audio capture changes via a * {@link AudioManager.AudioRecordingCallback}. A callback is received when the capture path * configuration changes (pre-processing, format, sampling rate...) or capture is * silenced/unsilenced by the system. * @param executor {@link Executor} to handle the callbacks. * @param cb non-null callback to register */ public void registerAudioRecordingCallback(@NonNull @CallbackExecutor Executor executor, @NonNull AudioManager.AudioRecordingCallback cb) { mRecordingInfoImpl.registerAudioRecordingCallback(executor, cb); } /** * Unregister an audio recording callback previously registered with * {@link #registerAudioRecordingCallback(Executor, AudioManager.AudioRecordingCallback)}. * @param cb non-null callback to unregister */ public void unregisterAudioRecordingCallback(@NonNull AudioManager.AudioRecordingCallback cb) { mRecordingInfoImpl.unregisterAudioRecordingCallback(cb); } /** * Returns the current active audio recording for this audio recorder. * @return a valid {@link AudioRecordingConfiguration} if this recorder is active * or null otherwise. * @see AudioRecordingConfiguration */ public @Nullable AudioRecordingConfiguration getActiveRecordingConfiguration() { return mRecordingInfoImpl.getActiveRecordingConfiguration(); } //--------------------------------------------------------- // Implementation of AudioRecordingMonitorClient interface //-------------------- /** * @hide */ public int getPortId() { return native_getPortId(); } //--------------------------------------------------------- // Interface definitions //-------------------- Loading media/java/android/media/AudioRecordingMonitor.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; import java.util.concurrent.Executor; /** * AudioRecordingMonitor defines an interface implemented by {@link AudioRecord} and * {@link MediaRecorder} allowing applications to install a callback and be notified of changes * in the capture path while recoding is active. */ public interface AudioRecordingMonitor { /** * Register a callback to be notified of audio capture changes via a * {@link AudioManager.AudioRecordingCallback}. A callback is received when the capture path * configuration changes (pre-processing, format, sampling rate...) or capture is * silenced/unsilenced by the system. * @param executor {@link Executor} to handle the callbacks. * @param cb non-null callback to register */ void registerAudioRecordingCallback(@NonNull @CallbackExecutor Executor executor, @NonNull AudioManager.AudioRecordingCallback cb); /** * Unregister an audio recording callback previously registered with * {@link #registerAudioRecordingCallback(Executor, AudioManager.AudioRecordingCallback)}. * @param cb non-null callback to unregister */ void unregisterAudioRecordingCallback(@NonNull AudioManager.AudioRecordingCallback cb); /** * Returns the current active audio recording for this audio recorder. * @return a valid {@link AudioRecordingConfiguration} if this recorder is active * or null otherwise. * @see AudioRecordingConfiguration */ @Nullable AudioRecordingConfiguration getActiveRecordingConfiguration(); } media/java/android/media/AudioRecordingMonitorClient.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; /** * Interface implemented by classes using { @link AudioRecordingMonitor} interface. * @hide */ public interface AudioRecordingMonitorClient { /** * @return the unique port ID allocated by audio framework to this recorder */ int getPortId(); } Loading
api/current.txt +14 −2 Original line number Diff line number Diff line Loading @@ -23379,12 +23379,13 @@ package android.media { method public android.media.AudioPresentation.Builder setProgramId(int); } public class AudioRecord implements android.media.AudioRouting { public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); method protected void finalize(); method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException; method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); Loading @@ -23409,6 +23410,7 @@ package android.media { method public int read(float[], int, int, int); method public int read(java.nio.ByteBuffer, int); method public int read(java.nio.ByteBuffer, int, int); method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public void release(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public deprecated void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener); Loading @@ -23420,6 +23422,7 @@ package android.media { method public void startRecording() throws java.lang.IllegalStateException; method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException; method public void stop() throws java.lang.IllegalStateException; method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa Loading Loading @@ -23474,6 +23477,12 @@ package android.media { field public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR; } public abstract interface AudioRecordingMonitor { method public abstract android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public abstract void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public abstract void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); } public abstract interface AudioRouting { method public abstract void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public abstract android.media.AudioDeviceInfo getPreferredDevice(); Loading Loading @@ -25475,11 +25484,12 @@ package android.media { field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1 } public class MediaRecorder implements android.media.AudioRouting { public class MediaRecorder implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public MediaRecorder(); method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method protected void finalize(); method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException; method public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration(); method public static final int getAudioSourceMax(); method public int getMaxAmplitude() throws java.lang.IllegalStateException; method public android.os.PersistableBundle getMetrics(); Loading @@ -25488,6 +25498,7 @@ package android.media { method public android.view.Surface getSurface(); method public void pause() throws java.lang.IllegalStateException; method public void prepare() throws java.io.IOException, java.lang.IllegalStateException; method public void registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback); method public void release(); method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener); method public void reset(); Loading Loading @@ -25523,6 +25534,7 @@ package android.media { method public void setVideoSource(int) throws java.lang.IllegalStateException; method public void start() throws java.lang.IllegalStateException; method public void stop() throws java.lang.IllegalStateException; method public void unregisterAudioRecordingCallback(android.media.AudioManager.AudioRecordingCallback); field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64 field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1 field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -2953,7 +2953,7 @@ package android.media { field public static final int PLAYER_TYPE_UNKNOWN = -1; // 0xffffffff } public class AudioRecord implements android.media.AudioRouting { public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting { ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException; } Loading
media/java/android/media/AudioRecord.java +54 −1 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ package android.media; import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityThread; Loading @@ -43,6 +45,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.Executor; /** * The AudioRecord class manages the audio resources for Java applications Loading @@ -58,7 +61,7 @@ import java.util.List; * been read yet. Data should be read from the audio hardware in chunks of sizes inferior to * the total recording buffer size. */ public class AudioRecord implements AudioRouting public class AudioRecord implements AudioRouting, AudioRecordingMonitor, AudioRecordingMonitorClient { //--------------------------------------------------------- // Constants Loading Loading @@ -1654,6 +1657,56 @@ public class AudioRecord implements AudioRouting return activeMicrophones; } //-------------------------------------------------------------------------- // Implementation of AudioRecordingMonitor interface //-------------------- AudioRecordingMonitorImpl mRecordingInfoImpl = new AudioRecordingMonitorImpl((AudioRecordingMonitorClient) this); /** * Register a callback to be notified of audio capture changes via a * {@link AudioManager.AudioRecordingCallback}. A callback is received when the capture path * configuration changes (pre-processing, format, sampling rate...) or capture is * silenced/unsilenced by the system. * @param executor {@link Executor} to handle the callbacks. * @param cb non-null callback to register */ public void registerAudioRecordingCallback(@NonNull @CallbackExecutor Executor executor, @NonNull AudioManager.AudioRecordingCallback cb) { mRecordingInfoImpl.registerAudioRecordingCallback(executor, cb); } /** * Unregister an audio recording callback previously registered with * {@link #registerAudioRecordingCallback(Executor, AudioManager.AudioRecordingCallback)}. * @param cb non-null callback to unregister */ public void unregisterAudioRecordingCallback(@NonNull AudioManager.AudioRecordingCallback cb) { mRecordingInfoImpl.unregisterAudioRecordingCallback(cb); } /** * Returns the current active audio recording for this audio recorder. * @return a valid {@link AudioRecordingConfiguration} if this recorder is active * or null otherwise. * @see AudioRecordingConfiguration */ public @Nullable AudioRecordingConfiguration getActiveRecordingConfiguration() { return mRecordingInfoImpl.getActiveRecordingConfiguration(); } //--------------------------------------------------------- // Implementation of AudioRecordingMonitorClient interface //-------------------- /** * @hide */ public int getPortId() { return native_getPortId(); } //--------------------------------------------------------- // Interface definitions //-------------------- Loading
media/java/android/media/AudioRecordingMonitor.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; import java.util.concurrent.Executor; /** * AudioRecordingMonitor defines an interface implemented by {@link AudioRecord} and * {@link MediaRecorder} allowing applications to install a callback and be notified of changes * in the capture path while recoding is active. */ public interface AudioRecordingMonitor { /** * Register a callback to be notified of audio capture changes via a * {@link AudioManager.AudioRecordingCallback}. A callback is received when the capture path * configuration changes (pre-processing, format, sampling rate...) or capture is * silenced/unsilenced by the system. * @param executor {@link Executor} to handle the callbacks. * @param cb non-null callback to register */ void registerAudioRecordingCallback(@NonNull @CallbackExecutor Executor executor, @NonNull AudioManager.AudioRecordingCallback cb); /** * Unregister an audio recording callback previously registered with * {@link #registerAudioRecordingCallback(Executor, AudioManager.AudioRecordingCallback)}. * @param cb non-null callback to unregister */ void unregisterAudioRecordingCallback(@NonNull AudioManager.AudioRecordingCallback cb); /** * Returns the current active audio recording for this audio recorder. * @return a valid {@link AudioRecordingConfiguration} if this recorder is active * or null otherwise. * @see AudioRecordingConfiguration */ @Nullable AudioRecordingConfiguration getActiveRecordingConfiguration(); }
media/java/android/media/AudioRecordingMonitorClient.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; /** * Interface implemented by classes using { @link AudioRecordingMonitor} interface. * @hide */ public interface AudioRecordingMonitorClient { /** * @return the unique port ID allocated by audio framework to this recorder */ int getPortId(); }