Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57e1e3af authored by Jeff DeCew's avatar Jeff DeCew
Browse files

NotificationMediaManager now requires modern media notifications

It appears that the false-positives from this session-based matching are causing issues.

Fixes: 205638476
Test: manual
Change-Id: I9b4b4510c18c3f25e9305e0be44735b094dd8a1f
parent 270657d9
Loading
Loading
Loading
Loading
+0 −39
Original line number Diff line number Diff line
@@ -33,11 +33,9 @@ import android.graphics.drawable.Icon;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSession;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.os.AsyncTask;
import android.os.Trace;
import android.os.UserHandle;
import android.service.notification.NotificationListenerService;
import android.service.notification.NotificationStats;
import android.service.notification.StatusBarNotification;
@@ -83,7 +81,6 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -132,7 +129,6 @@ public class NotificationMediaManager implements Dumpable {
    private final DelayableExecutor mMainExecutor;

    private final Context mContext;
    private final MediaSessionManager mMediaSessionManager;
    private final ArrayList<MediaListener> mMediaListeners;
    private final Lazy<Optional<StatusBar>> mStatusBarOptionalLazy;
    private final MediaArtworkProcessor mMediaArtworkProcessor;
@@ -194,10 +190,6 @@ public class NotificationMediaManager implements Dumpable {
        mMediaArtworkProcessor = mediaArtworkProcessor;
        mKeyguardBypassController = keyguardBypassController;
        mMediaListeners = new ArrayList<>();
        // TODO: use MediaSessionManager.SessionListener to hook us up to future updates
        // in session state
        mMediaSessionManager = (MediaSessionManager) mContext.getSystemService(
                Context.MEDIA_SESSION_SERVICE);
        // TODO: use KeyguardStateController#isOccluded to remove this dependency
        mStatusBarOptionalLazy = statusBarOptionalLazy;
        mNotificationShadeWindowController = notificationShadeWindowController;
@@ -487,35 +479,6 @@ public class NotificationMediaManager implements Dumpable {
                }
            }
        }
        if (mediaNotification == null) {
            // Still nothing? OK, let's just look for live media sessions and see if they match
            // one of our notifications. This will catch apps that aren't (yet!) using media
            // notifications.

            if (mMediaSessionManager != null) {
                // TODO: Should this really be for all users? It appears that inactive users
                //  can't have active sessions, which would mean it is fine.
                final List<MediaController> sessions =
                        mMediaSessionManager.getActiveSessionsForUser(null, UserHandle.ALL);

                for (MediaController aController : sessions) {
                    // now to see if we have one like this
                    final String pkg = aController.getPackageName();

                    for (NotificationEntry entry : allNotifications) {
                        if (entry.getSbn().getPackageName().equals(pkg)) {
                            if (DEBUG_MEDIA) {
                                Log.v(TAG, "DEBUG_MEDIA: found controller matching "
                                        + entry.getSbn().getKey());
                            }
                            controller = aController;
                            mediaNotification = entry;
                            break;
                        }
                    }
                }
            }
        }

        if (controller != null && !sameSessions(mMediaController, controller)) {
            // We have a new media session
@@ -561,8 +524,6 @@ public class NotificationMediaManager implements Dumpable {

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.print("    mMediaSessionManager=");
        pw.println(mMediaSessionManager);
        pw.print("    mMediaNotificationKey=");
        pw.println(mMediaNotificationKey);
        pw.print("    mMediaController=");