diff options
| author | 2018-03-13 12:03:55 +0000 | |
|---|---|---|
| committer | 2018-03-13 12:03:55 +0000 | |
| commit | 15d3ba624c07be0afdaa56db2ca5e6fe852418e4 (patch) | |
| tree | 99af16e5f522d5c23d0576ea76a4c6640c1dd272 | |
| parent | f0927b0726f2a900cba03fdc6e7976754ed8618a (diff) | |
| parent | c006dc2a8517f70a8f8f54047b5aa7cc0c4eb5ac (diff) | |
Merge "MediaSession2: Replace PlaybackState2" into pi-dev
8 files changed, 29 insertions, 300 deletions
diff --git a/media/java/android/media/MediaController2.java b/media/java/android/media/MediaController2.java index 30b7f70ccf3b..b51c662539cf 100644 --- a/media/java/android/media/MediaController2.java +++ b/media/java/android/media/MediaController2.java @@ -156,17 +156,6 @@ public class MediaController2 implements AutoCloseable { @NonNull List<MediaItem2> playlist) { } /** - * Called when the playback state is changed. - * - * @param controller the controller for this event - * @param state latest playback state - * @hide - */ - // TODO(jaewan): Remove (b/73971431) - public void onPlaybackStateChanged(@NonNull MediaController2 controller, - @NonNull PlaybackState2 state) { } - - /** * Called when the player state is changed. * * @param controller the controller for this event @@ -647,20 +636,6 @@ public class MediaController2 implements AutoCloseable { } /** - * Get the lastly cached {@link PlaybackState2} from - * {@link ControllerCallback#onPlaybackStateChanged(MediaController2, PlaybackState2)}. - * <p> - * It may return {@code null} before the first callback or session has sent {@code null} - * playback state. - * - * @return a playback state. Can be {@code null} - * @hide - */ - public @Nullable PlaybackState2 getPlaybackState() { - return mProvider.getPlaybackState_impl(); - } - - /** * Get the lastly cached player state from * {@link ControllerCallback#onPlayerStateChanged(MediaController2, int)}. * diff --git a/media/java/android/media/MediaSession2.java b/media/java/android/media/MediaSession2.java index ddecb95c6528..e60c5f9b3b8c 100644 --- a/media/java/android/media/MediaSession2.java +++ b/media/java/android/media/MediaSession2.java @@ -16,6 +16,8 @@ package android.media; +import static android.media.MediaPlayerBase.PLAYER_STATE_IDLE; + import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; @@ -1639,13 +1641,36 @@ public class MediaSession2 implements AutoCloseable { } /** - * Return the {@link PlaybackState2} from the player. + * Get the player state. + * + * @return player state + * @hide + */ + public @PlayerState int getPlayerState() { + // TODO(jaewan): implement this (b/74578458) + return PLAYER_STATE_IDLE; + } + + /** + * Get the current position. * - * @return playback state + * @return position * @hide */ - public PlaybackState2 getPlaybackState() { - return mProvider.getPlaybackState_impl(); + public long getCurrentPosition() { + // TODO(jaewan): implement this (b/74578458) + return -1; + } + + /** + * Get the buffered position. + * + * @return buffered position + * @hide + */ + public long getBufferedPosition() { + // TODO(jaewan): implement this (b/74578458) + return -1; } /** diff --git a/media/java/android/media/PlaybackState2.java b/media/java/android/media/PlaybackState2.java deleted file mode 100644 index afc2bfa2f9a1..000000000000 --- a/media/java/android/media/PlaybackState2.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media; - -import android.annotation.IntDef; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.content.Context; -import android.media.update.ApiLoader; -import android.media.update.PlaybackState2Provider; -import android.os.Bundle; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Playback state for a {@link MediaPlayerBase}, to be shared between {@link MediaSession2} and - * {@link MediaController2}. This includes a playback state {@link #STATE_PLAYING}, - * the current playback position and extra. - * @hide - */ -// TODO(jaewan): Remove this (b/73971431) -public final class PlaybackState2 { - // Similar to the PlaybackState with following changes - // - Not implement Parcelable and added from/toBundle() - // - Removed playback state that doesn't match with the MediaPlayer2 - // Full list should be finalized when the MediaPlayer2 has getter for the playback state. - // Here's table for the MP2 state and PlaybackState2.State. - // +----------------------------------------+----------------------------------------+ - // | MediaPlayer2 state | Matching PlaybackState2.State | - // | (Names are from MP2' Javadoc) | | - // +----------------------------------------+----------------------------------------+ - // | Idle: Just finished creating MP2 | STATE_NONE | - // | or reset() is called | | - // +----------------------------------------+----------------------------------------+ - // | Initialized: setDataSource/Playlist | N/A (Session/Controller don't | - // | | differentiate with Prepared) | - // +----------------------------------------+----------------------------------------+ - // | Prepared: Prepared after initialized | STATE_PAUSED | - // +----------------------------------------+----------------------------------------+ - // | Started: Started playback | STATE_PLAYING | - // +----------------------------------------+----------------------------------------+ - // | Paused: Paused playback | STATE_PAUSED | - // +----------------------------------------+----------------------------------------+ - // | PlaybackCompleted: Playback is done | STATE_PAUSED | - // +----------------------------------------+----------------------------------------+ - // | Stopped: MP2.stop() is called. | STATE_STOPPED | - // | prepare() is needed to play again | | - // | (Seemingly the same as initialized | | - // | because cannot set data source | | - // | after this) | | - // +----------------------------------------+----------------------------------------+ - // | Error: an API is called in a state | STATE_ERROR | - // | that the API isn't supported | | - // +----------------------------------------+----------------------------------------+ - // | End: MP2.close() is called to release | N/A (MediaSession will be gone) | - // | MP2. Cannot be reused anymore | | - // +----------------------------------------+----------------------------------------+ - // | Started, but | STATE_BUFFERING | - // | EventCallback.onBufferingUpdate() | | - // +----------------------------------------+----------------------------------------+ - // - Removed actions and custom actions. - // - Removed error string - // - Repeat mode / shuffle mode is now in the PlaylistParams - /** - * @hide - */ - @IntDef({STATE_NONE, STATE_STOPPED, STATE_PAUSED, STATE_PLAYING, STATE_BUFFERING, STATE_ERROR}) - @Retention(RetentionPolicy.SOURCE) - public @interface State {} - - /** - * This is the default playback state and indicates that no media has been - * added yet, or the performer has been reset and has no content to play. - */ - public final static int STATE_NONE = 0; - - /** - * State indicating this item is currently stopped. - */ - public final static int STATE_STOPPED = 1; - - /** - * State indicating this item is currently paused. - */ - public final static int STATE_PAUSED = 2; - - /** - * State indicating this item is currently playing. - */ - public final static int STATE_PLAYING = 3; - - /** - * State indicating this item is currently buffering and will begin playing - * when enough data has buffered. - */ - public final static int STATE_BUFFERING = 4; - - /** - * State indicating this item is currently in an error state. - */ - public final static int STATE_ERROR = 5; - - /** - * Use this value for the position to indicate the position is not known. - */ - public final static long PLAYBACK_POSITION_UNKNOWN = -1; - - private final PlaybackState2Provider mProvider; - - public PlaybackState2(@NonNull Context context, int state, long position, long updateTime, - float speed, long bufferedPosition, long activeItemId) { - mProvider = ApiLoader.getProvider(context).createPlaybackState2(context, this, state, - position, updateTime, speed, bufferedPosition, activeItemId); - } - - @Override - public String toString() { - return mProvider.toString_impl(); - } - - /** - * Get the current state of playback. One of the following: - * <ul> - * <li> {@link PlaybackState2#STATE_NONE}</li> - * <li> {@link PlaybackState2#STATE_STOPPED}</li> - * <li> {@link PlaybackState2#STATE_PAUSED}</li> - * <li> {@link PlaybackState2#STATE_PLAYING}</li> - * <li> {@link PlaybackState2#STATE_BUFFERING}</li> - * <li> {@link PlaybackState2#STATE_ERROR}</li> - * </ul> - */ - @State - public int getState() { - return mProvider.getState_impl(); - } - - /** - * Get the current playback position in ms. - */ - public long getPosition() { - return mProvider.getPosition_impl(); - } - - /** - * Get the current buffered position in ms. This is the farthest playback - * point that can be reached from the current position using only buffered - * content. - */ - public long getBufferedPosition() { - return mProvider.getBufferedPosition_impl(); - } - - /** - * Get the current playback speed as a multiple of normal playback. This - * should be negative when rewinding. A value of 1 means normal playback and - * 0 means paused. - * - * @return The current speed of playback. - */ - public float getPlaybackSpeed() { - return mProvider.getPlaybackSpeed_impl(); - } - - /** - * Get the elapsed real time at which position was last updated. If the - * position has never been set this will return 0; - * - * @return The last time the position was updated. - */ - public long getLastPositionUpdateTime() { - return mProvider.getLastPositionUpdateTime_impl(); - } - - /** - * Get the id of the currently active item in the playlist. - * - * @return The id of the currently active item in the queue - */ - public long getCurrentPlaylistItemIndex() { - return mProvider.getCurrentPlaylistItemIndex_impl(); - } - - /** - * Returns this object as a bundle to share between processes. - */ - public @NonNull Bundle toBundle() { - return mProvider.toBundle_impl(); - } - - /** - * Creates an instance from a bundle which is previously created by {@link #toBundle()}. - * - * @param context context - * @param bundle A bundle created by {@link #toBundle()}. - * @return A new {@link PlaybackState2} instance. Returns {@code null} if the given - * {@param bundle} is null, or if the {@param bundle} has no playback state parameters. - */ - public @Nullable static PlaybackState2 fromBundle(@NonNull Context context, - @Nullable Bundle bundle) { - return ApiLoader.getProvider(context).fromBundle_PlaybackState2(context, bundle); - } -} diff --git a/media/java/android/media/update/MediaController2Provider.java b/media/java/android/media/update/MediaController2Provider.java index c48f336e832d..55672b68de7a 100644 --- a/media/java/android/media/update/MediaController2Provider.java +++ b/media/java/android/media/update/MediaController2Provider.java @@ -16,7 +16,6 @@ package android.media.update; -import android.annotation.NonNull; import android.app.PendingIntent; import android.media.AudioAttributes; import android.media.MediaController2.PlaybackInfo; @@ -24,7 +23,6 @@ import android.media.MediaItem2; import android.media.MediaMetadata2; import android.media.MediaSession2.Command; import android.media.MediaSession2.PlaylistParams; -import android.media.PlaybackState2; import android.media.Rating2; import android.media.SessionToken2; import android.net.Uri; @@ -69,7 +67,6 @@ public interface MediaController2Provider extends TransportControlProvider { PlaylistParams getPlaylistParams_impl(); void setPlaylistParams_impl(PlaylistParams params); - PlaybackState2 getPlaybackState_impl(); int getPlayerState_impl(); long getPosition_impl(); float getPlaybackSpeed_impl(); diff --git a/media/java/android/media/update/MediaSessionService2Provider.java b/media/java/android/media/update/MediaSessionService2Provider.java index 8697e70634ca..5eb625464276 100644 --- a/media/java/android/media/update/MediaSessionService2Provider.java +++ b/media/java/android/media/update/MediaSessionService2Provider.java @@ -20,7 +20,6 @@ import android.app.Notification; import android.content.Intent; import android.media.MediaSession2; import android.media.MediaSessionService2.MediaNotification; -import android.media.PlaybackState2; import android.os.IBinder; /** diff --git a/media/java/android/media/update/PlaybackState2Provider.java b/media/java/android/media/update/PlaybackState2Provider.java deleted file mode 100644 index 66b8fa53974b..000000000000 --- a/media/java/android/media/update/PlaybackState2Provider.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.update; - -import android.os.Bundle; - -/** - * @hide - */ -public interface PlaybackState2Provider { - String toString_impl(); - - int getState_impl(); - - long getPosition_impl(); - - long getBufferedPosition_impl(); - - float getPlaybackSpeed_impl(); - - long getLastPositionUpdateTime_impl(); - - long getCurrentPlaylistItemIndex_impl(); - - Bundle toBundle_impl(); -} diff --git a/media/java/android/media/update/StaticProvider.java b/media/java/android/media/update/StaticProvider.java index 53ced9cd3246..f78d4a48f1ac 100644 --- a/media/java/android/media/update/StaticProvider.java +++ b/media/java/android/media/update/StaticProvider.java @@ -19,7 +19,6 @@ package android.media.update; import android.annotation.Nullable; import android.app.Notification; import android.content.Context; -import android.media.DataSourceDesc; import android.media.MediaBrowser2; import android.media.MediaBrowser2.BrowserCallback; import android.media.MediaController2; @@ -32,12 +31,10 @@ import android.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessio import android.media.MediaMetadata2; import android.media.MediaPlaylistAgent; import android.media.MediaSession2; -import android.media.MediaSession2.CommandButton.Builder; import android.media.MediaSession2.PlaylistParams; import android.media.MediaSession2.SessionCallback; import android.media.MediaSessionService2; import android.media.MediaSessionService2.MediaNotification; -import android.media.PlaybackState2; import android.media.Rating2; import android.media.SessionToken2; import android.media.VolumeProvider2; @@ -132,10 +129,6 @@ public interface StaticProvider { Rating2 newStarRating_Rating2(Context context, int starRatingStyle, float starRating); Rating2 newPercentageRating_Rating2(Context context, float percent); - PlaybackState2Provider createPlaybackState2(Context context, PlaybackState2 instance, int state, - long position, long updateTime, float speed, long bufferedPosition, long activeItemId); - PlaybackState2 fromBundle_PlaybackState2(Context context, Bundle bundle); - MediaPlaylistAgentProvider createMediaPlaylistAgent(Context context, MediaPlaylistAgent instance); } diff --git a/media/java/android/media/update/TransportControlProvider.java b/media/java/android/media/update/TransportControlProvider.java index a3fb0716624c..eb03ca7fc0e5 100644 --- a/media/java/android/media/update/TransportControlProvider.java +++ b/media/java/android/media/update/TransportControlProvider.java @@ -17,7 +17,6 @@ package android.media.update; import android.media.MediaItem2; -import android.media.PlaybackState2; /** * @hide @@ -34,6 +33,4 @@ public interface TransportControlProvider { void rewind_impl(); void seekTo_impl(long pos); void skipToPlaylistItem_impl(MediaItem2 item); - - PlaybackState2 getPlaybackState_impl(); } |