Audio record notification: only report SDK recording sources

Bug 22876530

Change-Id: I7575170ee2d7414c8bf9a04a9adc936b66c33e15
This commit is contained in:
Jean-Michel Trivi
2016-02-17 12:30:52 -08:00
parent 519e0591fe
commit dd2772a339
2 changed files with 28 additions and 0 deletions

View File

@@ -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)}.

View File

@@ -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) {