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

Commit 2ed827c3 authored by Robert Snoeberger's avatar Robert Snoeberger Committed by Automerger Merge Worker
Browse files

Merge "NotificationMediaManager is bad signal for resumption" into rvc-dev am:...

Merge "NotificationMediaManager is bad signal for resumption" into rvc-dev am: 59f73711 am: f0d63ae5 am: 7910e1ec

Change-Id: I469aecf3227e26e34ba75f70c23a59f54e8619cf
parents 20f07445 7910e1ec
Loading
Loading
Loading
Loading
+10 −12
Original line number Original line Diff line number Diff line
@@ -55,8 +55,6 @@ import com.android.settingslib.widget.AdaptiveIcon;
import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationMediaManager.MediaListener;
import com.android.systemui.util.Assert;
import com.android.systemui.util.Assert;


import java.util.List;
import java.util.List;
@@ -67,7 +65,6 @@ import java.util.concurrent.Executor;
 */
 */
public class MediaControlPanel {
public class MediaControlPanel {
    private static final String TAG = "MediaControlPanel";
    private static final String TAG = "MediaControlPanel";
    private final NotificationMediaManager mMediaManager;
    @Nullable private final LocalMediaManager mLocalMediaManager;
    @Nullable private final LocalMediaManager mLocalMediaManager;
    private final Executor mForegroundExecutor;
    private final Executor mForegroundExecutor;
    private final Executor mBackgroundExecutor;
    private final Executor mBackgroundExecutor;
@@ -103,12 +100,15 @@ public class MediaControlPanel {
            clearControls();
            clearControls();
            makeInactive();
            makeInactive();
        }
        }
    };

    private final MediaListener mMediaListener = new MediaListener() {
        @Override
        @Override
        public void onMetadataOrStateChanged(MediaMetadata metadata, int state) {
        public void onPlaybackStateChanged(PlaybackState state) {
            if (state == PlaybackState.STATE_NONE) {
            final int s = state != null ? state.getState() : PlaybackState.STATE_NONE;
            // When the playback state is NONE or CONNECTING, transition the player to the
            // resumption state. State CONNECTING needs to be considered for Cast sessions. Ending
            // a cast session in YT results in the CONNECTING state, which makes sense if you
            // thinking of the session as waiting to connect to another cast device.
            if (s == PlaybackState.STATE_NONE || s == PlaybackState.STATE_CONNECTING) {
                Log.d(TAG, "playback state change will trigger resumption, state=" + state);
                clearControls();
                clearControls();
                makeInactive();
                makeInactive();
            }
            }
@@ -161,7 +161,7 @@ public class MediaControlPanel {
     * @param foregroundExecutor foreground executor
     * @param foregroundExecutor foreground executor
     * @param backgroundExecutor background executor, used for processing artwork
     * @param backgroundExecutor background executor, used for processing artwork
     */
     */
    public MediaControlPanel(Context context, ViewGroup parent, NotificationMediaManager manager,
    public MediaControlPanel(Context context, ViewGroup parent,
            @Nullable LocalMediaManager routeManager, @LayoutRes int layoutId, int[] actionIds,
            @Nullable LocalMediaManager routeManager, @LayoutRes int layoutId, int[] actionIds,
            Executor foregroundExecutor, Executor backgroundExecutor) {
            Executor foregroundExecutor, Executor backgroundExecutor) {
        mContext = context;
        mContext = context;
@@ -173,7 +173,6 @@ public class MediaControlPanel {
        // attach/detach of views instead of inflating them in the constructor, which would allow
        // attach/detach of views instead of inflating them in the constructor, which would allow
        // mStateListener to be unregistered in detach.
        // mStateListener to be unregistered in detach.
        mMediaNotifView.addOnAttachStateChangeListener(mStateListener);
        mMediaNotifView.addOnAttachStateChangeListener(mStateListener);
        mMediaManager = manager;
        mLocalMediaManager = routeManager;
        mLocalMediaManager = routeManager;
        mActionIds = actionIds;
        mActionIds = actionIds;
        mForegroundExecutor = foregroundExecutor;
        mForegroundExecutor = foregroundExecutor;
@@ -453,6 +452,7 @@ public class MediaControlPanel {
     * Put controls into a resumption state
     * Put controls into a resumption state
     */
     */
    public void clearControls() {
    public void clearControls() {
        Log.d(TAG, "clearControls to resumption state package=" + getMediaPlayerPackage());
        // Hide all the old buttons
        // Hide all the old buttons
        for (int i = 0; i < mActionIds.length; i++) {
        for (int i = 0; i < mActionIds.length; i++) {
            ImageButton thisBtn = mMediaNotifView.findViewById(mActionIds[i]);
            ImageButton thisBtn = mMediaNotifView.findViewById(mActionIds[i]);
@@ -495,7 +495,6 @@ public class MediaControlPanel {
    private void makeActive() {
    private void makeActive() {
        Assert.isMainThread();
        Assert.isMainThread();
        if (!mIsRegistered) {
        if (!mIsRegistered) {
            mMediaManager.addCallback(mMediaListener);
            if (mLocalMediaManager != null) {
            if (mLocalMediaManager != null) {
                mLocalMediaManager.registerCallback(mDeviceCallback);
                mLocalMediaManager.registerCallback(mDeviceCallback);
                mLocalMediaManager.startScan();
                mLocalMediaManager.startScan();
@@ -511,7 +510,6 @@ public class MediaControlPanel {
                mLocalMediaManager.stopScan();
                mLocalMediaManager.stopScan();
                mLocalMediaManager.unregisterCallback(mDeviceCallback);
                mLocalMediaManager.unregisterCallback(mDeviceCallback);
            }
            }
            mMediaManager.removeCallback(mMediaListener);
            mIsRegistered = false;
            mIsRegistered = false;
        }
        }
    }
    }
+4 −6
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.R;
import com.android.systemui.media.MediaControlPanel;
import com.android.systemui.media.MediaControlPanel;
import com.android.systemui.media.SeekBarObserver;
import com.android.systemui.media.SeekBarObserver;
import com.android.systemui.media.SeekBarViewModel;
import com.android.systemui.media.SeekBarViewModel;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.DelayableExecutor;


import java.util.concurrent.Executor;
import java.util.concurrent.Executor;
@@ -69,14 +68,13 @@ public class QSMediaPlayer extends MediaControlPanel {
     * Initialize quick shade version of player
     * Initialize quick shade version of player
     * @param context
     * @param context
     * @param parent
     * @param parent
     * @param manager
     * @param routeManager Provides information about device
     * @param foregroundExecutor
     * @param foregroundExecutor
     * @param backgroundExecutor
     * @param backgroundExecutor
     */
     */
    public QSMediaPlayer(Context context, ViewGroup parent, NotificationMediaManager manager,
    public QSMediaPlayer(Context context, ViewGroup parent, LocalMediaManager routeManager,
            LocalMediaManager routeManager, Executor foregroundExecutor,
            Executor foregroundExecutor, DelayableExecutor backgroundExecutor) {
            DelayableExecutor backgroundExecutor) {
        super(context, parent, routeManager, R.layout.qs_media_panel, QS_ACTION_IDS,
        super(context, parent, manager, routeManager, R.layout.qs_media_panel, QS_ACTION_IDS,
                foregroundExecutor, backgroundExecutor);
                foregroundExecutor, backgroundExecutor);
        mParent = (QSPanel) parent;
        mParent = (QSPanel) parent;
        mBackgroundExecutor = backgroundExecutor;
        mBackgroundExecutor = backgroundExecutor;
+2 −6
Original line number Original line Diff line number Diff line
@@ -63,7 +63,6 @@ import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.settings.BrightnessController;
import com.android.systemui.settings.BrightnessController;
import com.android.systemui.settings.ToggleSliderView;
import com.android.systemui.settings.ToggleSliderView;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener;
import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;
@@ -99,7 +98,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne


    private final LinearLayout mMediaCarousel;
    private final LinearLayout mMediaCarousel;
    private final ArrayList<QSMediaPlayer> mMediaPlayers = new ArrayList<>();
    private final ArrayList<QSMediaPlayer> mMediaPlayers = new ArrayList<>();
    private final NotificationMediaManager mNotificationMediaManager;
    private final LocalBluetoothManager mLocalBluetoothManager;
    private final LocalBluetoothManager mLocalBluetoothManager;
    private final Executor mForegroundExecutor;
    private final Executor mForegroundExecutor;
    private final DelayableExecutor mBackgroundExecutor;
    private final DelayableExecutor mBackgroundExecutor;
@@ -133,7 +131,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
            DumpManager dumpManager,
            DumpManager dumpManager,
            BroadcastDispatcher broadcastDispatcher,
            BroadcastDispatcher broadcastDispatcher,
            QSLogger qsLogger,
            QSLogger qsLogger,
            NotificationMediaManager notificationMediaManager,
            @Main Executor foregroundExecutor,
            @Main Executor foregroundExecutor,
            @Background DelayableExecutor backgroundExecutor,
            @Background DelayableExecutor backgroundExecutor,
            @Nullable LocalBluetoothManager localBluetoothManager
            @Nullable LocalBluetoothManager localBluetoothManager
@@ -142,7 +139,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        mContext = context;
        mContext = context;
        mQSLogger = qsLogger;
        mQSLogger = qsLogger;
        mDumpManager = dumpManager;
        mDumpManager = dumpManager;
        mNotificationMediaManager = notificationMediaManager;
        mForegroundExecutor = foregroundExecutor;
        mForegroundExecutor = foregroundExecutor;
        mBackgroundExecutor = backgroundExecutor;
        mBackgroundExecutor = backgroundExecutor;
        mLocalBluetoothManager = localBluetoothManager;
        mLocalBluetoothManager = localBluetoothManager;
@@ -252,8 +248,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
            LocalMediaManager routeManager = new LocalMediaManager(mContext, mLocalBluetoothManager,
            LocalMediaManager routeManager = new LocalMediaManager(mContext, mLocalBluetoothManager,
                    imm, notif.getPackageName());
                    imm, notif.getPackageName());


            player = new QSMediaPlayer(mContext, this, mNotificationMediaManager, routeManager,
            player = new QSMediaPlayer(mContext, this, routeManager, mForegroundExecutor,
                    mForegroundExecutor, mBackgroundExecutor);
                    mBackgroundExecutor);
            player.setListening(mListening);
            player.setListening(mListening);
            if (player.isPlaying()) {
            if (player.isPlaying()) {
                mMediaCarousel.addView(player.getView(), 0, lp); // add in front
                mMediaCarousel.addView(player.getView(), 0, lp); // add in front
+3 −5
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@ import android.widget.LinearLayout;


import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.media.MediaControlPanel;
import com.android.systemui.media.MediaControlPanel;
import com.android.systemui.statusbar.NotificationMediaManager;


import java.util.concurrent.Executor;
import java.util.concurrent.Executor;


@@ -47,13 +46,12 @@ public class QuickQSMediaPlayer extends MediaControlPanel {
     * Initialize mini media player for QQS
     * Initialize mini media player for QQS
     * @param context
     * @param context
     * @param parent
     * @param parent
     * @param manager
     * @param foregroundExecutor
     * @param foregroundExecutor
     * @param backgroundExecutor
     * @param backgroundExecutor
     */
     */
    public QuickQSMediaPlayer(Context context, ViewGroup parent, NotificationMediaManager manager,
    public QuickQSMediaPlayer(Context context, ViewGroup parent, Executor foregroundExecutor,
            Executor foregroundExecutor, Executor backgroundExecutor) {
            Executor backgroundExecutor) {
        super(context, parent, manager, null, R.layout.qqs_media_panel, QQS_ACTION_IDS,
        super(context, parent, null, R.layout.qqs_media_panel, QQS_ACTION_IDS,
                foregroundExecutor, backgroundExecutor);
                foregroundExecutor, backgroundExecutor);
    }
    }


+2 −4
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.plugins.qs.QSTile.SignalState;
import com.android.systemui.plugins.qs.QSTile.State;
import com.android.systemui.plugins.qs.QSTile.State;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.util.Utils;
import com.android.systemui.util.Utils;
@@ -83,12 +82,11 @@ public class QuickQSPanel extends QSPanel {
            DumpManager dumpManager,
            DumpManager dumpManager,
            BroadcastDispatcher broadcastDispatcher,
            BroadcastDispatcher broadcastDispatcher,
            QSLogger qsLogger,
            QSLogger qsLogger,
            NotificationMediaManager notificationMediaManager,
            @Main Executor foregroundExecutor,
            @Main Executor foregroundExecutor,
            @Background DelayableExecutor backgroundExecutor,
            @Background DelayableExecutor backgroundExecutor,
            @Nullable LocalBluetoothManager localBluetoothManager
            @Nullable LocalBluetoothManager localBluetoothManager
    ) {
    ) {
        super(context, attrs, dumpManager, broadcastDispatcher, qsLogger, notificationMediaManager,
        super(context, attrs, dumpManager, broadcastDispatcher, qsLogger,
                foregroundExecutor, backgroundExecutor, localBluetoothManager);
                foregroundExecutor, backgroundExecutor, localBluetoothManager);
        if (mFooter != null) {
        if (mFooter != null) {
            removeView(mFooter.getView());
            removeView(mFooter.getView());
@@ -109,7 +107,7 @@ public class QuickQSPanel extends QSPanel {


            int marginSize = (int) mContext.getResources().getDimension(R.dimen.qqs_media_spacing);
            int marginSize = (int) mContext.getResources().getDimension(R.dimen.qqs_media_spacing);
            mMediaPlayer = new QuickQSMediaPlayer(mContext, mHorizontalLinearLayout,
            mMediaPlayer = new QuickQSMediaPlayer(mContext, mHorizontalLinearLayout,
                    notificationMediaManager, foregroundExecutor, backgroundExecutor);
                    foregroundExecutor, backgroundExecutor);
            LayoutParams lp2 = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
            LayoutParams lp2 = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
            lp2.setMarginEnd(marginSize);
            lp2.setMarginEnd(marginSize);
            lp2.setMarginStart(0);
            lp2.setMarginStart(0);
Loading