OSDN Git Service

MediaSession2: Implement add/remove/replacePlaylistItem()
authorJaewan Kim <jaewan@google.com>
Mon, 12 Mar 2018 09:04:17 +0000 (18:04 +0900)
committerJaewan Kim <jaewan@google.com>
Tue, 13 Mar 2018 02:59:18 +0000 (11:59 +0900)
Bug: 73149584
Test: Run CTS with MediaComponents/runcts.sh
Change-Id: I29804f52eaca45de21fd66634e4eeee2c72a9a25

media/java/android/media/MediaController2.java
media/java/android/media/MediaItem2.java
media/java/android/media/MediaSession2.java
media/java/android/media/update/MediaItem2Provider.java
media/java/android/media/update/MediaSession2Provider.java

index 4b140d7..30b7f70 100644 (file)
@@ -790,7 +790,7 @@ public class MediaController2 implements AutoCloseable {
     }
 
     /**
-     * Returns the lastly cached playlist playlist metadata either from
+     * Gets the lastly cached playlist playlist metadata either from
      * {@link ControllerCallback#onPlaylistMetadataChanged(
      * MediaController2, MediaPlaylistAgent, MediaMetadata2)} or
      * {@link ControllerCallback#onPlaylistChanged(
@@ -814,15 +814,14 @@ public class MediaController2 implements AutoCloseable {
     }
 
     /**
-     * Inserts the media item to the play list at position index.
+     * Inserts the media item to the playlist at position index.
      * <p>
      * This will not change the currently playing media item.
-     * If index is less than or equal to the current index of the play list,
-     * the current index of the play list will be incremented correspondingly.
+     * If index is less than or equal to the current index of the playlist,
+     * the current index of the playlist will be incremented correspondingly.
      *
      * @param index the index you want to add
      * @param item the media item you want to add
-     * @throws IndexOutOfBoundsException if index is outside play list range
      */
     public void addPlaylistItem(int index, @NonNull MediaItem2 item) {
         mProvider.addPlaylistItem_impl(index, item);
@@ -833,6 +832,8 @@ public class MediaController2 implements AutoCloseable {
      *<p>
      * If the item is the currently playing item of the playlist, current playback
      * will be stopped and playback moves to next source in the list.
+     *
+     * @param item the media item you want to add
      */
     public void removePlaylistItem(@NonNull MediaItem2 item) {
         mProvider.removePlaylistItem_impl(item);
index 2db1392..b50c3e4 100644 (file)
@@ -65,6 +65,13 @@ public class MediaItem2 {
     }
 
     /**
+     * @hide
+     */
+    public MediaItem2Provider getProvider() {
+        return mProvider;
+    }
+
+    /**
      * Return this object as a bundle to share between processes.
      *
      * @return a new bundle instance
@@ -141,9 +148,7 @@ public class MediaItem2 {
 
     @Override
     public boolean equals(Object obj) {
-        // TODO(jaewan): Override this. MediaItem2 may have auto-generated srcId when the DSD isn't
-        //               set, and it should be compared for the equals.
-        return super.equals(obj);
+        return mProvider.equals_impl(obj);
     }
 
     /**
index a6c4ef7..ddecb95 100644 (file)
@@ -265,9 +265,6 @@ public class MediaSession2 implements AutoCloseable {
     /**
      * Command code for {@link MediaController2#getPlaylistMetadata()}. This will expose
      * metadata information to the controller.
-     * *
-     * Command code for {@link MediaController2#setPlaylist(List, MediaMetadata2)} and
-     * {@link MediaController2#updatePlaylistMetadata(MediaMetadata2)}.
      * <p>
      * Command would be sent directly to the playlist agent if the session doesn't reject the
      * request through the
@@ -1770,12 +1767,17 @@ public class MediaSession2 implements AutoCloseable {
         mProvider.skipToNextItem_impl();
     }
 
+    /**
+     * Gets the playlist metadata from the {@link MediaPlaylistAgent}.
+     *
+     * @return the playlist metadata
+     */
     public MediaMetadata2 getPlaylistMetadata() {
         return mProvider.getPlaylistMetadata_impl();
     }
 
     /**
-     * Add the media item to the play list at position index.
+     * Adds the media item to the playlist at position index.
      * <p>
      * This will not change the currently playing media item.
      * If index is less than or equal to the current index of the play list,
@@ -1783,26 +1785,25 @@ public class MediaSession2 implements AutoCloseable {
      *
      * @param index the index you want to add
      * @param item the media item you want to add
-     * @throws IndexOutOfBoundsException if index is outside play list range
      */
     public void addPlaylistItem(int index, @NonNull MediaItem2 item) {
         mProvider.addPlaylistItem_impl(index, item);
     }
 
     /**
-     * Remove the media item in the play list.
+     * Removes the media item in the playlist.
      * <p>
      * If the item is the currently playing item of the playlist, current playback
      * will be stopped and playback moves to next source in the list.
      *
-     * @throws IllegalArgumentException if the play list is null
+     * @param item the media item you want to add
      */
     public void removePlaylistItem(@NonNull MediaItem2 item) {
         mProvider.removePlaylistItem_impl(item);
     }
 
     /**
-     * Replace the media item at index in the playlist. This can be also used to update metadata of
+     * Replaces the media item at index in the playlist. This can be also used to update metadata of
      * an item.
      *
      * @param index the index of the item to replace
@@ -1822,6 +1823,11 @@ public class MediaSession2 implements AutoCloseable {
         return mProvider.getCurrentPlaylistItem_impl();
     }
 
+    /**
+     * Updates the playlist metadata to the {@link MediaPlaylistAgent}.
+     *
+     * @param metadata metadata of the playlist
+     */
     public void updatePlaylistMetadata(@Nullable MediaMetadata2 metadata) {
         mProvider.updatePlaylistMetadata_impl(metadata);
     }
index b494f9e..47db22f 100644 (file)
@@ -35,6 +35,7 @@ public interface MediaItem2Provider {
     MediaMetadata2 getMetadata_impl();
     String getMediaId_impl();
     DataSourceDesc getDataSourceDesc_impl();
+    boolean equals_impl(Object obj);
 
     interface BuilderProvider {
         Builder setMediaId_impl(String mediaId);
index 3ba689a..84ea369 100644 (file)
@@ -61,7 +61,6 @@ public interface MediaSession2Provider extends TransportControlProvider {
     void sendCustomCommand_impl(Command command, Bundle args);
     void addPlaylistItem_impl(int index, MediaItem2 item);
     void removePlaylistItem_impl(MediaItem2 item);
-    void editPlaylistItem_impl(MediaItem2 item);
     void replacePlaylistItem_impl(int index, MediaItem2 item);
     List<MediaItem2> getPlaylist_impl();
     void setPlaylist_impl(List<MediaItem2> list, MediaMetadata2 metadata);