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

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

Merge "MediaSession2: Stop overriding MediaPlayerBase for session/controller"

parents 6e39b955 cf707c47
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.media;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.media.MediaPlayerBase.PlaybackListener;
import android.media.MediaSession2.CommandButton;
import android.media.MediaSession2.CommandGroup;
import android.media.MediaSession2.ControllerInfo;
@@ -61,7 +62,7 @@ import java.util.concurrent.Executor;
 */
// TODO(jaewan): Unhide
// TODO(jaewan): Revisit comments. Currently MediaBrowser case is missing.
public class MediaController2 extends MediaPlayerBase {
public class MediaController2 implements AutoCloseable {
    /**
     * Interface for listening to change in activeness of the {@link MediaSession2}.  It's
     * active if and only if it has set a player.
@@ -80,8 +81,8 @@ public class MediaController2 extends MediaPlayerBase {
         * the session. The controller becomes unavailable afterwards and the callback wouldn't
         * be called.
         * <p>
         * It will be also called after the {@link #release()}, so you can put clean up code here.
         * You don't need to call {@link #release()} after this.
         * It will be also called after the {@link #close()}, so you can put clean up code here.
         * You don't need to call {@link #close()} after this.
         */
        public void onDisconnected() { }

@@ -131,8 +132,9 @@ public class MediaController2 extends MediaPlayerBase {
     * Release this object, and disconnect from the session. After this, callbacks wouldn't be
     * received.
     */
    public void release() {
        mProvider.release_impl();
    @Override
    public void close() {
        mProvider.close_impl();
    }

    /**
@@ -157,32 +159,27 @@ public class MediaController2 extends MediaPlayerBase {
        return mProvider.isConnected_impl();
    }

    @Override
    public void play() {
        mProvider.play_impl();
    }

    @Override
    public void pause() {
        mProvider.pause_impl();
    }

    @Override
    public void stop() {
        mProvider.stop_impl();
    }

    @Override
    public void skipToPrevious() {
        mProvider.skipToPrevious_impl();
    }

    @Override
    public void skipToNext() {
        mProvider.skipToNext_impl();
    }

    @Override

    public @Nullable PlaybackState getPlaybackState() {
        return mProvider.getPlaybackState_impl();
    }
@@ -198,7 +195,6 @@ public class MediaController2 extends MediaPlayerBase {
    // TODO(jaewan): Match with the addSessionAvailabilityListener() that tells the current state
    //               through the listener.
    // TODO(jaewan): Can handler be null? Follow the API guideline after it's finalized.
    @Override
    public void addPlaybackListener(@NonNull PlaybackListener listener, @NonNull Handler handler) {
        mProvider.addPlaybackListener_impl(listener, handler);
    }
@@ -209,7 +205,6 @@ public class MediaController2 extends MediaPlayerBase {
     * @param listener the listener to be removed
     * @throws IllegalArgumentException if the listener is {@code null}.
     */
    @Override
    public void removePlaybackListener(@NonNull PlaybackListener listener) {
        mProvider.removePlaybackListener_impl(listener);
    }
+24 −17
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.media;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.media.MediaPlayerBase.PlaybackListener;
import android.media.session.MediaSession;
import android.media.session.MediaSession.Callback;
import android.media.session.PlaybackState;
@@ -74,7 +75,7 @@ import java.util.List;
// TODO(jaewan): Should we make APIs for MediaSessionService2 public? It's helpful for
//               developers that doesn't want to override from Browser, but user may not use this
//               correctly.
public class MediaSession2 extends MediaPlayerBase {
public class MediaSession2 implements AutoCloseable {
    private final MediaSession2Provider mProvider;

    // Note: Do not define IntDef because subclass can add more command code on top of these.
@@ -341,10 +342,6 @@ public class MediaSession2 extends MediaPlayerBase {
            if (player == null) {
                throw new IllegalArgumentException("player shouldn't be null");
            }
            if (player instanceof MediaSession2 || player instanceof MediaController2) {
                throw new IllegalArgumentException("player doesn't accept MediaSession2 nor"
                        + " MediaController2");
            }
            mContext = context;
            mPlayer = player;
            // Ensure non-null
@@ -698,14 +695,17 @@ public class MediaSession2 extends MediaPlayerBase {
     *
     * @param player a {@link MediaPlayerBase} that handles actual media playback in your app.
     *      It shouldn't be {@link MediaSession2} nor {@link MediaController2}.
     * @throws IllegalArgumentException if the player is either {@link MediaSession2}
     *      or {@link MediaController2}.
     * @throws IllegalArgumentException if the player is {@code null}.
     */
    // TODO(jaewan): Add release instead of setPlayer(null).
    public void setPlayer(MediaPlayerBase player) throws IllegalArgumentException {
    public void setPlayer(@NonNull MediaPlayerBase player) throws IllegalArgumentException {
        mProvider.setPlayer_impl(player);
    }

    @Override
    public void close() {
        mProvider.close_impl();
    }

    /**
     * @return player
     */
@@ -749,32 +749,41 @@ public class MediaSession2 extends MediaPlayerBase {
        mProvider.setCustomLayout_impl(controller, layout);
    }

    @Override
    /**
     * Play playback
     */
    public void play() {
        mProvider.play_impl();
    }

    @Override
    /**
     * Pause playback
     */
    public void pause() {
        mProvider.pause_impl();
    }

    @Override
    /**
     * Stop playback
     */
    public void stop() {
        mProvider.stop_impl();
    }

    @Override
    /**
     * Rewind playback
     */
    public void skipToPrevious() {
        mProvider.skipToPrevious_impl();
    }

    @Override
    /**
     * Rewind playback
     */
    public void skipToNext() {
        mProvider.skipToNext_impl();
    }

    @Override
    public @NonNull PlaybackState getPlaybackState() {
        return mProvider.getPlaybackState_impl();
    }
@@ -791,7 +800,6 @@ public class MediaSession2 extends MediaPlayerBase {
     * @throws IllegalArgumentException when either the listener or handler is {@code null}.
     */
    // TODO(jaewan): Can handler be null? Follow API guideline after it's finalized.
    @Override
    public void addPlaybackListener(@NonNull PlaybackListener listener, @NonNull Handler handler) {
        mProvider.addPlaybackListener_impl(listener, handler);
    }
@@ -802,7 +810,6 @@ public class MediaSession2 extends MediaPlayerBase {
     * @param listener the listener to be removed
     * @throws IllegalArgumentException if the listener is {@code null}.
     */
    @Override
    public void removePlaybackListener(PlaybackListener listener) {
        mProvider.removePlaybackListener_impl(listener);
    }
+9 −2
Original line number Diff line number Diff line
@@ -16,13 +16,20 @@

package android.media.update;

import android.media.MediaPlayerBase;
import android.media.SessionToken;
import android.media.session.PlaybackState;
import android.os.Handler;

/**
 * @hide
 */
public interface MediaController2Provider extends MediaPlayerBaseProvider {
    void release_impl();
public interface MediaController2Provider extends TransportControlProvider {
    void close_impl();
    SessionToken getSessionToken_impl();
    boolean isConnected_impl();

    PlaybackState getPlaybackState_impl();
    void addPlaybackListener_impl(MediaPlayerBase.PlaybackListener listener, Handler handler);
    void removePlaybackListener_impl(MediaPlayerBase.PlaybackListener listener);
}
+4 −1
Original line number Diff line number Diff line
@@ -20,13 +20,16 @@ import android.media.MediaPlayerBase;
import android.media.MediaSession2.CommandButton;
import android.media.MediaSession2.ControllerInfo;
import android.media.SessionToken;
import android.media.session.PlaybackState;
import android.os.Handler;

import java.util.List;

/**
 * @hide
 */
public interface MediaSession2Provider extends MediaPlayerBaseProvider {
public interface MediaSession2Provider extends TransportControlProvider {
    void close_impl();
    void setPlayer_impl(MediaPlayerBase player) throws IllegalArgumentException;
    MediaPlayerBase getPlayer_impl();
    SessionToken getToken_impl();
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ import android.os.Handler;
/**
 * @hide
 */
public interface MediaPlayerBaseProvider {
// TODO(jaewan): SystemApi
public interface TransportControlProvider {
    void play_impl();
    void pause_impl();
    void stop_impl();
Loading