diff options
| -rw-r--r-- | media/java/android/media/MediaRecorder.java | 24 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/RecordingActivityMonitor.java | 4 |
2 files changed, 28 insertions, 0 deletions
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index f09f6542d2e7..60444e0c20ca 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -277,6 +277,30 @@ public class MediaRecorder public static final int HOTWORD = 1999; } + // TODO make AudioSource static (API change) and move this method inside the AudioSource class + /** + * @hide + * @param source An audio source to test + * @return true if the source is only visible to system components + */ + public static boolean isSystemOnlyAudioSource(int source) { + switch(source) { + case AudioSource.DEFAULT: + case AudioSource.MIC: + case AudioSource.VOICE_UPLINK: + case AudioSource.VOICE_DOWNLINK: + case AudioSource.VOICE_CALL: + case AudioSource.CAMCORDER: + case AudioSource.VOICE_RECOGNITION: + case AudioSource.VOICE_COMMUNICATION: + //case REMOTE_SUBMIX: considered "system" as it requires system permissions + case AudioSource.UNPROCESSED: + return false; + default: + return true; + } + } + /** * Defines the video source. These constants are used with * {@link MediaRecorder#setVideoSource(int)}. diff --git a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java index 5806f3fb5b70..a6325a4814b4 100644 --- a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java +++ b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java @@ -20,6 +20,7 @@ import android.media.AudioManager; import android.media.AudioRecordConfiguration; import android.media.AudioSystem; import android.media.IRecordingConfigDispatcher; +import android.media.MediaRecorder; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; @@ -48,6 +49,9 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin * Implementation of android.media.AudioSystem.AudioRecordingCallback */ public void onRecordingConfigurationChanged(int event, int session, int source) { + if (MediaRecorder.isSystemOnlyAudioSource(source)) { + return; + } if (updateSnapshot(event, session, source)) { final Iterator<RecMonitorClient> clientIterator = mClients.iterator(); synchronized(mClients) { |