diff options
Diffstat (limited to 'media/java/android/media/MediaMetadata.java')
-rw-r--r-- | media/java/android/media/MediaMetadata.java | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/media/java/android/media/MediaMetadata.java b/media/java/android/media/MediaMetadata.java index 9ebf10f52728..bdc0fda6aca3 100644 --- a/media/java/android/media/MediaMetadata.java +++ b/media/java/android/media/MediaMetadata.java @@ -49,7 +49,7 @@ public final class MediaMetadata implements Parcelable { METADATA_KEY_DATE, METADATA_KEY_GENRE, METADATA_KEY_ALBUM_ARTIST, METADATA_KEY_ART_URI, METADATA_KEY_ALBUM_ART_URI, METADATA_KEY_DISPLAY_TITLE, METADATA_KEY_DISPLAY_SUBTITLE, METADATA_KEY_DISPLAY_DESCRIPTION, METADATA_KEY_DISPLAY_ICON_URI, - METADATA_KEY_MEDIA_ID}) + METADATA_KEY_MEDIA_ID, METADATA_KEY_MEDIA_URI}) @Retention(RetentionPolicy.SOURCE) public @interface TextKey {} @@ -57,7 +57,7 @@ public final class MediaMetadata implements Parcelable { * @hide */ @StringDef({METADATA_KEY_DURATION, METADATA_KEY_YEAR, METADATA_KEY_TRACK_NUMBER, - METADATA_KEY_NUM_TRACKS, METADATA_KEY_DISC_NUMBER}) + METADATA_KEY_NUM_TRACKS, METADATA_KEY_DISC_NUMBER, METADATA_KEY_BT_FOLDER_TYPE}) @Retention(RetentionPolicy.SOURCE) public @interface LongKey {} @@ -269,6 +269,31 @@ public final class MediaMetadata implements Parcelable { */ public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID"; + /** + * A Uri formatted String representing the content. This value is specific to the + * service providing the content. It may be used with + * {@link MediaController.TransportControls#playFromUri(Uri, Bundle)} + * to initiate playback when provided by a {@link MediaBrowser} connected to + * the same app. + */ + public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI"; + + /** + * The bluetooth folder type of the media specified in the section 6.10.2.2 of the Bluetooth + * AVRCP 1.5. It should be one of the following: + * <ul> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_MIXED}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_TITLES}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_ALBUMS}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_ARTISTS}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_GENRES}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_PLAYLISTS}</li> + * <li>{@link MediaDescription#BT_FOLDER_TYPE_YEARS}</li> + * </ul> + */ + public static final String METADATA_KEY_BT_FOLDER_TYPE + = "android.media.metadata.BT_FOLDER_TYPE"; + private static final @TextKey String[] PREFERRED_DESCRIPTION_ORDER = { METADATA_KEY_TITLE, METADATA_KEY_ARTIST, @@ -326,6 +351,9 @@ public final class MediaMetadata implements Parcelable { METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_DESCRIPTION, METADATA_TYPE_TEXT); METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_ICON, METADATA_TYPE_BITMAP); METADATA_KEYS_TYPE.put(METADATA_KEY_DISPLAY_ICON_URI, METADATA_TYPE_TEXT); + METADATA_KEYS_TYPE.put(METADATA_KEY_BT_FOLDER_TYPE, METADATA_TYPE_LONG); + METADATA_KEYS_TYPE.put(METADATA_KEY_MEDIA_ID, METADATA_TYPE_TEXT); + METADATA_KEYS_TYPE.put(METADATA_KEY_MEDIA_URI, METADATA_TYPE_TEXT); } private static final SparseArray<String> EDITOR_KEY_MAPPING; @@ -537,6 +565,12 @@ public final class MediaMetadata implements Parcelable { } } + Uri mediaUri = null; + String mediaUriStr = getString(METADATA_KEY_MEDIA_URI); + if (!TextUtils.isEmpty(mediaUriStr)) { + mediaUri = Uri.parse(mediaUriStr); + } + MediaDescription.Builder bob = new MediaDescription.Builder(); bob.setMediaId(mediaId); bob.setTitle(text[0]); @@ -544,6 +578,13 @@ public final class MediaMetadata implements Parcelable { bob.setDescription(text[2]); bob.setIconBitmap(icon); bob.setIconUri(iconUri); + bob.setMediaUri(mediaUri); + if (mBundle.containsKey(METADATA_KEY_BT_FOLDER_TYPE)) { + Bundle bundle = new Bundle(); + bundle.putLong(MediaDescription.EXTRA_BT_FOLDER_TYPE, + getLong(METADATA_KEY_BT_FOLDER_TYPE)); + bob.setExtras(bundle); + } mDescription = bob.build(); return mDescription; @@ -763,8 +804,9 @@ public final class MediaMetadata implements Parcelable { * <li>{@link #METADATA_KEY_DISPLAY_ICON}</li> * </ul> * <p> - * Large bitmaps may be scaled down by the system. To pass full - * resolution images {@link Uri Uris} should be used with + * Large bitmaps may be scaled down by the system when + * {@link android.media.session.MediaSession#setMetadata} is called. + * To pass full resolution images {@link Uri Uris} should be used with * {@link #putString}. * * @param key The key for referencing this value |