summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/media/MediaServerUtils.java19
-rw-r--r--services/core/java/com/android/server/media/MediaSessionRecord.java3
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java6
3 files changed, 22 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/media/MediaServerUtils.java b/services/core/java/com/android/server/media/MediaServerUtils.java
index 5fa2b1ceaae9..a4f11b2470f1 100644
--- a/services/core/java/com/android/server/media/MediaServerUtils.java
+++ b/services/core/java/com/android/server/media/MediaServerUtils.java
@@ -18,6 +18,9 @@ package com.android.server.media;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
+import android.media.AudioPlaybackConfiguration;
import android.os.Binder;
import java.io.PrintWriter;
@@ -29,7 +32,7 @@ class MediaServerUtils {
/**
* Verify that caller holds {@link android.Manifest.permission#DUMP}.
*/
- public static boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
+ static boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
if (context.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
!= PackageManager.PERMISSION_GRANTED) {
pw.println("Permission Denial: can't dump " + tag + " from from pid="
@@ -40,4 +43,18 @@ class MediaServerUtils {
return true;
}
}
+
+ /**
+ * Whether the given stream is currently active or not.
+ */
+ static boolean isStreamActive(AudioManager audioManager, int stream) {
+ for (AudioPlaybackConfiguration configuration
+ : audioManager.getActivePlaybackConfigurations()) {
+ AudioAttributes attributes = configuration.getAudioAttributes();
+ if (attributes != null && attributes.getVolumeControlStream() == stream) {
+ return configuration.isActive();
+ }
+ }
+ return false;
+ }
}
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index f9973529a120..ea6e7d7d0bf6 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -23,7 +23,6 @@ import android.content.Intent;
import android.content.pm.ParceledListSlice;
import android.media.AudioAttributes;
import android.media.AudioManager;
-import android.media.AudioSystem;
import android.media.MediaMetadata;
import android.media.Rating;
import android.media.VolumeProvider;
@@ -513,7 +512,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
public void run() {
try {
if (useSuggested) {
- if (AudioSystem.isStreamActive(stream, 0)) {
+ if (MediaServerUtils.isStreamActive(mAudioManager, stream)) {
mAudioManager.adjustSuggestedStreamVolumeForUid(stream,
direction, flags, opPackageName, uid, pid,
mContext.getApplicationInfo().targetSdkVersion);
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index c23bfc442bd9..9296496d5b3a 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -43,7 +43,6 @@ import android.content.pm.ParceledListSlice;
import android.content.pm.UserInfo;
import android.media.AudioManager;
import android.media.AudioPlaybackConfiguration;
-import android.media.AudioSystem;
import android.media.IRemoteVolumeControllerCallback;
import android.media.Session2Token;
import android.media.session.IActiveSessionsListener;
@@ -2019,7 +2018,7 @@ public class MediaSessionService extends SystemService implements Monitor {
boolean preferSuggestedStream = false;
if (isValidLocalStreamType(suggestedStream)
- && AudioSystem.isStreamActive(suggestedStream, 0)) {
+ && MediaServerUtils.isStreamActive(mAudioManager, suggestedStream)) {
preferSuggestedStream = true;
}
if (session == null || preferSuggestedStream) {
@@ -2028,7 +2027,8 @@ public class MediaSessionService extends SystemService implements Monitor {
+ ". flags=" + flags + ", preferSuggestedStream="
+ preferSuggestedStream + ", session=" + session);
}
- if (musicOnly && !AudioSystem.isStreamActive(AudioManager.STREAM_MUSIC, 0)) {
+ if (musicOnly && !MediaServerUtils.isStreamActive(mAudioManager,
+ AudioManager.STREAM_MUSIC)) {
if (DEBUG_KEY_EVENT) {
Log.d(TAG, "Nothing is playing on the music stream. Skipping volume event,"
+ " flags=" + flags);