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

Commit 0885b598 authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Automerger Merge Worker
Browse files

Merge "Match players based on notification key" into rvc-dev am: 0fcd767d am: 00b3e71d

Change-Id: I47a0b42df8402210c2e46d1e4089bbdd6502e517
parents 7b52e3f7 00b3e71d
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ public class MediaControlPanel {
    protected ComponentName mRecvComponent;
    private MediaDevice mDevice;
    private boolean mIsRegistered = false;
    private String mKey;

    private final int[] mActionIds;

@@ -203,14 +204,15 @@ public class MediaControlPanel {
     * @param bgColor
     * @param contentIntent
     * @param appNameString
     * @param device
     * @param key
     */
    public void setMediaSession(MediaSession.Token token, Icon icon, int iconColor,
            int bgColor, PendingIntent contentIntent, String appNameString) {
            int bgColor, PendingIntent contentIntent, String appNameString, String key) {
        mToken = token;
        mForegroundColor = iconColor;
        mBackgroundColor = bgColor;
        mController = new MediaController(mContext, mToken);
        mKey = key;

        MediaMetadata mediaMetadata = mController.getMetadata();

@@ -325,6 +327,14 @@ public class MediaControlPanel {
        return mController.getPackageName();
    }

    /**
     * Return the original notification's key
     * @return The notification key
     */
    public String getKey()  {
        return mKey;
    }

    /**
     * Check whether this player has an attached media session.
     * @return whether there is a controller with a current media session.
+3 −4
Original line number Diff line number Diff line
@@ -99,15 +99,14 @@ public class QSMediaPlayer extends MediaControlPanel {
     * @param bgColor background color
     * @param actionsContainer a LinearLayout containing the media action buttons
     * @param notif reference to original notification
     * @param device current playback device
     * @param key original notification's key
     */
    public void setMediaSession(MediaSession.Token token, Icon icon, int iconColor,
            int bgColor, View actionsContainer, Notification notif) {
            int bgColor, View actionsContainer, Notification notif, String key) {

        String appName = Notification.Builder.recoverBuilder(getContext(), notif)
                .loadHeaderAppName();
        super.setMediaSession(token, icon, iconColor, bgColor, notif.contentIntent,
                appName);
        super.setMediaSession(token, icon, iconColor, bgColor, notif.contentIntent, appName, key);

        // Media controls
        LinearLayout parentActionsLayout = (LinearLayout) actionsContainer;
+7 −7
Original line number Diff line number Diff line
@@ -208,9 +208,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
     * @param bgColor
     * @param actionsContainer
     * @param notif
     * @param key
     */
    public void addMediaSession(MediaSession.Token token, Icon icon, int iconColor, int bgColor,
            View actionsContainer, StatusBarNotification notif) {
            View actionsContainer, StatusBarNotification notif, String key) {
        if (!useQsMediaPlayer(mContext)) {
            // Shouldn't happen, but just in case
            Log.e(TAG, "Tried to add media session without player!");
@@ -225,13 +226,12 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        String packageName = notif.getPackageName();
        for (QSMediaPlayer p : mMediaPlayers) {
            if (p.getMediaSessionToken().equals(token)) {
                Log.d(TAG, "a player for this session already exists");
                Log.d(TAG, "Found matching player by token " + packageName);
                player = p;
                break;
            }

            if (packageName.equals(p.getMediaPlayerPackage())) {
                Log.d(TAG, "found an old session for this app");
            } else if (packageName.equals(p.getMediaPlayerPackage()) && key.equals(p.getKey())) {
                // Also match if it's the same package and notification key
                Log.d(TAG, "Found matching player by package " + packageName + ", " + key);
                player = p;
                break;
            }
@@ -267,7 +267,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne

        Log.d(TAG, "setting player session");
        player.setMediaSession(token, icon, iconColor, bgColor, actionsContainer,
                notif.getNotification());
                notif.getNotification(), key);

        if (mMediaPlayers.size() > 0) {
            ((View) mMediaCarousel.getParent()).setVisibility(View.VISIBLE);
+3 −2
Original line number Diff line number Diff line
@@ -67,9 +67,10 @@ public class QuickQSMediaPlayer extends MediaControlPanel {
     * @param actionsToShow indices of which actions to display in the mini player
     *                      (max 3: Notification.MediaStyle.MAX_MEDIA_BUTTONS_IN_COMPACT)
     * @param contentIntent Intent to send when user taps on the view
     * @param key original notification's key
     */
    public void setMediaSession(MediaSession.Token token, Icon icon, int iconColor, int bgColor,
            View actionsContainer, int[] actionsToShow, PendingIntent contentIntent) {
            View actionsContainer, int[] actionsToShow, PendingIntent contentIntent, String key) {
        // Only update if this is a different session and currently playing
        String oldPackage = "";
        if (getController() != null) {
@@ -84,7 +85,7 @@ public class QuickQSMediaPlayer extends MediaControlPanel {
            return;
        }

        super.setMediaSession(token, icon, iconColor, bgColor, contentIntent, null);
        super.setMediaSession(token, icon, iconColor, bgColor, contentIntent, null, key);

        LinearLayout parentActionsLayout = (LinearLayout) actionsContainer;
        int i = 0;
+4 −2
Original line number Diff line number Diff line
@@ -193,7 +193,8 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
                    mBackgroundColor,
                    mActions,
                    compactActions,
                    notif.contentIntent);
                    notif.contentIntent,
                    sbn.getKey());
            QSPanel bigPanel = ctrl.getNotificationShadeView().findViewById(
                    com.android.systemui.R.id.quick_settings_panel);
            bigPanel.addMediaSession(token,
@@ -201,7 +202,8 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
                    tintColor,
                    mBackgroundColor,
                    mActions,
                    sbn);
                    sbn,
                    sbn.getKey());
        }

        boolean showCompactSeekbar = mMediaManager.getShowCompactMediaSeekbar();