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

Commit 6d9fe654 authored by RoboErik's avatar RoboErik Committed by Android (Google) Code Review
Browse files

Merge "Combine MediaSession Callback and TransportControlsCallback" into lmp-dev

parents 98cb95a9 477d1197
Loading
Loading
Loading
Loading
+16 −24
Original line number Diff line number Diff line
@@ -16743,18 +16743,14 @@ package android.media.session {
  public final class MediaSession {
    ctor public MediaSession(android.content.Context, java.lang.String);
    method public void addCallback(android.media.session.MediaSession.Callback);
    method public void addCallback(android.media.session.MediaSession.Callback, android.os.Handler);
    method public void addTransportControlsCallback(android.media.session.MediaSession.TransportControlsCallback);
    method public void addTransportControlsCallback(android.media.session.MediaSession.TransportControlsCallback, android.os.Handler);
    method public android.media.session.MediaController getController();
    method public android.media.session.MediaSession.Token getSessionToken();
    method public boolean isActive();
    method public void release();
    method public void removeCallback(android.media.session.MediaSession.Callback);
    method public void removeTransportControlsCallback(android.media.session.MediaSession.TransportControlsCallback);
    method public void sendSessionEvent(java.lang.String, android.os.Bundle);
    method public void setActive(boolean);
    method public void setCallback(android.media.session.MediaSession.Callback);
    method public void setCallback(android.media.session.MediaSession.Callback, android.os.Handler);
    method public void setExtras(android.os.Bundle);
    method public void setFlags(int);
    method public void setLaunchActivity(android.app.PendingIntent);
@@ -16775,7 +16771,20 @@ package android.media.session {
  public static abstract class MediaSession.Callback {
    ctor public MediaSession.Callback();
    method public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
    method public void onMediaButtonEvent(android.content.Intent);
    method public void onCustomAction(java.lang.String, android.os.Bundle);
    method public void onFastForward();
    method public boolean onMediaButtonEvent(android.content.Intent);
    method public void onPause();
    method public void onPlay();
    method public void onPlayFromSearch(java.lang.String, android.os.Bundle);
    method public void onPlayUri(android.net.Uri, android.os.Bundle);
    method public void onRewind();
    method public void onSeekTo(long);
    method public void onSetRating(android.media.Rating);
    method public void onSkipToNext();
    method public void onSkipToPrevious();
    method public void onSkipToTrack(long);
    method public void onStop();
  }
  public static final class MediaSession.Token implements android.os.Parcelable {
@@ -16801,23 +16810,6 @@ package android.media.session {
    method public android.media.session.MediaSession.Track.Builder setExtras(android.os.Bundle);
  }
  public static abstract class MediaSession.TransportControlsCallback {
    ctor public MediaSession.TransportControlsCallback();
    method public void onCustomAction(java.lang.String, android.os.Bundle);
    method public void onFastForward();
    method public void onPause();
    method public void onPlay();
    method public void onPlayFromSearch(java.lang.String, android.os.Bundle);
    method public void onPlayUri(android.net.Uri, android.os.Bundle);
    method public void onRewind();
    method public void onSeekTo(long);
    method public void onSetRating(android.media.Rating);
    method public void onSkipToNext();
    method public void onSkipToPrevious();
    method public void onSkipToTrack(long);
    method public void onStop();
  }
  public final class MediaSessionManager {
    method public void addActiveSessionsListener(android.media.session.MediaSessionManager.SessionListener, android.content.ComponentName);
    method public java.util.List<android.media.session.MediaController> getActiveSessions(android.content.ComponentName);
+1 −2
Original line number Diff line number Diff line
@@ -970,8 +970,7 @@ import java.lang.IllegalArgumentException;
    public final static int RCSE_ID_UNREGISTERED = -1;

    // USE_SESSIONS
    private MediaSession.TransportControlsCallback mTransportListener
            = new MediaSession.TransportControlsCallback() {
    private MediaSession.Callback mTransportListener = new MediaSession.Callback() {

        @Override
        public void onSeekTo(long pos) {
+2 −1
Original line number Diff line number Diff line
@@ -179,7 +179,8 @@ public final class MediaController {
    }

    /**
     * Get the current play queue for this session.
     * Get the current play queue for this session if one is set. If you only
     * care about the current item {@link #getMetadata()} should be used.
     *
     * @return The current play queue or null.
     */
+150 −241

File changed.

Preview size limit exceeded, changes collapsed.

+92 −30
Original line number Diff line number Diff line
@@ -29,6 +29,9 @@ import android.media.AudioManager;
import android.media.MediaMetadata;
import android.media.MediaMetadataEditor;
import android.media.MediaMetadataRetriever;
import android.media.Rating;
import android.media.RemoteControlClient;
import android.media.RemoteControlClient.MetadataEditor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -229,8 +232,7 @@ public class MediaSessionLegacyHelper {
        }
    }

    public void addRccListener(PendingIntent pi,
            MediaSession.TransportControlsCallback listener) {
    public void addRccListener(PendingIntent pi, MediaSession.Callback listener) {
        if (pi == null) {
            Log.w(TAG, "Pending intent was null, can't add rcc listener.");
            return;
@@ -247,10 +249,7 @@ public class MediaSessionLegacyHelper {
                // This is already the registered listener, ignore
                return;
            }
            // Otherwise it changed so we need to switch to the new one
            holder.mSession.removeTransportControlsCallback(holder.mRccListener);
        }
        holder.mSession.addTransportControlsCallback(listener, mHandler);
        holder.mRccListener = listener;
        holder.mFlags |= MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS;
        holder.mSession.setFlags(holder.mFlags);
@@ -266,7 +265,6 @@ public class MediaSessionLegacyHelper {
        }
        SessionHolder holder = getHolder(pi, false);
        if (holder != null && holder.mRccListener != null) {
            holder.mSession.removeTransportControlsCallback(holder.mRccListener);
            holder.mRccListener = null;
            holder.mFlags &= ~MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS;
            holder.mSession.setFlags(holder.mFlags);
@@ -288,8 +286,7 @@ public class MediaSessionLegacyHelper {
            return;
        }
        if (holder.mMediaButtonListener != null) {
            // Already have this listener registered, but update it anyway as
            // the extras may have changed.
            // Already have this listener registered
            if (DEBUG) {
                Log.d(TAG, "addMediaButtonListener already added " + pi);
            }
@@ -300,11 +297,8 @@ public class MediaSessionLegacyHelper {
        // set this flag
        holder.mFlags |= MediaSession.FLAG_HANDLES_MEDIA_BUTTONS;
        holder.mSession.setFlags(holder.mFlags);
        holder.mSession.addTransportControlsCallback(holder.mMediaButtonListener, mHandler);

        holder.mMediaButtonReceiver = new MediaButtonReceiver(pi, context);
        holder.mSession.addCallback(holder.mMediaButtonReceiver, mHandler);
        holder.mSession.setMediaButtonReceiver(pi);
        holder.update();
        if (DEBUG) {
            Log.d(TAG, "addMediaButtonListener added " + pi);
        }
@@ -316,13 +310,10 @@ public class MediaSessionLegacyHelper {
        }
        SessionHolder holder = getHolder(pi, false);
        if (holder != null && holder.mMediaButtonListener != null) {
            holder.mSession.removeTransportControlsCallback(holder.mMediaButtonListener);
            holder.mFlags &= ~MediaSession.FLAG_HANDLES_MEDIA_BUTTONS;
            holder.mSession.setFlags(holder.mFlags);
            holder.mMediaButtonListener = null;

            holder.mSession.removeCallback(holder.mMediaButtonReceiver);
            holder.mMediaButtonReceiver = null;
            holder.update();
            if (DEBUG) {
                Log.d(TAG, "removeMediaButtonListener removed " + pi);
@@ -387,28 +378,19 @@ public class MediaSessionLegacyHelper {
        }
    }

    private static final class MediaButtonReceiver extends MediaSession.Callback {
    private static final class MediaButtonListener extends MediaSession.Callback {
        private final PendingIntent mPendingIntent;
        private final Context mContext;

        public MediaButtonReceiver(PendingIntent pi, Context context) {
        public MediaButtonListener(PendingIntent pi, Context context) {
            mPendingIntent = pi;
            mContext = context;
        }

        @Override
        public void onMediaButtonEvent(Intent mediaButtonIntent) {
        public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
            MediaSessionLegacyHelper.sendKeyEvent(mPendingIntent, mContext, mediaButtonIntent);
        }
    }

    private static final class MediaButtonListener extends MediaSession.TransportControlsCallback {
        private final PendingIntent mPendingIntent;
        private final Context mContext;

        public MediaButtonListener(PendingIntent pi, Context context) {
            mPendingIntent = pi;
            mContext = context;
            return true;
        }

        @Override
@@ -468,10 +450,11 @@ public class MediaSessionLegacyHelper {
        public final MediaSession mSession;
        public final PendingIntent mPi;
        public MediaButtonListener mMediaButtonListener;
        public MediaButtonReceiver mMediaButtonReceiver;
        public MediaSession.TransportControlsCallback mRccListener;
        public MediaSession.Callback mRccListener;
        public int mFlags;

        public SessionCallback mCb;

        public SessionHolder(MediaSession session, PendingIntent pi) {
            mSession = session;
            mPi = pi;
@@ -479,8 +462,87 @@ public class MediaSessionLegacyHelper {

        public void update() {
            if (mMediaButtonListener == null && mRccListener == null) {
                mSession.setCallback(null);
                mSession.release();
                mCb = null;
                mSessions.remove(mPi);
            } else if (mCb == null) {
                mCb = new SessionCallback();
                mSession.setCallback(mCb);
            }
        }

        private class SessionCallback extends MediaSession.Callback {

            @Override
            public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onMediaButtonEvent(mediaButtonIntent);
                }
                return true;
            }

            @Override
            public void onPlay() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onPlay();
                }
            }

            @Override
            public void onPause() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onPause();
                }
            }

            @Override
            public void onSkipToNext() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onSkipToNext();
                }
            }

            @Override
            public void onSkipToPrevious() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onSkipToPrevious();
                }
            }

            @Override
            public void onFastForward() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onFastForward();
                }
            }

            @Override
            public void onRewind() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onRewind();
                }
            }

            @Override
            public void onStop() {
                if (mMediaButtonListener != null) {
                    mMediaButtonListener.onStop();
                }
            }

            @Override
            public void onSeekTo(long pos) {
                if (mRccListener != null) {
                    mRccListener.onSeekTo(pos);
                }
            }

            @Override
            public void onSetRating(Rating rating) {
                if (mRccListener != null) {
                    mRccListener.onSetRating(rating);
                }
            }
        }
    }
Loading