Loading media/java/android/media/MediaRecorder.java +24 −0 Original line number Diff line number Diff line Loading @@ -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)}. Loading services/core/java/com/android/server/audio/RecordingActivityMonitor.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading
media/java/android/media/MediaRecorder.java +24 −0 Original line number Diff line number Diff line Loading @@ -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)}. Loading
services/core/java/com/android/server/audio/RecordingActivityMonitor.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading