diff options
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionRecord.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionStack.java | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index a275f49582c6..89e10503fcf3 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -320,6 +320,15 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { } /** + * Get the playback state. + * + * @return The current playback state. + */ + public PlaybackState getPlaybackState() { + return mPlaybackState; + } + + /** * Check if the session is currently performing playback. * * @return True if the session is performing playback, false otherwise. diff --git a/services/core/java/com/android/server/media/MediaSessionStack.java b/services/core/java/com/android/server/media/MediaSessionStack.java index f03f630d0e57..d9fe72e0c8bb 100644 --- a/services/core/java/com/android/server/media/MediaSessionStack.java +++ b/services/core/java/com/android/server/media/MediaSessionStack.java @@ -153,7 +153,7 @@ class MediaSessionStack { mCachedVolumeDefault = null; } - // In most cases, playback state isn't needed for finding media buttion session, + // In most cases, playback state isn't needed for finding media button session, // but we only use it as a hint if an app has multiple local media sessions. // In that case, we pick the media session whose PlaybackState matches // the audio playback configuration. @@ -204,8 +204,9 @@ class MediaSessionStack { /** * Find the media button session with the given {@param uid}. - * If the app has multiple media sessions, the media session matches the audio playback state - * becomes the media button session. + * If the app has multiple media sessions, the media session whose playback state is not null + * and matches the audio playback state becomes the media button session. Otherwise the top + * priority session becomes the media button session. * * @return The media button session. Returns {@code null} if the app doesn't have a media * session. @@ -214,7 +215,7 @@ class MediaSessionStack { MediaSessionRecord mediaButtonSession = null; for (MediaSessionRecord session : mSessions) { if (uid == session.getUid()) { - if (session.isPlaybackActive() == + if (session.getPlaybackState() != null && session.isPlaybackActive() == mAudioPlaybackMonitor.isPlaybackActive(session.getUid())) { // If there's a media session whose PlaybackState matches // the audio playback state, return it immediately. |