Fix the art work of lockscreen cannot be removed

The root cause is that mMediaNotificationKey is cleared right after it is set.
It makes the media art work cannot be cleared since there is no
notification that match the mMediaNotificationKey which is already
cleared to null.

Only clear media session related data inside the controller check.

Test: runtest systemui
Test: manual
Change-Id: Iae43c502b90f73e57fae7150e15ef89eb18b096c
Fixes: 78204513
This commit is contained in:
shawnlin
2018-04-20 21:42:42 +08:00
parent bbfe498aef
commit 87eae9bf79

View File

@@ -172,27 +172,28 @@ public class NotificationMediaManager implements Dumpable {
}
}
if (mediaNotification != null) {
mMediaNotificationKey = mediaNotification.notification.getKey();
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Found new media notification: key="
+ mMediaNotificationKey + " controller=" + mMediaController);
}
}
if (controller != null && !sameSessions(mMediaController, controller)) {
// We have a new media session
clearCurrentMediaNotification();
clearCurrentMediaNotificationSession();
mMediaController = controller;
mMediaController.registerCallback(mMediaListener);
mMediaMetadata = mMediaController.getMetadata();
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: insert listener, receive metadata: "
+ mMediaMetadata);
Log.v(TAG, "DEBUG_MEDIA: insert listener, found new controller: "
+ mMediaController + ", receive metadata: " + mMediaMetadata);
}
metaDataChanged = true;
}
if (mediaNotification != null
&& !mediaNotification.notification.getKey().equals(mMediaNotificationKey)) {
mMediaNotificationKey = mediaNotification.notification.getKey();
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Found new media notification: key="
+ mMediaNotificationKey);
}
}
}
if (metaDataChanged) {
@@ -203,15 +204,7 @@ public class NotificationMediaManager implements Dumpable {
public void clearCurrentMediaNotification() {
mMediaNotificationKey = null;
mMediaMetadata = null;
if (mMediaController != null) {
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Disconnecting from old controller: "
+ mMediaController.getPackageName());
}
mMediaController.unregisterCallback(mMediaListener);
}
mMediaController = null;
clearCurrentMediaNotificationSession();
}
@Override
@@ -265,4 +258,16 @@ public class NotificationMediaManager implements Dumpable {
entry.getExpandedContentView()
.findViewById(com.android.internal.R.id.media_actions) != null;
}
private void clearCurrentMediaNotificationSession() {
mMediaMetadata = null;
if (mMediaController != null) {
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Disconnecting from old controller: "
+ mMediaController.getPackageName());
}
mMediaController.unregisterCallback(mMediaListener);
}
mMediaController = null;
}
}