Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3cea6d54 authored by Donghyun Cho's avatar Donghyun Cho
Browse files

Add bluetooth folder type information to MediaDescription and MediaMetadata

Bug: 28210080
Change-Id: Id476fe742c35138b7d83c4440b3f85c0d104df82
parent dce22f04
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -20799,7 +20799,15 @@ package android.media {
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
    field public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
    field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
  }
  public static class MediaDescription.Builder {
@@ -21068,6 +21076,7 @@ package android.media {
    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
+9 −0
Original line number Diff line number Diff line
@@ -22318,7 +22318,15 @@ package android.media {
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
    field public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
    field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
  }
  public static class MediaDescription.Builder {
@@ -22587,6 +22595,7 @@ package android.media {
    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
+9 −0
Original line number Diff line number Diff line
@@ -20869,7 +20869,15 @@ package android.media {
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
    field public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
    field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
  }
  public static class MediaDescription.Builder {
@@ -21138,6 +21146,7 @@ package android.media {
    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
+62 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package android.media;

import android.annotation.Nullable;
import android.graphics.Bitmap;
import android.media.browse.MediaBrowser;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcel;
@@ -46,6 +47,67 @@ public class MediaDescription implements Parcelable {
     */
    private final Uri mMediaUri;

    /**
     * Used as a long extra field to indicate the bluetooth folder type of the media item as
     * specified in the section 6.10.2.2 of the Bluetooth AVRCP 1.5. This is valid only for
     * {@link MediaBrowser.MediaItem} with {@link MediaBrowser.MediaItem#FLAG_BROWSABLE}. The value
     * 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 #getExtras()
     */
    public static final String EXTRA_BT_FOLDER_TYPE = "android.media.extra.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.
     */
    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.
     */
    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.
     */
    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.
     */
    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.
     */
    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.
     */
    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.
     */
    public static final long BT_FOLDER_TYPE_YEARS = 6;

    private MediaDescription(String mediaId, CharSequence title, CharSequence subtitle,
            CharSequence description, Bitmap icon, Uri iconUri, Bundle extras, Uri mediaUri) {
        mMediaId = mediaId;
+24 −1
Original line number Diff line number Diff line
@@ -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,22 @@ public final class MediaMetadata implements Parcelable {
     */
    public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";

    /**
     * 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 +342,7 @@ 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);
    }

    private static final SparseArray<String> EDITOR_KEY_MAPPING;
@@ -544,6 +561,12 @@ public final class MediaMetadata implements Parcelable {
        bob.setDescription(text[2]);
        bob.setIconBitmap(icon);
        bob.setIconUri(iconUri);
        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;