Loading media/java/android/media/MediaController2.java +8 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading @@ -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() { } Loading Loading @@ -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(); } /** Loading @@ -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(); } Loading @@ -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); } Loading @@ -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); } Loading media/java/android/media/MediaSession2.java +24 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -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 Loading Loading @@ -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 */ Loading Loading @@ -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(); } Loading @@ -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); } Loading @@ -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); } Loading media/java/android/media/update/MediaController2Provider.java +9 −2 Original line number Diff line number Diff line Loading @@ -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); } media/java/android/media/update/MediaSession2Provider.java +4 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading media/java/android/media/update/MediaPlayerBaseProvider.java→media/java/android/media/update/TransportControlProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
media/java/android/media/MediaController2.java +8 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading @@ -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() { } Loading Loading @@ -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(); } /** Loading @@ -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(); } Loading @@ -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); } Loading @@ -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); } Loading
media/java/android/media/MediaSession2.java +24 −17 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -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 Loading Loading @@ -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 */ Loading Loading @@ -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(); } Loading @@ -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); } Loading @@ -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); } Loading
media/java/android/media/update/MediaController2Provider.java +9 −2 Original line number Diff line number Diff line Loading @@ -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); }
media/java/android/media/update/MediaSession2Provider.java +4 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading
media/java/android/media/update/MediaPlayerBaseProvider.java→media/java/android/media/update/TransportControlProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -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