OSDN Git Service

MediaSession2: Add playlist parameter supports
authorHyundo Moon <hdmoon@google.com>
Fri, 26 Jan 2018 11:33:57 +0000 (20:33 +0900)
committerHyundo Moon <hdmoon@google.com>
Fri, 26 Jan 2018 14:39:33 +0000 (23:39 +0900)
This CL adds following APIs:
 - MediaPlayerInterface.set/getPlaylistParams()
 - MediaSession2.set/getPlaylistParams()
 - MediaController2.setPlaylistParams()
 - ControllerCallback.onPlaylistParamsChanged()

Bug: 72537520
Test: Passed MediaSession2Test
Change-Id: I84ea00ee0876725af1c0e01ad50da15fdb222418

media/java/android/media/IMediaSession2Callback.aidl
media/java/android/media/MediaController2.java
media/java/android/media/MediaPlayerInterface.java
media/java/android/media/MediaSession2.java
media/java/android/media/update/MediaController2Provider.java
media/java/android/media/update/MediaSession2Provider.java

index eb02fa7..45d40e6 100644 (file)
@@ -30,6 +30,7 @@ import android.media.IMediaSession2;
  */
 oneway interface IMediaSession2Callback {
     void onPlaybackStateChanged(in Bundle state);
+    void onPlaylistParamsChanged(in Bundle params);
 
     /**
      * Called only when the controller is created with service's token.
index 6064ec4..e2d5c5d 100644 (file)
@@ -138,6 +138,13 @@ public class MediaController2 implements AutoCloseable {
          * @param state
          */
         public void onPlaybackStateChanged(@NonNull PlaybackState2 state) { }
+
+        /**
+         * Called when the playlist parameters are changed.
+         *
+         * @param params The new play list parameters.
+         */
+        public void onPlaylistParamsChanged(@NonNull PlaylistParams params) { }
     }
 
     /**
@@ -359,6 +366,17 @@ public class MediaController2 implements AutoCloseable {
     }
 
     /**
+     * Sets the {@link PlaylistParams} for the current play list. Repeat/shuffle mode and metadata
+     * for the list can be set by calling this method.
+     *
+     * @param params A {@link PlaylistParams} object to set.
+     * @throws IllegalArgumentException if given {@param param} is null.
+     */
+    public void setPlaylistParams(PlaylistParams params) {
+        mProvider.setPlaylistParams_impl(params);
+    }
+
+    /**
      * @hide
      */
     public void skipForward() {
index 5ff8a58..8bebed0 100644 (file)
@@ -52,6 +52,8 @@ public interface MediaPlayerInterface {
 
     void setPlaylist(List<MediaItem2> item, PlaylistParams param);
     void setCurrentPlaylistItem(int index);
+    void setPlaylistParams(PlaylistParams params);
+    PlaylistParams getPlaylistParams();
 
     /**
      * Add a {@link PlaybackListener} to be invoked when the playback state is changed.
index 8c499c8..6d1c3c8 100644 (file)
@@ -1264,4 +1264,23 @@ public class MediaSession2 implements AutoCloseable {
     public void setPlaylist(@NonNull List<MediaItem2> playlist, @NonNull PlaylistParams param) {
         mProvider.setPlaylist_impl(playlist, param);
     }
+
+    /**
+     * Sets the {@link PlaylistParams} for the current play list. Repeat/shuffle mode and metadata
+     * for the list can be set by calling this method.
+     *
+     * @param params A {@link PlaylistParams} object to set.
+     * @throws IllegalArgumentException if given {@param param} is null.
+     */
+    public void setPlaylistParams(PlaylistParams params) {
+        mProvider.setPlaylistParams_impl(params);
+    }
+
+    /**
+     * Returns the {@link PlaylistParams} for the current play list.
+     * Returns {@code null} if not set.
+     */
+    public PlaylistParams getPlaylistParams() {
+        return mProvider.getPlaylistParams_impl();
+    }
 }
index 8dfb892..cf35358 100644 (file)
@@ -61,5 +61,6 @@ public interface MediaController2Provider extends TransportControlProvider {
     void addPlaylistItem_impl(int index, MediaItem2 item);
 
     PlaylistParams getPlaylistParam_impl();
+    void setPlaylistParams_impl(PlaylistParams params);
     PlaybackState2 getPlaybackState_impl();
 }
index d340245..801bdeb 100644 (file)
@@ -51,6 +51,8 @@ public interface MediaSession2Provider extends TransportControlProvider {
             ResultReceiver receiver);
     void sendCustomCommand_impl(Command command, Bundle args);
     void setPlaylist_impl(List<MediaItem2> playlist, PlaylistParams param);
+    void setPlaylistParams_impl(PlaylistParams params);
+    PlaylistParams getPlaylistParams_impl();
 
     interface ControllerInfoProvider {
         String getPackageName_impl();