Loading core/jni/android_media_AudioSystem.cpp +16 −5 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <nativehelper/JNIHelp.h> #include "core_jni_helpers.h" #include <audiomanager/AudioManager.h> #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <media/MicrophoneInfo.h> Loading Loading @@ -353,7 +354,15 @@ android_media_AudioSystem_newAudioSessionId(JNIEnv *env, jobject thiz) static jint android_media_AudioSystem_newAudioPlayerId(JNIEnv *env, jobject thiz) { return AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_PLAYER); int id = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_CLIENT); return id != AUDIO_UNIQUE_ID_ALLOCATE ? id : PLAYER_PIID_INVALID; } static jint android_media_AudioSystem_newAudioRecorderId(JNIEnv *env, jobject thiz) { int id = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_CLIENT); return id != AUDIO_UNIQUE_ID_ALLOCATE ? id : RECORD_RIID_INVALID; } static jint Loading Loading @@ -470,9 +479,10 @@ android_media_AudioSystem_recording_callback(int event, env->CallStaticVoidMethod(clazz, gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative, event, (jint) clientInfo->uid, clientInfo->session, clientInfo->source, clientInfo->port_id, clientInfo->silenced, recParamArray, jClientEffects, jEffects, source); event, (jint) clientInfo->riid, (jint) clientInfo->uid, clientInfo->session, clientInfo->source, clientInfo->port_id, clientInfo->silenced, recParamArray, jClientEffects, jEffects, source); env->DeleteLocalRef(clazz); env->DeleteLocalRef(recParamArray); env->DeleteLocalRef(jClientEffects); Loading Loading @@ -2246,6 +2256,7 @@ static const JNINativeMethod gMethods[] = { {"isSourceActive", "(I)Z", (void *)android_media_AudioSystem_isSourceActive}, {"newAudioSessionId", "()I", (void *)android_media_AudioSystem_newAudioSessionId}, {"newAudioPlayerId", "()I", (void *)android_media_AudioSystem_newAudioPlayerId}, {"newAudioRecorderId", "()I", (void *)android_media_AudioSystem_newAudioRecorderId}, {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_setDeviceConnectionState}, {"getDeviceConnectionState", "(ILjava/lang/String;)I", (void *)android_media_AudioSystem_getDeviceConnectionState}, {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_handleDeviceConfigChange}, Loading Loading @@ -2440,7 +2451,7 @@ int register_android_media_AudioSystem(JNIEnv *env) "dynamicPolicyCallbackFromNative", "(ILjava/lang/String;I)V"); gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative = GetStaticMethodIDOrDie(env, env->FindClass(kClassPathName), "recordingCallbackFromNative", "(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V"); "recordingCallbackFromNative", "(IIIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V"); jclass audioMixClass = FindClassOrDie(env, "android/media/audiopolicy/AudioMix"); gAudioMixClass = MakeGlobalRefOrDie(env, audioMixClass); Loading media/java/android/media/AudioManager.java +17 −2 Original line number Diff line number Diff line Loading @@ -3766,9 +3766,24 @@ public class AudioManager { * with frameworks/av/include/media/AudioPolicy.h */ /** @hide */ public final static int RECORD_CONFIG_EVENT_START = 1; public static final int RECORD_CONFIG_EVENT_NONE = -1; /** @hide */ public final static int RECORD_CONFIG_EVENT_STOP = 0; public static final int RECORD_CONFIG_EVENT_START = 0; /** @hide */ public static final int RECORD_CONFIG_EVENT_STOP = 1; /** @hide */ public static final int RECORD_CONFIG_EVENT_UPDATE = 2; /** @hide */ public static final int RECORD_CONFIG_EVENT_DEATH = 3; /** * keep in sync with frameworks/native/include/audiomanager/AudioManager.h */ /** @hide */ public static final int RECORD_RIID_INVALID = -1; /** @hide */ public static final int RECORDER_STATE_STARTED = 0; /** @hide */ public static final int RECORDER_STATE_STOPPED = 1; /** * All operations on this list are sync'd on mRecordCallbackLock. Loading media/java/android/media/AudioRecordingConfiguration.java +3 −2 Original line number Diff line number Diff line Loading @@ -157,7 +157,7 @@ public final class AudioRecordingConfiguration implements Parcelable { return new AudioRecordingConfiguration( /*anonymized uid*/ -1, in.mClientSessionId, in.mClientSource, in.mClientFormat, in.mDeviceFormat, in.mPatchHandle, "" /*empty package name*/, in.mClientPortId, in.mClientSilenced, in.mDeviceSource, in.mClientEffects, /*anonymized portId*/ -1, in.mClientSilenced, in.mDeviceSource, in.mClientEffects, in.mDeviceEffects); } Loading Loading @@ -270,11 +270,12 @@ public final class AudioRecordingConfiguration implements Parcelable { } /** * @hide * Returns the system unique ID assigned for the AudioRecord object corresponding to this * AudioRecordingConfiguration client. * @return the port ID. */ int getClientPortId() { public int getClientPortId() { return mClientPortId; } Loading media/java/android/media/AudioSystem.java +19 −6 Original line number Diff line number Diff line Loading @@ -220,6 +220,11 @@ public class AudioSystem */ public static native int newAudioPlayerId(); /** * Returns a new unused audio recorder ID */ public static native int newAudioRecorderId(); /* * Sets a group generic audio configuration parameters. The use of these parameters Loading Loading @@ -347,6 +352,7 @@ public class AudioSystem /** * Callback for recording activity notifications events * @param event * @param riid recording identifier * @param uid uid of the client app performing the recording * @param session * @param source Loading @@ -361,7 +367,7 @@ public class AudioSystem * 6: patch handle * @param packName package name of the client app performing the recording. NOT SUPPORTED */ void onRecordingConfigurationChanged(int event, int uid, int session, int source, void onRecordingConfigurationChanged(int event, int riid, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, AudioEffect.Descriptor[] clienteffects, AudioEffect.Descriptor[] effects, int activeSource, String packName); Loading @@ -379,16 +385,23 @@ public class AudioSystem /** * Callback from native for recording configuration updates. * @param event * @param riid * @param uid * @param session * @param source * @param portId * @param silenced * @param recordingFormat see * {@link AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int, int, \ boolean, int[], AudioEffect.Descriptor[], AudioEffect.Descriptor[], int, String)} int, boolean, int[], AudioEffect.Descriptor[], AudioEffect.Descriptor[], int, String)} * for the description of the record format. * @param cleintEffects * @param effects * @param activeSource */ @UnsupportedAppUsage private static void recordingCallbackFromNative(int event, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, private static void recordingCallbackFromNative(int event, int riid, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, AudioEffect.Descriptor[] clientEffects, AudioEffect.Descriptor[] effects, int activeSource) { AudioRecordingCallback cb = null; Loading @@ -401,7 +414,7 @@ public class AudioSystem if (cb != null) { // TODO receive package name from native cb.onRecordingConfigurationChanged(event, uid, session, source, portId, silenced, cb.onRecordingConfigurationChanged(event, riid, uid, session, source, portId, silenced, recordingFormat, clientEffects, effects, activeSource, ""); } } Loading media/java/android/media/IAudioService.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ interface IAudioService { oneway void releasePlayer(in int piid); int trackRecorder(in IBinder recorder); oneway void recorderEvent(in int riid, in int event); // Java-only methods below. oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, Loading Loading
core/jni/android_media_AudioSystem.cpp +16 −5 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <nativehelper/JNIHelp.h> #include "core_jni_helpers.h" #include <audiomanager/AudioManager.h> #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <media/MicrophoneInfo.h> Loading Loading @@ -353,7 +354,15 @@ android_media_AudioSystem_newAudioSessionId(JNIEnv *env, jobject thiz) static jint android_media_AudioSystem_newAudioPlayerId(JNIEnv *env, jobject thiz) { return AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_PLAYER); int id = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_CLIENT); return id != AUDIO_UNIQUE_ID_ALLOCATE ? id : PLAYER_PIID_INVALID; } static jint android_media_AudioSystem_newAudioRecorderId(JNIEnv *env, jobject thiz) { int id = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_CLIENT); return id != AUDIO_UNIQUE_ID_ALLOCATE ? id : RECORD_RIID_INVALID; } static jint Loading Loading @@ -470,9 +479,10 @@ android_media_AudioSystem_recording_callback(int event, env->CallStaticVoidMethod(clazz, gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative, event, (jint) clientInfo->uid, clientInfo->session, clientInfo->source, clientInfo->port_id, clientInfo->silenced, recParamArray, jClientEffects, jEffects, source); event, (jint) clientInfo->riid, (jint) clientInfo->uid, clientInfo->session, clientInfo->source, clientInfo->port_id, clientInfo->silenced, recParamArray, jClientEffects, jEffects, source); env->DeleteLocalRef(clazz); env->DeleteLocalRef(recParamArray); env->DeleteLocalRef(jClientEffects); Loading Loading @@ -2246,6 +2256,7 @@ static const JNINativeMethod gMethods[] = { {"isSourceActive", "(I)Z", (void *)android_media_AudioSystem_isSourceActive}, {"newAudioSessionId", "()I", (void *)android_media_AudioSystem_newAudioSessionId}, {"newAudioPlayerId", "()I", (void *)android_media_AudioSystem_newAudioPlayerId}, {"newAudioRecorderId", "()I", (void *)android_media_AudioSystem_newAudioRecorderId}, {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_setDeviceConnectionState}, {"getDeviceConnectionState", "(ILjava/lang/String;)I", (void *)android_media_AudioSystem_getDeviceConnectionState}, {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_handleDeviceConfigChange}, Loading Loading @@ -2440,7 +2451,7 @@ int register_android_media_AudioSystem(JNIEnv *env) "dynamicPolicyCallbackFromNative", "(ILjava/lang/String;I)V"); gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative = GetStaticMethodIDOrDie(env, env->FindClass(kClassPathName), "recordingCallbackFromNative", "(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V"); "recordingCallbackFromNative", "(IIIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V"); jclass audioMixClass = FindClassOrDie(env, "android/media/audiopolicy/AudioMix"); gAudioMixClass = MakeGlobalRefOrDie(env, audioMixClass); Loading
media/java/android/media/AudioManager.java +17 −2 Original line number Diff line number Diff line Loading @@ -3766,9 +3766,24 @@ public class AudioManager { * with frameworks/av/include/media/AudioPolicy.h */ /** @hide */ public final static int RECORD_CONFIG_EVENT_START = 1; public static final int RECORD_CONFIG_EVENT_NONE = -1; /** @hide */ public final static int RECORD_CONFIG_EVENT_STOP = 0; public static final int RECORD_CONFIG_EVENT_START = 0; /** @hide */ public static final int RECORD_CONFIG_EVENT_STOP = 1; /** @hide */ public static final int RECORD_CONFIG_EVENT_UPDATE = 2; /** @hide */ public static final int RECORD_CONFIG_EVENT_DEATH = 3; /** * keep in sync with frameworks/native/include/audiomanager/AudioManager.h */ /** @hide */ public static final int RECORD_RIID_INVALID = -1; /** @hide */ public static final int RECORDER_STATE_STARTED = 0; /** @hide */ public static final int RECORDER_STATE_STOPPED = 1; /** * All operations on this list are sync'd on mRecordCallbackLock. Loading
media/java/android/media/AudioRecordingConfiguration.java +3 −2 Original line number Diff line number Diff line Loading @@ -157,7 +157,7 @@ public final class AudioRecordingConfiguration implements Parcelable { return new AudioRecordingConfiguration( /*anonymized uid*/ -1, in.mClientSessionId, in.mClientSource, in.mClientFormat, in.mDeviceFormat, in.mPatchHandle, "" /*empty package name*/, in.mClientPortId, in.mClientSilenced, in.mDeviceSource, in.mClientEffects, /*anonymized portId*/ -1, in.mClientSilenced, in.mDeviceSource, in.mClientEffects, in.mDeviceEffects); } Loading Loading @@ -270,11 +270,12 @@ public final class AudioRecordingConfiguration implements Parcelable { } /** * @hide * Returns the system unique ID assigned for the AudioRecord object corresponding to this * AudioRecordingConfiguration client. * @return the port ID. */ int getClientPortId() { public int getClientPortId() { return mClientPortId; } Loading
media/java/android/media/AudioSystem.java +19 −6 Original line number Diff line number Diff line Loading @@ -220,6 +220,11 @@ public class AudioSystem */ public static native int newAudioPlayerId(); /** * Returns a new unused audio recorder ID */ public static native int newAudioRecorderId(); /* * Sets a group generic audio configuration parameters. The use of these parameters Loading Loading @@ -347,6 +352,7 @@ public class AudioSystem /** * Callback for recording activity notifications events * @param event * @param riid recording identifier * @param uid uid of the client app performing the recording * @param session * @param source Loading @@ -361,7 +367,7 @@ public class AudioSystem * 6: patch handle * @param packName package name of the client app performing the recording. NOT SUPPORTED */ void onRecordingConfigurationChanged(int event, int uid, int session, int source, void onRecordingConfigurationChanged(int event, int riid, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, AudioEffect.Descriptor[] clienteffects, AudioEffect.Descriptor[] effects, int activeSource, String packName); Loading @@ -379,16 +385,23 @@ public class AudioSystem /** * Callback from native for recording configuration updates. * @param event * @param riid * @param uid * @param session * @param source * @param portId * @param silenced * @param recordingFormat see * {@link AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int, int, \ boolean, int[], AudioEffect.Descriptor[], AudioEffect.Descriptor[], int, String)} int, boolean, int[], AudioEffect.Descriptor[], AudioEffect.Descriptor[], int, String)} * for the description of the record format. * @param cleintEffects * @param effects * @param activeSource */ @UnsupportedAppUsage private static void recordingCallbackFromNative(int event, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, private static void recordingCallbackFromNative(int event, int riid, int uid, int session, int source, int portId, boolean silenced, int[] recordingFormat, AudioEffect.Descriptor[] clientEffects, AudioEffect.Descriptor[] effects, int activeSource) { AudioRecordingCallback cb = null; Loading @@ -401,7 +414,7 @@ public class AudioSystem if (cb != null) { // TODO receive package name from native cb.onRecordingConfigurationChanged(event, uid, session, source, portId, silenced, cb.onRecordingConfigurationChanged(event, riid, uid, session, source, portId, silenced, recordingFormat, clientEffects, effects, activeSource, ""); } } Loading
media/java/android/media/IAudioService.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ interface IAudioService { oneway void releasePlayer(in int piid); int trackRecorder(in IBinder recorder); oneway void recorderEvent(in int riid, in int event); // Java-only methods below. oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, Loading