diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 457888361f737..c67d90a5ea0fb 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -2881,7 +2881,12 @@ public class AudioManager { * @return true if any music tracks are active. */ public boolean isMusicActive() { - return AudioSystem.isStreamActive(STREAM_MUSIC, 0); + final IAudioService service = getService(); + try { + return service.isMusicActive(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 5c012bef9a681..2ac5b5088d988 100755 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -334,4 +334,6 @@ interface IAudioService { oneway void setStreamVolumeForUid(int streamType, int direction, int flags, in String packageName, int uid, int pid, in UserHandle userHandle, int targetSdkVersion); + + boolean isMusicActive(); } diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index af007312169b7..6bc927a5176fc 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -2108,6 +2108,12 @@ public class AudioService extends IAudioService.Stub return getDevicesForAttributesInt(attributes); } + /** @see AudioManager#isMusicActive() */ + public boolean isMusicActive() { + // no permission required + return AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC, 0); + } + protected @NonNull ArrayList getDevicesForAttributesInt( @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes);