/*
 * 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.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.graphics.Bitmap;
import android.media.update.ApiLoader;
import android.media.update.MediaMetadata2Provider;
import android.net.Uri;
import android.os.Bundle;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Set;

@hide Contains metadata about an item, such as the title, artist, etc.
/** * @hide * Contains metadata about an item, such as the title, artist, etc. */
// New version of MediaMetadata with following changes // - Don't implement Parcelable for updatable support. // - Also support MediaDescription features. MediaDescription is deprecated instead because // it was insufficient for controller to display media contents. public final class MediaMetadata2 {
The metadata key for a CharSequence or String typed value to retrieve the information about the title of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the title of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
The metadata key for a CharSequence or String typed value to retrieve the information about the artist of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the artist of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
The metadata key for a Long typed value to retrieve the information about the duration of the media in ms. A negative duration indicates that the duration is unknown (or infinite).
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the * duration of the media in ms. A negative duration indicates that the duration is unknown * (or infinite). * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
The metadata key for a CharSequence or String typed value to retrieve the information about the album title for the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the album title for the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
The metadata key for a CharSequence or String typed value to retrieve the information about the author of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the author of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
The metadata key for a CharSequence or String typed value to retrieve the information about the writer of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the writer of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
The metadata key for a CharSequence or String typed value to retrieve the information about the composer of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the composer of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
The metadata key for a CharSequence or String typed value to retrieve the information about the compilation status of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the compilation status of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
The metadata key for a CharSequence or String typed value to retrieve the information about the date the media was created or published. The format is unspecified but RFC 3339 is recommended.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the date the media was created or published. * The format is unspecified but RFC 3339 is recommended. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
The metadata key for a Long typed value to retrieve the information about the year the media was created or published.
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the year * the media was created or published. * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
The metadata key for a CharSequence or String typed value to retrieve the information about the genre of the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the genre of the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
The metadata key for a Long typed value to retrieve the information about the track number for the media.
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the * track number for the media. * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
The metadata key for a Long typed value to retrieve the information about the number of tracks in the media's original source.
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the * number of tracks in the media's original source. * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
The metadata key for a Long typed value to retrieve the information about the disc number for the media's original source.
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the * disc number for the media's original source. * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
The metadata key for a CharSequence or String typed value to retrieve the information about the artist for the album of the media's original source.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the artist for the album of the media's original source. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
The metadata key for a Bitmap typed value to retrieve the information about the artwork for the media. The artwork should be relatively small and may be scaled down if it is too large. For higher resolution artwork, METADATA_KEY_ART_URI should be used instead.
See Also:
/** * The metadata key for a {@link Bitmap} typed value to retrieve the information about the * artwork for the media. * The artwork should be relatively small and may be scaled down if it is too large. * For higher resolution artwork, {@link #METADATA_KEY_ART_URI} should be used instead. * * @see Builder#putBitmap(String, Bitmap) * @see #getBitmap(String) */
public static final String METADATA_KEY_ART = "android.media.metadata.ART";
The metadata key for a CharSequence or String typed value to retrieve the information about Uri of the artwork for the media.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about Uri of the artwork for the media. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
The metadata key for a Bitmap typed value to retrieve the information about the artwork for the album of the media's original source. The artwork should be relatively small and may be scaled down if it is too large. For higher resolution artwork, METADATA_KEY_ALBUM_ART_URI should be used instead.
See Also:
/** * The metadata key for a {@link Bitmap} typed value to retrieve the information about the * artwork for the album of the media's original source. * The artwork should be relatively small and may be scaled down if it is too large. * For higher resolution artwork, {@link #METADATA_KEY_ALBUM_ART_URI} should be used instead. * * @see Builder#putBitmap(String, Bitmap) * @see #getBitmap(String) */
public static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
The metadata key for a CharSequence or String typed value to retrieve the information about the Uri of the artwork for the album of the media's original source.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the Uri of the artwork for the album of the media's original source. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
The metadata key for a Rating2 typed value to retrieve the information about the user's rating for the media.
See Also:
/** * The metadata key for a {@link Rating2} typed value to retrieve the information about the * user's rating for the media. * * @see Builder#putRating(String, Rating2) * @see #getRating(String) */
public static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
The metadata key for a Rating2 typed value to retrieve the information about the overall rating for the media.
See Also:
/** * The metadata key for a {@link Rating2} typed value to retrieve the information about the * overall rating for the media. * * @see Builder#putRating(String, Rating2) * @see #getRating(String) */
public static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
The metadata key for a CharSequence or String typed value to retrieve the information about the title that is suitable for display to the user. It will generally be the same as METADATA_KEY_TITLE but may differ for some formats. When displaying media described by this metadata, this should be preferred if present.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the title that is suitable for display to the user. * It will generally be the same as {@link #METADATA_KEY_TITLE} but may differ for some formats. * When displaying media described by this metadata, this should be preferred if present. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
The metadata key for a CharSequence or String typed value to retrieve the information about the subtitle that is suitable for display to the user. When displaying a second line for media described by this metadata, this should be preferred to other fields if present.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the subtitle that is suitable for display to the user. * When displaying a second line for media described by this metadata, this should be preferred * to other fields if present. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
The metadata key for a CharSequence or String typed value to retrieve the information about the description that is suitable for display to the user. When displaying more information for media described by this metadata, this should be preferred to other fields if present.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the description that is suitable for display to the user. * When displaying more information for media described by this metadata, * this should be preferred to other fields if present. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
The metadata key for a Bitmap typed value to retrieve the information about the icon or thumbnail that is suitable for display to the user. When displaying an icon for media described by this metadata, this should be preferred to other fields if present.

The icon should be relatively small and may be scaled down if it is too large. For higher resolution artwork, METADATA_KEY_DISPLAY_ICON_URI should be used instead.

See Also:
/** * The metadata key for a {@link Bitmap} typed value to retrieve the information about the icon * or thumbnail that is suitable for display to the user. * When displaying an icon for media described by this metadata, this should be preferred to * other fields if present. * <p> * The icon should be relatively small and may be scaled down if it is too large. * For higher resolution artwork, {@link #METADATA_KEY_DISPLAY_ICON_URI} should be used instead. * * @see Builder#putBitmap(String, Bitmap) * @see #getBitmap(String) */
public static final String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
The metadata key for a CharSequence or String typed value to retrieve the information about the Uri of icon or thumbnail that is suitable for display to the user. When displaying more information for media described by this metadata, the display description should be preferred to other fields when present.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the Uri of icon or thumbnail that is suitable for display to the user. * When displaying more information for media described by this metadata, the * display description should be preferred to other fields when present. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
The metadata key for a CharSequence or String typed value to retrieve the information about the media ID of the content. This value is specific to the service providing the content. If used, this should be a persistent unique key for the underlying content. It may be used with MediaController2.playFromMediaId(String, Bundle) to initiate playback when provided by a MediaBrowser2 connected to the same app.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the media ID of the content. This value is specific to the * service providing the content. If used, this should be a persistent * unique key for the underlying content. It may be used with * {@link MediaController2#playFromMediaId(String, Bundle)} * to initiate playback when provided by a {@link MediaBrowser2} connected to * the same app. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
The metadata key for a CharSequence or String typed value to retrieve the information about the Uri of the content. This value is specific to the service providing the content. It may be used with MediaController2.playFromUri(Uri, Bundle) to initiate playback when provided by a MediaBrowser2 connected to the same app.
See Also:
/** * The metadata key for a {@link CharSequence} or {@link String} typed value to retrieve the * information about the Uri of the content. This value is specific to the service providing the * content. It may be used with {@link MediaController2#playFromUri(Uri, Bundle)} * to initiate playback when provided by a {@link MediaBrowser2} connected to the same app. * * @see Builder#putText(String, CharSequence) * @see Builder#putString(String, String) * @see #getText(String) * @see #getString(String) */
public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
The metadata key for a Long typed value to retrieve the information about 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:
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about 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 #BT_FOLDER_TYPE_MIXED}</li> * <li>{@link #BT_FOLDER_TYPE_TITLES}</li> * <li>{@link #BT_FOLDER_TYPE_ALBUMS}</li> * <li>{@link #BT_FOLDER_TYPE_ARTISTS}</li> * <li>{@link #BT_FOLDER_TYPE_GENRES}</li> * <li>{@link #BT_FOLDER_TYPE_PLAYLISTS}</li> * <li>{@link #BT_FOLDER_TYPE_YEARS}</li> * </ul> * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
The type of folder that is unknown or contains media elements of mixed types as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that is unknown or contains media elements of mixed types as specified in * the section 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_MIXED = 0;
The type of folder that contains media elements only as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains media elements only as specified in the section 6.10.2.2 of * the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_TITLES = 1;
The type of folder that contains folders categorized by album as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains folders categorized by album as specified in the section * 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_ALBUMS = 2;
The type of folder that contains folders categorized by artist as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains folders categorized by artist as specified in the section * 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_ARTISTS = 3;
The type of folder that contains folders categorized by genre as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains folders categorized by genre as specified in the section * 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_GENRES = 4;
The type of folder that contains folders categorized by playlist as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains folders categorized by playlist as specified in the section * 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_PLAYLISTS = 5;
The type of folder that contains folders categorized by year as specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5.
/** * The type of folder that contains folders categorized by year as specified in the section * 6.10.2.2 of the Bluetooth AVRCP 1.5. */
public static final long BT_FOLDER_TYPE_YEARS = 6;
The metadata key for a Long typed value to retrieve the information about whether the media is an advertisement. A value of 0 indicates it is not an advertisement. A value of 1 or non-zero indicates it is an advertisement. If not specified, this value is set to 0 by default.
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about whether * the media is an advertisement. A value of 0 indicates it is not an advertisement. * A value of 1 or non-zero indicates it is an advertisement. * If not specified, this value is set to 0 by default. * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_ADVERTISEMENT = "android.media.metadata.ADVERTISEMENT";
The metadata key for a Long typed value to retrieve the information about the download status of the media which will be used for later offline playback. It should be one of the following:
See Also:
/** * The metadata key for a {@link Long} typed value to retrieve the information about the * download status of the media which will be used for later offline playback. It should be * one of the following: * * <ul> * <li>{@link #STATUS_NOT_DOWNLOADED}</li> * <li>{@link #STATUS_DOWNLOADING}</li> * <li>{@link #STATUS_DOWNLOADED}</li> * </ul> * * @see Builder#putLong(String, long) * @see #getLong(String) */
public static final String METADATA_KEY_DOWNLOAD_STATUS = "android.media.metadata.DOWNLOAD_STATUS";
The status value to indicate the media item is not downloaded.
See Also:
  • METADATA_KEY_DOWNLOAD_STATUS
/** * The status value to indicate the media item is not downloaded. * * @see #METADATA_KEY_DOWNLOAD_STATUS */
public static final long STATUS_NOT_DOWNLOADED = 0;
The status value to indicate the media item is being downloaded.
See Also:
  • METADATA_KEY_DOWNLOAD_STATUS
/** * The status value to indicate the media item is being downloaded. * * @see #METADATA_KEY_DOWNLOAD_STATUS */
public static final long STATUS_DOWNLOADING = 1;
The status value to indicate the media item is downloaded for later offline playback.
See Also:
  • METADATA_KEY_DOWNLOAD_STATUS
/** * The status value to indicate the media item is downloaded for later offline playback. * * @see #METADATA_KEY_DOWNLOAD_STATUS */
public static final long STATUS_DOWNLOADED = 2;
A Bundle extra.
/** * A {@link Bundle} extra. */
public static final String METADATA_KEY_EXTRAS = "android.media.metadata.EXTRAS";
@hide
/** * @hide */
@StringDef({METADATA_KEY_TITLE, METADATA_KEY_ARTIST, METADATA_KEY_ALBUM, METADATA_KEY_AUTHOR, METADATA_KEY_WRITER, METADATA_KEY_COMPOSER, METADATA_KEY_COMPILATION, 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_URI}) @Retention(RetentionPolicy.SOURCE) public @interface TextKey {}
@hide
/** * @hide */
@StringDef({METADATA_KEY_DURATION, METADATA_KEY_YEAR, METADATA_KEY_TRACK_NUMBER, METADATA_KEY_NUM_TRACKS, METADATA_KEY_DISC_NUMBER, METADATA_KEY_BT_FOLDER_TYPE, METADATA_KEY_ADVERTISEMENT, METADATA_KEY_DOWNLOAD_STATUS}) @Retention(RetentionPolicy.SOURCE) public @interface LongKey {}
@hide
/** * @hide */
@StringDef({METADATA_KEY_ART, METADATA_KEY_ALBUM_ART, METADATA_KEY_DISPLAY_ICON}) @Retention(RetentionPolicy.SOURCE) public @interface BitmapKey {}
@hide
/** * @hide */
@StringDef({METADATA_KEY_USER_RATING, METADATA_KEY_RATING}) @Retention(RetentionPolicy.SOURCE) public @interface RatingKey {}
@hide
/** * @hide */
// TODO(jaewan): Add predefined float key. @Retention(RetentionPolicy.SOURCE) public @interface FloatKey {} private final MediaMetadata2Provider mProvider;
@hide
/** * @hide */
public MediaMetadata2(MediaMetadata2Provider provider) { mProvider = provider; }
Returns true if the given key is contained in the metadata
Params:
  • key – a String key
Returns:true if the key exists in this metadata, false otherwise
/** * Returns true if the given key is contained in the metadata * * @param key a String key * @return true if the key exists in this metadata, false otherwise */
public boolean containsKey(@NonNull String key) { return mProvider.containsKey_impl(key); }
Returns the value associated with the given key, or null if no mapping of the desired type exists for the given key or a null value is explicitly associated with the key.
Params:
  • key – The key the value is stored under
Returns:a CharSequence value, or null
/** * Returns the value associated with the given key, or null if no mapping of * the desired type exists for the given key or a null value is explicitly * associated with the key. * * @param key The key the value is stored under * @return a CharSequence value, or null */
public @Nullable CharSequence getText(@NonNull @TextKey String key) { return mProvider.getText_impl(key); }
Returns the media id, or null if the id doesn't exist.

This is equivalent to the getString(String) with the METADATA_KEY_MEDIA_ID.

See Also:
Returns:media id. Can be null
/** * Returns the media id, or {@code null} if the id doesn't exist. *<p> * This is equivalent to the {@link #getString(String)} with the {@link #METADATA_KEY_MEDIA_ID}. * * @return media id. Can be {@code null} * @see #METADATA_KEY_MEDIA_ID */
public @Nullable String getMediaId() { return mProvider.getMediaId_impl(); }
Returns the value associated with the given key, or null if no mapping of the desired type exists for the given key or a null value is explicitly associated with the key.
Params:
  • key – The key the value is stored under
Returns:a String value, or null
/** * Returns the value associated with the given key, or null if no mapping of * the desired type exists for the given key or a null value is explicitly * associated with the key. * * @param key The key the value is stored under * @return a String value, or null */
public @Nullable String getString(@NonNull @TextKey String key) { return mProvider.getString_impl(key); }
Returns the value associated with the given key, or 0L if no long exists for the given key.
Params:
  • key – The key the value is stored under
Returns:a long value
/** * Returns the value associated with the given key, or 0L if no long exists * for the given key. * * @param key The key the value is stored under * @return a long value */
public long getLong(@NonNull @LongKey String key) { return mProvider.getLong_impl(key); }
Return a Rating2 for the given key or null if no rating exists for the given key.

For the METADATA_KEY_USER_RATING, A null return value means that user rating cannot be set by MediaController2.

Params:
  • key – The key the value is stored under
Returns:A Rating2 or null
/** * Return a {@link Rating2} for the given key or null if no rating exists for * the given key. * <p> * For the {@link #METADATA_KEY_USER_RATING}, A {@code null} return value means that user rating * cannot be set by {@link MediaController2}. * * @param key The key the value is stored under * @return A {@link Rating2} or {@code null} */
public @Nullable Rating2 getRating(@NonNull @RatingKey String key) { return mProvider.getRating_impl(key); }
Return a Bitmap for the given key or null if no bitmap exists for the given key.
Params:
  • key – The key the value is stored under
Returns:A Bitmap or null
/** * Return a {@link Bitmap} for the given key or null if no bitmap exists for * the given key. * * @param key The key the value is stored under * @return A {@link Bitmap} or null */
public @Nullable Bitmap getBitmap(@NonNull @BitmapKey String key) { return mProvider.getBitmap_impl(key); }
Return the value associated with the given key, or 0.0f if no long exists for the given key.
Params:
  • key – The key the value is stored under
Returns:a float value
/** * Return the value associated with the given key, or 0.0f if no long exists * for the given key. * * @param key The key the value is stored under * @return a float value */
public float getFloat(@NonNull @FloatKey String key) { return mProvider.getFloat_impl(key); }
Get the extra Bundle from the metadata object.
Returns:A Bundle or null
/** * Get the extra {@link Bundle} from the metadata object. * * @return A {@link Bundle} or {@code null} */
public @Nullable Bundle getExtras() { return mProvider.getExtras_impl(); }
Get the number of fields in this metadata.
Returns:The number of fields in the metadata.
/** * Get the number of fields in this metadata. * * @return The number of fields in the metadata. */
public int size() { return mProvider.size_impl(); }
Returns a Set containing the Strings used as keys in this metadata.
Returns:a Set of String keys
/** * Returns a Set containing the Strings used as keys in this metadata. * * @return a Set of String keys */
public @NonNull Set<String> keySet() { return mProvider.keySet_impl(); }
Gets the bundle backing the metadata object. This is available to support backwards compatibility. Apps should not modify the bundle directly.
Returns:The Bundle backing this metadata.
/** * Gets the bundle backing the metadata object. This is available to support * backwards compatibility. Apps should not modify the bundle directly. * * @return The Bundle backing this metadata. */
public @NonNull Bundle toBundle() { return mProvider.toBundle_impl(); }
Creates the MediaMetadata2 from the bundle that previously returned by toBundle().
Params:
  • bundle – bundle for the metadata
Returns:a new MediaMetadata2
/** * Creates the {@link MediaMetadata2} from the bundle that previously returned by * {@link #toBundle()}. * * @param bundle bundle for the metadata * @return a new MediaMetadata2 */
public static @NonNull MediaMetadata2 fromBundle(@Nullable Bundle bundle) { return ApiLoader.getProvider().fromBundle_MediaMetadata2(bundle); }
Use to build MediaMetadata2 objects. The system defined metadata keys must use the appropriate data type.
/** * Use to build MediaMetadata2 objects. The system defined metadata keys must * use the appropriate data type. */
public static final class Builder { private final MediaMetadata2Provider.BuilderProvider mProvider;
Create an empty Builder. Any field that should be included in the MediaMetadata2 must be added.
/** * Create an empty Builder. Any field that should be included in the * {@link MediaMetadata2} must be added. */
public Builder() { mProvider = ApiLoader.getProvider().createMediaMetadata2Builder(this); }
Create a Builder using a MediaMetadata2 instance to set the initial values. All fields in the source metadata will be included in the new metadata. Fields can be overwritten by adding the same key.
Params:
  • source –
/** * Create a Builder using a {@link MediaMetadata2} instance to set the * initial values. All fields in the source metadata will be included in * the new metadata. Fields can be overwritten by adding the same key. * * @param source */
public Builder(@NonNull MediaMetadata2 source) { mProvider = ApiLoader.getProvider().createMediaMetadata2Builder(this, source); }
@hide
/** * @hide */
public Builder(@NonNull MediaMetadata2Provider.BuilderProvider provider) { mProvider = provider; }
Params:
  • key – The key for referencing this value
  • value – The CharSequence value to store
Returns:The Builder to allow chaining
/** * Put a CharSequence value into the metadata. Custom keys may be used, * but if the METADATA_KEYs defined in this class are used they may only * be one of the following: * <ul> * <li>{@link #METADATA_KEY_TITLE}</li> * <li>{@link #METADATA_KEY_ARTIST}</li> * <li>{@link #METADATA_KEY_ALBUM}</li> * <li>{@link #METADATA_KEY_AUTHOR}</li> * <li>{@link #METADATA_KEY_WRITER}</li> * <li>{@link #METADATA_KEY_COMPOSER}</li> * <li>{@link #METADATA_KEY_DATE}</li> * <li>{@link #METADATA_KEY_GENRE}</li> * <li>{@link #METADATA_KEY_ALBUM_ARTIST}</li> * <li>{@link #METADATA_KEY_ART_URI}</li> * <li>{@link #METADATA_KEY_ALBUM_ART_URI}</li> * <li>{@link #METADATA_KEY_DISPLAY_TITLE}</li> * <li>{@link #METADATA_KEY_DISPLAY_SUBTITLE}</li> * <li>{@link #METADATA_KEY_DISPLAY_DESCRIPTION}</li> * <li>{@link #METADATA_KEY_DISPLAY_ICON_URI}</li> * </ul> * * @param key The key for referencing this value * @param value The CharSequence value to store * @return The Builder to allow chaining */
public @NonNull Builder putText(@NonNull @TextKey String key, @Nullable CharSequence value) { return mProvider.putText_impl(key, value); }
Params:
  • key – The key for referencing this value
  • value – The String value to store
Returns:The Builder to allow chaining
/** * Put a String value into the metadata. Custom keys may be used, but if * the METADATA_KEYs defined in this class are used they may only be one * of the following: * <ul> * <li>{@link #METADATA_KEY_TITLE}</li> * <li>{@link #METADATA_KEY_ARTIST}</li> * <li>{@link #METADATA_KEY_ALBUM}</li> * <li>{@link #METADATA_KEY_AUTHOR}</li> * <li>{@link #METADATA_KEY_WRITER}</li> * <li>{@link #METADATA_KEY_COMPOSER}</li> * <li>{@link #METADATA_KEY_DATE}</li> * <li>{@link #METADATA_KEY_GENRE}</li> * <li>{@link #METADATA_KEY_ALBUM_ARTIST}</li> * <li>{@link #METADATA_KEY_ART_URI}</li> * <li>{@link #METADATA_KEY_ALBUM_ART_URI}</li> * <li>{@link #METADATA_KEY_DISPLAY_TITLE}</li> * <li>{@link #METADATA_KEY_DISPLAY_SUBTITLE}</li> * <li>{@link #METADATA_KEY_DISPLAY_DESCRIPTION}</li> * <li>{@link #METADATA_KEY_DISPLAY_ICON_URI}</li> * </ul> * * @param key The key for referencing this value * @param value The String value to store * @return The Builder to allow chaining */
public @NonNull Builder putString(@NonNull @TextKey String key, @Nullable String value) { return mProvider.putString_impl(key, value); }
Params:
  • key – The key for referencing this value
  • value – The String value to store
Returns:The Builder to allow chaining
/** * Put a long value into the metadata. Custom keys may be used, but if * the METADATA_KEYs defined in this class are used they may only be one * of the following: * <ul> * <li>{@link #METADATA_KEY_DURATION}</li> * <li>{@link #METADATA_KEY_TRACK_NUMBER}</li> * <li>{@link #METADATA_KEY_NUM_TRACKS}</li> * <li>{@link #METADATA_KEY_DISC_NUMBER}</li> * <li>{@link #METADATA_KEY_YEAR}</li> * <li>{@link #METADATA_KEY_BT_FOLDER_TYPE}</li> * <li>{@link #METADATA_KEY_ADVERTISEMENT}</li> * <li>{@link #METADATA_KEY_DOWNLOAD_STATUS}</li> * </ul> * * @param key The key for referencing this value * @param value The String value to store * @return The Builder to allow chaining */
public @NonNull Builder putLong(@NonNull @LongKey String key, long value) { return mProvider.putLong_impl(key, value); }
Put a Rating2 into the metadata. Custom keys may be used, but if the METADATA_KEYs defined in this class are used they may only be one of the following:
Params:
  • key – The key for referencing this value
  • value – The String value to store
Returns:The Builder to allow chaining
/** * Put a {@link Rating2} into the metadata. Custom keys may be used, but * if the METADATA_KEYs defined in this class are used they may only be * one of the following: * <ul> * <li>{@link #METADATA_KEY_RATING}</li> * <li>{@link #METADATA_KEY_USER_RATING}</li> * </ul> * * @param key The key for referencing this value * @param value The String value to store * @return The Builder to allow chaining */
public @NonNull Builder putRating(@NonNull @RatingKey String key, @Nullable Rating2 value) { return mProvider.putRating_impl(key, value); }
Put a Bitmap into the metadata. Custom keys may be used, but if the METADATA_KEYs defined in this class are used they may only be one of the following: Large bitmaps may be scaled down by the system when MediaSession.setMetadata is called. To pass full resolution images Uris should be used with putString.
Params:
  • key – The key for referencing this value
  • value – The Bitmap to store
Returns:The Builder to allow chaining
/** * Put a {@link Bitmap} into the metadata. Custom keys may be used, but * if the METADATA_KEYs defined in this class are used they may only be * one of the following: * <ul> * <li>{@link #METADATA_KEY_ART}</li> * <li>{@link #METADATA_KEY_ALBUM_ART}</li> * <li>{@link #METADATA_KEY_DISPLAY_ICON}</li> * </ul> * 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 * @param value The Bitmap to store * @return The Builder to allow chaining */
public @NonNull Builder putBitmap(@NonNull @BitmapKey String key, @Nullable Bitmap value) { return mProvider.putBitmap_impl(key, value); }
Put a float value into the metadata. Custom keys may be used.
Params:
  • key – The key for referencing this value
  • value – The float value to store
Returns:The Builder to allow chaining
/** * Put a float value into the metadata. Custom keys may be used. * * @param key The key for referencing this value * @param value The float value to store * @return The Builder to allow chaining */
public @NonNull Builder putFloat(@NonNull @LongKey String key, float value) { return mProvider.putFloat_impl(key, value); }
Set a bundle of extras.
Params:
  • extras – The extras to include with this description or null.
Returns:The Builder to allow chaining
/** * Set a bundle of extras. * * @param extras The extras to include with this description or null. * @return The Builder to allow chaining */
public Builder setExtras(@Nullable Bundle extras) { return mProvider.setExtras_impl(extras); }
Creates a MediaMetadata2 instance with the specified fields.
Returns:The new MediaMetadata2 instance
/** * Creates a {@link MediaMetadata2} instance with the specified fields. * * @return The new MediaMetadata2 instance */
public @NonNull MediaMetadata2 build() { return mProvider.build_impl(); } } }