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

Commit 56fb61ed authored by Jaewan Kim's avatar Jaewan Kim Committed by Android (Google) Code Review
Browse files

Merge "MediaSession2: Unhide APIs"

parents fa894086 81c1b872
Loading
Loading
Loading
Loading
+36 −3
Original line number Diff line number Diff line
@@ -465,11 +465,14 @@ public class MediaController2Impl implements MediaController2Provider {
    }

    @Override
    public void setCurrentPlaylistItem_impl(int index) {
    public void skipToPlaylistItem_impl(MediaItem2 item) {
        // TODO(jaewan): Implement this
        /*
        Bundle args = new Bundle();
        args.putInt(MediaSession2Stub.ARGUMENT_KEY_ITEM_INDEX, index);
        args.putInt(MediaSession2Stub.ARGUMENT_KEY_ITEM_INDEX, item);
        sendTransportControlCommand(
                MediaSession2.COMMAND_CODE_PLAYBACK_SET_CURRENT_PLAYLIST_ITEM, args);
        */
    }

    @Override
@@ -513,6 +516,36 @@ public class MediaController2Impl implements MediaController2Provider {
        sendTransportControlCommand(MediaSession2.COMMAND_CODE_PLAYBACK_SET_PLAYLIST_PARAMS, args);
    }

    @Override
    public int getPlayerState_impl() {
        // TODO(jaewan): Implement
        return 0;
    }

    @Override
    public long getPosition_impl() {
        // TODO(jaewan): Implement
        return 0;
    }

    @Override
    public float getPlaybackSpeed_impl() {
        // TODO(jaewan): Implement
        return 0;
    }

    @Override
    public long getBufferedPosition_impl() {
        // TODO(jaewan): Implement
        return 0;
    }

    @Override
    public MediaItem2 getCurrentPlaylistItem_impl() {
        // TODO(jaewan): Implement
        return null;
    }

    void pushPlaybackStateChanges(final PlaybackState2 state) {
        synchronized (mLock) {
            mPlaybackState = state;
+7 −7
Original line number Diff line number Diff line
@@ -21,9 +21,9 @@ import android.content.Context;
import android.media.MediaLibraryService2;
import android.media.MediaLibraryService2.LibraryRoot;
import android.media.MediaLibraryService2.MediaLibrarySession;
import android.media.MediaLibraryService2.MediaLibrarySessionBuilder;
import android.media.MediaLibraryService2.MediaLibrarySessionCallback;
import android.media.MediaPlayerInterface;
import android.media.MediaLibraryService2.MediaLibrarySession.Builder;
import android.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback;
import android.media.MediaPlayerBase;
import android.media.MediaSession2;
import android.media.MediaSession2.ControllerInfo;
import android.media.MediaSessionService2;
@@ -67,7 +67,7 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement
    public static class MediaLibrarySessionImpl extends MediaSession2Impl
            implements MediaLibrarySessionProvider {
        public MediaLibrarySessionImpl(Context context,
                MediaPlayerInterface player, String id, VolumeProvider2 volumeProvider,
                MediaPlayerBase player, String id, VolumeProvider2 volumeProvider,
                PendingIntent sessionActivity, Executor callbackExecutor,
                MediaLibrarySessionCallback callback) {
            super(context, player, id, volumeProvider, sessionActivity, callbackExecutor, callback);
@@ -130,10 +130,10 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement

    public static class BuilderImpl
            extends BuilderBaseImpl<MediaLibrarySession, MediaLibrarySessionCallback> {
        public BuilderImpl(Context context, MediaLibrarySessionBuilder instance,
                MediaPlayerInterface player, Executor callbackExecutor,
        public BuilderImpl(MediaLibraryService2 service, Builder instance,
                MediaPlayerBase player, Executor callbackExecutor,
                MediaLibrarySessionCallback callback) {
            super(context, player);
            super(service, player);
            setSessionCallback_impl(callbackExecutor, callback);
        }

+59 −38
Original line number Diff line number Diff line
@@ -37,8 +37,8 @@ import android.media.MediaController2.PlaybackInfo;
import android.media.MediaItem2;
import android.media.MediaLibraryService2;
import android.media.MediaMetadata2;
import android.media.MediaPlayerInterface;
import android.media.MediaPlayerInterface.EventCallback;
import android.media.MediaPlayerBase;
import android.media.MediaPlayerBase.EventCallback;
import android.media.MediaSession2;
import android.media.MediaSession2.Builder;
import android.media.MediaSession2.Command;
@@ -105,7 +105,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    //
    // TODO(jaewan): Should we put volatile here?
    @GuardedBy("mLock")
    private MediaPlayerInterface mPlayer;
    private MediaPlayerBase mPlayer;
    @GuardedBy("mLock")
    private VolumeProvider2 mVolumeProvider;
    @GuardedBy("mLock")
@@ -124,7 +124,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
     * @param callbackExecutor
     * @param callback
     */
    public MediaSession2Impl(Context context, MediaPlayerInterface player, String id,
    public MediaSession2Impl(Context context, MediaPlayerBase player, String id,
            VolumeProvider2 volumeProvider, PendingIntent sessionActivity,
            Executor callbackExecutor, SessionCallback callback) {
        // TODO(jaewan): Keep other params.
@@ -202,7 +202,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    @Override
    public void setPlayer_impl(MediaPlayerInterface player) {
    public void setPlayer_impl(MediaPlayerBase player) {
        ensureCallingThread();
        if (player == null) {
            throw new IllegalArgumentException("player shouldn't be null");
@@ -211,7 +211,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    @Override
    public void setPlayer_impl(MediaPlayerInterface player, VolumeProvider2 volumeProvider)
    public void setPlayer_impl(MediaPlayerBase player, VolumeProvider2 volumeProvider)
            throws IllegalArgumentException {
        ensureCallingThread();
        if (player == null) {
@@ -223,7 +223,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
        setPlayer(player, volumeProvider);
    }

    private void setPlayer(MediaPlayerInterface player, VolumeProvider2 volumeProvider) {
    private void setPlayer(MediaPlayerBase player, VolumeProvider2 volumeProvider) {
        final PlaybackInfo info = createPlaybackInfo(volumeProvider, player.getAudioAttributes());
        synchronized (mLock) {
            if (mPlayer != null && mEventCallback != null) {
@@ -300,7 +300,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    @Override
    public MediaPlayerInterface getPlayer_impl() {
    public MediaPlayerBase getPlayer_impl() {
        return getPlayer();
    }

@@ -323,7 +323,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void play_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.play();
        } else if (DEBUG) {
@@ -334,7 +334,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void pause_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.pause();
        } else if (DEBUG) {
@@ -345,7 +345,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void stop_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.stop();
        } else if (DEBUG) {
@@ -356,7 +356,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void skipToPrevious_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.skipToPrevious();
        } else if (DEBUG) {
@@ -367,7 +367,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void skipToNext_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.skipToNext();
        } else if (DEBUG) {
@@ -393,7 +393,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
            throw new IllegalArgumentException("params shouldn't be null");
        }
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.setPlaylistParams(params);
            mSessionStub.notifyPlaylistParamsChanged(params);
@@ -402,7 +402,7 @@ public class MediaSession2Impl implements MediaSession2Provider {

    @Override
    public PlaylistParams getPlaylistParams_impl() {
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            // TODO(jaewan): Is it safe to be called on any thread?
            //               Otherwise MediaSession2 should cache parameter of setPlaylistParams.
@@ -422,11 +422,6 @@ public class MediaSession2Impl implements MediaSession2Provider {
        // TODO(jaewan): Implement
    }

    @Override
    public void notifyMetadataChanged_impl() {
        // TODO(jaewan): Implement
    }

    @Override
    public void sendCustomCommand_impl(ControllerInfo controller, Command command, Bundle args,
            ResultReceiver receiver) {
@@ -444,7 +439,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
            throw new IllegalArgumentException("playlist shouldn't be null");
        }
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.setPlaylist(playlist);
            mSessionStub.notifyPlaylistChanged(playlist);
@@ -453,9 +448,24 @@ public class MediaSession2Impl implements MediaSession2Provider {
        }
    }

    @Override
    public void addPlaylistItem_impl(int index, MediaItem2 item) {
        // TODO(jaewan): Implement
    }

    @Override
    public void removePlaylistItem_impl(MediaItem2 item) {
        // TODO(jaewan): Implement
    }

    @Override
    public void editPlaylistItem_impl(MediaItem2 item) {
        // TODO(jaewan): Implement
    }

    @Override
    public List<MediaItem2> getPlaylist_impl() {
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            // TODO(jaewan): Is it safe to be called on any thread?
            //               Otherwise MediaSession2 should cache parameter of setPlaylist.
@@ -466,10 +476,16 @@ public class MediaSession2Impl implements MediaSession2Provider {
        return null;
    }

    @Override
    public MediaItem2 getCurrentPlaylistItem_impl() {
        // TODO(jaewan): Implement
        return null;
    }

    @Override
    public void prepare_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.prepare();
        } else if (DEBUG) {
@@ -480,7 +496,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void fastForward_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.fastForward();
        } else if (DEBUG) {
@@ -491,7 +507,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void rewind_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.rewind();
        } else if (DEBUG) {
@@ -502,7 +518,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public void seekTo_impl(long pos) {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.seekTo(pos);
        } else if (DEBUG) {
@@ -511,11 +527,11 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    @Override
    public void setCurrentPlaylistItem_impl(int index) {
    public void skipToPlaylistItem_impl(MediaItem2 item) {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            player.setCurrentPlaylistItem(index);
            player.setCurrentPlaylistItem(item);
        } else if (DEBUG) {
            Log.d(TAG, "API calls after the close()", new IllegalStateException());
        }
@@ -552,7 +568,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @Override
    public PlaybackState2 getPlaybackState_impl() {
        ensureCallingThread();
        final MediaPlayerInterface player = mPlayer;
        final MediaPlayerBase player = mPlayer;
        if (player != null) {
            // TODO(jaewan): Is it safe to be called on any thread?
            //               Otherwise MediaSession2 should cache the result from listener.
@@ -563,6 +579,11 @@ public class MediaSession2Impl implements MediaSession2Provider {
        return null;
    }

    @Override
    public void notifyError_impl(int errorCode, int extra) {
        // TODO(jaewan): Implement
    }

    ///////////////////////////////////////////////////
    // Protected or private methods
    ///////////////////////////////////////////////////
@@ -624,7 +645,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
        return mInstance;
    }

    MediaPlayerInterface getPlayer() {
    MediaPlayerBase getPlayer() {
        return mPlayer;
    }

@@ -654,11 +675,11 @@ public class MediaSession2Impl implements MediaSession2Provider {
        return mSessionActivity;
    }

    private static class MyEventCallback implements EventCallback {
    private static class MyEventCallback extends EventCallback {
        private final WeakReference<MediaSession2Impl> mSession;
        private final MediaPlayerInterface mPlayer;
        private final MediaPlayerBase mPlayer;

        private MyEventCallback(MediaSession2Impl session, MediaPlayerInterface player) {
        private MyEventCallback(MediaSession2Impl session, MediaPlayerBase player) {
            mSession = new WeakReference<>(session);
            mPlayer = player;
        }
@@ -1195,7 +1216,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    public static abstract class BuilderBaseImpl<T extends MediaSession2, C extends SessionCallback>
            implements BuilderBaseProvider<T, C> {
        final Context mContext;
        final MediaPlayerInterface mPlayer;
        final MediaPlayerBase mPlayer;
        String mId;
        Executor mCallbackExecutor;
        C mCallback;
@@ -1211,7 +1232,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
         *      {@link MediaSession2} or {@link MediaController2}.
         */
        // TODO(jaewan): Also need executor
        public BuilderBaseImpl(Context context, MediaPlayerInterface player) {
        public BuilderBaseImpl(Context context, MediaPlayerBase player) {
            if (context == null) {
                throw new IllegalArgumentException("context shouldn't be null");
            }
@@ -1254,7 +1275,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    public static class BuilderImpl extends BuilderBaseImpl<MediaSession2, SessionCallback> {
        public BuilderImpl(Context context, Builder instance, MediaPlayerInterface player) {
        public BuilderImpl(Context context, Builder instance, MediaPlayerBase player) {
            super(context, player);
        }

@@ -1264,7 +1285,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
                mCallbackExecutor = mContext.getMainExecutor();
            }
            if (mCallback == null) {
                mCallback = new SessionCallback(mContext);
                mCallback = new SessionCallback(mContext) {};
            }

            return new MediaSession2Impl(mContext, mPlayer, mId, mVolumeProvider,
+4 −1
Original line number Diff line number Diff line
@@ -357,8 +357,11 @@ public class MediaSession2Stub extends IMediaSession2.Stub {
                    session.getInstance().seekTo(args.getLong(ARGUMENT_KEY_POSITION));
                    break;
                case MediaSession2.COMMAND_CODE_PLAYBACK_SET_CURRENT_PLAYLIST_ITEM:
                    session.getInstance().setCurrentPlaylistItem(
                    // TODO(jaewan): Implement
                    /*
                    session.getInstance().skipToPlaylistItem(
                            args.getInt(ARGUMENT_KEY_ITEM_INDEX));
                    */
                    break;
                case MediaSession2.COMMAND_CODE_PLAYBACK_SET_PLAYLIST_PARAMS:
                    session.getInstance().setPlaylistParams(
+5 −5
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayerInterface.EventCallback;
import android.media.MediaPlayerBase.EventCallback;
import android.media.MediaSession2;
import android.media.MediaSessionService2;
import android.media.MediaSessionService2.MediaNotification;
@@ -72,7 +72,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider {
    }

    @Override
    public MediaNotification onUpdateNotification_impl(PlaybackState2 state) {
    public MediaNotification onUpdateNotification_impl() {
        // Provide default notification UI later.
        return null;
    }
@@ -109,7 +109,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider {
    }

    private void updateNotification(PlaybackState2 state) {
        MediaNotification mediaNotification = mInstance.onUpdateNotification(state);
        MediaNotification mediaNotification = mInstance.onUpdateNotification();
        if (mediaNotification == null) {
            return;
        }
@@ -135,7 +135,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider {
                mediaNotification.getNotification());
    }

    private class SessionServiceEventCallback implements EventCallback {
    private class SessionServiceEventCallback extends EventCallback {
        @Override
        public void onPlaybackStateChanged(PlaybackState2 state) {
            if (state == null) {
@@ -143,7 +143,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider {
                return;
            }
            MediaSession2Impl impl = (MediaSession2Impl) mSession.getProvider();
            updateNotification(state);
            updateNotification(impl.getInstance().getPlaybackState());
        }
    }

Loading