summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/test-current.txt1
-rw-r--r--media/java/android/media/AudioManager.java14
-rw-r--r--media/java/android/media/IAudioService.aidl2
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java7
4 files changed, 24 insertions, 0 deletions
diff --git a/api/test-current.txt b/api/test-current.txt
index 488a4f50a7bf..323567410cc8 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 6287c5225800..4506139b012d 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 eddbee46252e..85de00a2a989 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 77472ed288c3..6357830621f1 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) {