diff options
-rw-r--r-- | core/jni/android_media_AudioSystem.cpp | 10 | ||||
-rw-r--r-- | media/java/android/media/AudioManager.java | 10 | ||||
-rw-r--r-- | media/java/android/media/AudioSystem.java | 8 |
3 files changed, 28 insertions, 0 deletions
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 631cdaea806f..0827f7ca40c7 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -76,6 +76,15 @@ android_media_AudioSystem_isStreamActive(JNIEnv *env, jobject thiz, jint stream, } static jboolean +android_media_AudioSystem_isStreamActiveRemotely(JNIEnv *env, jobject thiz, jint stream, + jint inPastMs) +{ + bool state = false; + AudioSystem::isStreamActiveRemotely((audio_stream_type_t) stream, &state, inPastMs); + return state; +} + +static jboolean android_media_AudioSystem_isSourceActive(JNIEnv *env, jobject thiz, jint source) { bool state = false; @@ -270,6 +279,7 @@ static JNINativeMethod gMethods[] = { {"muteMicrophone", "(Z)I", (void *)android_media_AudioSystem_muteMicrophone}, {"isMicrophoneMuted", "()Z", (void *)android_media_AudioSystem_isMicrophoneMuted}, {"isStreamActive", "(II)Z", (void *)android_media_AudioSystem_isStreamActive}, + {"isStreamActiveRemotely","(II)Z", (void *)android_media_AudioSystem_isStreamActiveRemotely}, {"isSourceActive", "(I)Z", (void *)android_media_AudioSystem_isSourceActive}, {"setDeviceConnectionState", "(IILjava/lang/String;)I", (void *)android_media_AudioSystem_setDeviceConnectionState}, {"getDeviceConnectionState", "(ILjava/lang/String;)I", (void *)android_media_AudioSystem_getDeviceConnectionState}, diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 035b2824b465..2e4fa4b2ed2a 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -1526,6 +1526,16 @@ public class AudioManager { /** * @hide + * Checks whether any music or media is actively playing on a remote device (e.g. wireless + * display). Note that BT audio sinks are not considered remote devices. + * @return true if {@link AudioManager#STREAM_MUSIC} is active on a remote device + */ + public boolean isMusicActiveRemotely() { + return AudioSystem.isStreamActiveRemotely(STREAM_MUSIC, 0); + } + + /** + * @hide * Checks whether speech recognition is active * @return true if a recording with source {@link MediaRecorder.AudioSource#VOICE_RECOGNITION} * is underway. diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index dde2979613a8..4a33743ae0dd 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -111,6 +111,14 @@ public class AudioSystem public static native boolean isStreamActive(int stream, int inPastMs); /* + * Checks whether the specified stream type is active on a remotely connected device. The notion + * of what constitutes a remote device is enforced by the audio policy manager of the platform. + * + * return true if any track playing on this stream is active on a remote device. + */ + public static native boolean isStreamActiveRemotely(int stream, int inPastMs); + + /* * Checks whether the specified audio source is active. * * return true if any recorder using this source is currently recording |