diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java index be867414bd76c..cfbf3af0a9b12 100644 --- a/media/java/android/media/session/MediaController.java +++ b/media/java/android/media/session/MediaController.java @@ -434,6 +434,14 @@ public final class MediaController { return mSessionBinder; } + /** + * @hide + */ + public boolean controlsSameSession(MediaController other) { + if (other == null) return false; + return mSessionBinder.asBinder() == other.getSessionBinder().asBinder(); + } + private void addCallbackLocked(Callback cb, Handler handler) { if (getHandlerForCallbackLocked(cb) != null) { Log.w(TAG, "Callback is already added, ignoring"); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 90f9cdd772bc6..dd947f03678e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1758,7 +1758,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } } - if (controller != mMediaController) { + if (!sameSessions(mMediaController, controller)) { // We have a new media session if (mMediaController != null) { @@ -1807,6 +1807,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, updateMediaMetaData(metaDataChanged); } + private boolean sameSessions(MediaController a, MediaController b) { + if (a == b) return true; + if (a == null) return false; + return a.controlsSameSession(b); + } + /** * Hide the album artwork that is fading out and release its bitmap. */