From a7cc59c3187711d390c5a483d26c463a1bcbd331 Mon Sep 17 00:00:00 2001 From: rago Date: Wed, 2 Dec 2015 11:31:15 -0800 Subject: [PATCH] Adding UNPROCESSED to the available audio_sources and SUPPORT_AUDIO_SOURCE_UNPROCESSED property bug: 25564291 Change-Id: I05d48fcc1859501902aa38604a5b86fa5d468468 --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ api/test-current.txt | 2 ++ core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + media/java/android/media/AudioAttributes.java | 6 ++++-- media/java/android/media/AudioManager.java | 14 ++++++++++++-- media/java/android/media/MediaRecorder.java | 6 +++++- 8 files changed, 31 insertions(+), 5 deletions(-) diff --git a/api/current.txt b/api/current.txt index 76e44cf96617c..06808b0292394 100644 --- a/api/current.txt +++ b/api/current.txt @@ -19300,6 +19300,7 @@ package android.media { field public static final deprecated int NUM_STREAMS = 5; // 0x5 field public static final java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER"; field public static final java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE"; + field public static final java.lang.String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED"; field public static final java.lang.String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND"; field public static final java.lang.String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND"; field public static final java.lang.String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; @@ -20647,6 +20648,7 @@ package android.media { field public static final int DEFAULT = 0; // 0x0 field public static final int MIC = 1; // 0x1 field public static final int REMOTE_SUBMIX = 8; // 0x8 + field public static final int UNPROCESSED = 9; // 0x9 field public static final int VOICE_CALL = 4; // 0x4 field public static final int VOICE_COMMUNICATION = 7; // 0x7 field public static final int VOICE_DOWNLINK = 3; // 0x3 diff --git a/api/system-current.txt b/api/system-current.txt index 27a16bfbf35e1..4db2123091dca 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -20601,6 +20601,7 @@ package android.media { field public static final deprecated int NUM_STREAMS = 5; // 0x5 field public static final java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER"; field public static final java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE"; + field public static final java.lang.String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED"; field public static final java.lang.String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND"; field public static final java.lang.String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND"; field public static final java.lang.String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; @@ -21953,6 +21954,7 @@ package android.media { field public static final int MIC = 1; // 0x1 field public static final int RADIO_TUNER = 1998; // 0x7ce field public static final int REMOTE_SUBMIX = 8; // 0x8 + field public static final int UNPROCESSED = 9; // 0x9 field public static final int VOICE_CALL = 4; // 0x4 field public static final int VOICE_COMMUNICATION = 7; // 0x7 field public static final int VOICE_DOWNLINK = 3; // 0x3 diff --git a/api/test-current.txt b/api/test-current.txt index cee8fad8e8d6a..4546c5b58995b 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -19300,6 +19300,7 @@ package android.media { field public static final deprecated int NUM_STREAMS = 5; // 0x5 field public static final java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER"; field public static final java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE"; + field public static final java.lang.String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED"; field public static final java.lang.String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND"; field public static final java.lang.String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND"; field public static final java.lang.String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED"; @@ -20647,6 +20648,7 @@ package android.media { field public static final int DEFAULT = 0; // 0x0 field public static final int MIC = 1; // 0x1 field public static final int REMOTE_SUBMIX = 8; // 0x8 + field public static final int UNPROCESSED = 9; // 0x9 field public static final int VOICE_CALL = 4; // 0x4 field public static final int VOICE_COMMUNICATION = 7; // 0x7 field public static final int VOICE_DOWNLINK = 3; // 0x3 diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index c03d4711120e3..74a5f4e92da94 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2354,6 +2354,9 @@ (range of 18 - 21 kHz). --> true + + false + true diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 3c1d944a52728..39aad1772334c 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -302,6 +302,7 @@ + diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index e92f29484dc52..c10d6755ebd8c 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -520,8 +520,9 @@ public final class AudioAttributes implements Parcelable { * instance with {@link AudioRecord#AudioRecord(AudioAttributes, AudioFormat, int)}. * @param preset one of {@link MediaRecorder.AudioSource#DEFAULT}, * {@link MediaRecorder.AudioSource#MIC}, {@link MediaRecorder.AudioSource#CAMCORDER}, - * {@link MediaRecorder.AudioSource#VOICE_RECOGNITION} or - * {@link MediaRecorder.AudioSource#VOICE_COMMUNICATION}. + * {@link MediaRecorder.AudioSource#VOICE_RECOGNITION}, + * {@link MediaRecorder.AudioSource#VOICE_COMMUNICATION} or + * {@link MediaRecorder.AudioSource#UNPROCESSED} * @return the same Builder instance. */ @SystemApi @@ -532,6 +533,7 @@ public final class AudioAttributes implements Parcelable { case MediaRecorder.AudioSource.CAMCORDER: case MediaRecorder.AudioSource.VOICE_RECOGNITION: case MediaRecorder.AudioSource.VOICE_COMMUNICATION: + case MediaRecorder.AudioSource.UNPROCESSED: mSource = preset; break; default: diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index c658675d8a7cb..f932b9e8a1f9e 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -3095,13 +3095,20 @@ public class AudioManager { public static final String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND"; + /** + * Used as a key for {@link #getProperty} to determine if the unprocessed audio source is + * available and supported with the expected frequency range and level response. + */ + public static final String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = + "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED"; /** * Returns the value of the property with the specified key. * @param key One of the strings corresponding to a property key: either * {@link #PROPERTY_OUTPUT_SAMPLE_RATE}, * {@link #PROPERTY_OUTPUT_FRAMES_PER_BUFFER}, - * {@link #PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND}, or - * {@link #PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND}. + * {@link #PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND}, + * {@link #PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND}, or + * {@link #PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED}. * @return A string representing the associated value for that property key, * or null if there is no value for that key. */ @@ -3120,6 +3127,9 @@ public class AudioManager { } else if (PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND.equals(key)) { return String.valueOf(getContext().getResources().getBoolean( com.android.internal.R.bool.config_supportSpeakerNearUltrasound)); + } else if (PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED.equals(key)) { + return String.valueOf(getContext().getResources().getBoolean( + com.android.internal.R.bool.config_supportAudioSourceUnprocessed)); } else { // null or unknown key return null; diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 8ac86b01dcb8f..504c6d0d20033 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -251,6 +251,10 @@ public class MediaRecorder */ public static final int REMOTE_SUBMIX = 8; + /** Microphone audio source tuned for unprocessed (raw) sound if available, behaves like + * {@link #DEFAULT} otherwise. */ + public static final int UNPROCESSED = 9; + /** * Audio source for capturing broadcast radio tuner output. * @hide @@ -405,7 +409,7 @@ public class MediaRecorder * @see android.media.MediaRecorder.AudioSource */ public static final int getAudioSourceMax() { - return AudioSource.REMOTE_SUBMIX; + return AudioSource.UNPROCESSED; } /**