diff options
| author | 2018-03-07 15:16:55 +0900 | |
|---|---|---|
| committer | 2018-03-07 16:31:56 +0900 | |
| commit | 87086f59ad7263facde0d17404c70e5311cde29c (patch) | |
| tree | 46bc982a6c00eeec815ee77ae963a32e10380c3c | |
| parent | 4d4a8c95ae9cb49413aa13ec19dcef5068ea710f (diff) | |
MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
Added callback for session to know the currently playing media item has
changed.
Note that the callback is called in response to the
MediaPlayerBase#PlayerEventCallback#onCurrentDataSourceChanged(mpb, dsd
is called. Session will translate dsd to the media item and calls
onCurrentMediaItemChanged().
Following changes are also included
- Removed MediaPlaylistController#getCurrentPlaylistItem(),
because currently playing item is managed by the MediaPlayerBase.
- Renamed ControllerCallback#onCurrentPlaylistItemChanged() to the
ControllerCallback#onCurrentMediaItemChanged(), to make it more
obvious that the event is from MediaPlayerBase, not
MediaPlaylistController.
- Added SessionCallback#onCurrentMediaItemChanged()
Bug: 64098437
Test: Run MediaComponents test
Change-Id: I78b124a7da0f968b097b2576507b9a73e36081ec
| -rw-r--r-- | api/current.txt | 8 | ||||
| -rw-r--r-- | media/java/android/media/MediaController2.java | 13 | ||||
| -rw-r--r-- | media/java/android/media/MediaPlaylistController.java | 6 | ||||
| -rw-r--r-- | media/java/android/media/MediaSession2.java | 17 |
4 files changed, 25 insertions, 19 deletions
diff --git a/api/current.txt b/api/current.txt index e48d0e37bfc9..9c42a24442b8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -23357,7 +23357,7 @@ package android.media { method public void close(); method public void fastForward(); method public long getBufferedPosition(); - method public android.media.MediaItem2 getCurrentPlaylistItem(); + method public android.media.MediaItem2 getCurrentMediaItem(); method public android.media.MediaController2.PlaybackInfo getPlaybackInfo(); method public float getPlaybackSpeed(); method public int getPlayerState(); @@ -23403,7 +23403,7 @@ package android.media { method public void onAllowedCommandsChanged(android.media.MediaController2, android.media.MediaSession2.CommandGroup); method public void onBufferedPositionChanged(android.media.MediaController2, long); method public void onConnected(android.media.MediaController2, android.media.MediaSession2.CommandGroup); - method public void onCurrentPlaylistItemChanged(android.media.MediaController2, android.media.MediaItem2); + method public void onCurrentMediaItemChanged(android.media.MediaController2, android.media.MediaItem2); method public void onCustomCommand(android.media.MediaController2, android.media.MediaSession2.Command, android.os.Bundle, android.os.ResultReceiver); method public void onCustomLayoutChanged(android.media.MediaController2, java.util.List<android.media.MediaSession2.CommandButton>); method public void onDisconnected(android.media.MediaController2); @@ -24543,7 +24543,6 @@ package android.media { public abstract interface MediaPlaylistController { method public abstract void addPlaylistItem(int, android.media.MediaItem2); - method public abstract android.media.MediaItem2 getCurrentPlaylistItem(); method public abstract java.util.List<android.media.MediaItem2> getPlaylist(); method public abstract android.media.MediaMetadata2 getPlaylistMetadata(); method public abstract int getRepeatMode(); @@ -24856,7 +24855,7 @@ package android.media { method public void close(); method public void fastForward(); method public java.util.List<android.media.MediaSession2.ControllerInfo> getConnectedControllers(); - method public android.media.MediaItem2 getCurrentPlaylistItem(); + method public android.media.MediaItem2 getCurrentMediaItem(); method public android.media.MediaPlaylistController getMediaPlaylistController(); method public float getPlaybackSpeed(); method public android.media.MediaPlayerBase getPlayer(); @@ -24999,6 +24998,7 @@ package android.media { method public void onBufferingStateChanged(android.media.MediaSession2, android.media.MediaPlayerBase, android.media.MediaItem2, int); method public boolean onCommandRequest(android.media.MediaSession2, android.media.MediaSession2.ControllerInfo, android.media.MediaSession2.Command); method public android.media.MediaSession2.CommandGroup onConnect(android.media.MediaSession2, android.media.MediaSession2.ControllerInfo); + method public void onCurrentMediaItemChanged(android.media.MediaSession2, android.media.MediaPlayerBase, android.media.MediaItem2); method public void onCustomCommand(android.media.MediaSession2, android.media.MediaSession2.ControllerInfo, android.media.MediaSession2.Command, android.os.Bundle, android.os.ResultReceiver); method public void onDisconnected(android.media.MediaSession2, android.media.MediaSession2.ControllerInfo); method public void onMediaPrepared(android.media.MediaSession2, android.media.MediaPlayerBase, android.media.MediaItem2); diff --git a/media/java/android/media/MediaController2.java b/media/java/android/media/MediaController2.java index 25188fb1ba3c..f619bb9bbc08 100644 --- a/media/java/android/media/MediaController2.java +++ b/media/java/android/media/MediaController2.java @@ -146,7 +146,7 @@ public class MediaController2 implements AutoCloseable, MediaPlaylistController * @param playlist A new playlist set by the session. * @see #onPositionChanged(MediaController2, long, long) * @see #onBufferedPositionChanged(MediaController2, long) - * @see #onCurrentPlaylistItemChanged(MediaController2, MediaItem2) + * @see #onCurrentMediaItemChanged(MediaController2, MediaItem2) * @hide */ // TODO(jaewan): Remove (b/74174728) @@ -211,7 +211,7 @@ public class MediaController2 implements AutoCloseable, MediaPlaylistController @Nullable Bundle extras) { } /** - * Called when the player's current playing item is changed + * Called when the player's currently playing item is changed * <p> * When it's called, you should invalidate previous playback information and wait for later * callbacks. @@ -220,9 +220,8 @@ public class MediaController2 implements AutoCloseable, MediaPlaylistController * @param item new item * @see #onPositionChanged(MediaController2, long, long) * @see #onBufferedPositionChanged(MediaController2, long) - * @see #onCurrentPlaylistItemChanged(MediaController2, MediaItem2) */ - public void onCurrentPlaylistItemChanged(@NonNull MediaController2 controller, + public void onCurrentMediaItemChanged(@NonNull MediaController2 controller, @NonNull MediaItem2 item) { } /** @@ -808,12 +807,12 @@ public class MediaController2 implements AutoCloseable, MediaPlaylistController /** * Get the lastly cached current item from - * {@link ControllerCallback#onCurrentPlaylistItemChanged(MediaController2, MediaItem2)}. + * {@link ControllerCallback#onCurrentMediaItemChanged(MediaController2, MediaItem2)}. * * @return index of the current item */ - @Override - public MediaItem2 getCurrentPlaylistItem() { + public MediaItem2 getCurrentMediaItem() { + // TODO(jaewan): Rename provider API return mProvider.getCurrentPlaylistItem_impl(); } diff --git a/media/java/android/media/MediaPlaylistController.java b/media/java/android/media/MediaPlaylistController.java index 1ad56178b757..63276a47e91d 100644 --- a/media/java/android/media/MediaPlaylistController.java +++ b/media/java/android/media/MediaPlaylistController.java @@ -213,12 +213,6 @@ public interface MediaPlaylistController { void replacePlaylistItem(int index, @NonNull MediaItem2 item); /** - * Returns the current media item. - * @return the current media item, or null if none is set, or none available to play. - */ - MediaItem2 getCurrentPlaylistItem(); - - /** * Skips to the the media item, and plays from it. * * @param item media item to start playing from diff --git a/media/java/android/media/MediaSession2.java b/media/java/android/media/MediaSession2.java index b75785abef76..4d7f85f00f61 100644 --- a/media/java/android/media/MediaSession2.java +++ b/media/java/android/media/MediaSession2.java @@ -779,6 +779,19 @@ public class MediaSession2 implements AutoCloseable, MediaPlaylistController { @NonNull ControllerInfo controller, @NonNull Uri uri, @Nullable Bundle extras) { } /** + * Called when the player's current playing item is changed + * <p> + * When it's called, you should invalidate previous playback information and wait for later + * callbacks. + * + * @param session the controller for this event + * @param mpb the player for this event + * @param item new item + */ + public void onCurrentMediaItemChanged(@NonNull MediaSession2 session, + @NonNull MediaPlayerBase mpb, @NonNull MediaItem2 item) { } + + /** * Called when the player is <i>prepared</i>, i.e. it is ready to play the content * referenced by the given data source. * @param session the session for this event @@ -1753,8 +1766,8 @@ public class MediaSession2 implements AutoCloseable, MediaPlaylistController { * * @return currently playing media item */ - @Override - public MediaItem2 getCurrentPlaylistItem() { + public MediaItem2 getCurrentMediaItem() { + // TODO(jaewan): Rename provider API return mProvider.getCurrentPlaylistItem_impl(); } |