From 0c88f4965e3e9e2d262be9edb42187d47861f622 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Fri, 12 Apr 2019 15:43:56 -0700 Subject: [PATCH] AudioManager: test API for dynamic audio policy Add test api to check if a dynamic audio policy is already registered Bug: 129708340 Test: atest AudioPolicyTest Change-Id: Id9709e16d775f9552eccb52f60584588c320d9f0 --- api/test-current.txt | 1 + media/java/android/media/AudioManager.java | 14 ++++++++++++++ media/java/android/media/IAudioService.aidl | 2 ++ .../com/android/server/audio/AudioService.java | 7 +++++++ 4 files changed, 24 insertions(+) diff --git a/api/test-current.txt b/api/test-current.txt index 488a4f50a7bf0..323567410cc8d 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -1100,6 +1100,7 @@ package android.media { public class AudioManager { method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy); + method public boolean hasRegisteredDynamicPolicy(); method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy); method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy); method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 6287c5225800b..4506139b012db 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -3407,6 +3407,20 @@ public class AudioManager { } } + /** + * @hide + * @return true if an AudioPolicy was previously registered + */ + @TestApi + public boolean hasRegisteredDynamicPolicy() { + final IAudioService service = getService(); + try { + return service.hasRegisteredDynamicPolicy(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + //==================================================================== // Notification of playback activity & playback configuration /** diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index eddbee46252e4..85de00a2a9894 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -211,6 +211,8 @@ interface IAudioService { void setVolumePolicy(in VolumePolicy policy); + boolean hasRegisteredDynamicPolicy(); + void registerRecordingCallback(in IRecordingConfigDispatcher rcdb); oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 77472ed288c3a..6357830621f1b 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -6660,6 +6660,13 @@ public class AudioService extends IAudioService.Stub return AudioManager.SUCCESS; } + /** see AudioManager.hasRegisteredDynamicPolicy */ + public boolean hasRegisteredDynamicPolicy() { + synchronized (mAudioPolicies) { + return !mAudioPolicies.isEmpty(); + } + } + private final Object mExtVolumeControllerLock = new Object(); private IAudioPolicyCallback mExtVolumeController; private void setExtVolumeController(IAudioPolicyCallback apc) {