13625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikpackage android.media;
23625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
33625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.annotation.Nullable;
43625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.graphics.Bitmap;
53625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.net.Uri;
63625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.os.Bundle;
73625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.os.Parcel;
83625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikimport android.os.Parcelable;
93625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
103625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik/**
113625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik * A simple set of metadata for a media item suitable for display. This can be
123625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik * created using the Builder or retrieved from existing metadata using
133625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik * {@link MediaMetadata#getDescription()}.
143625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik */
153625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErikpublic class MediaDescription implements Parcelable {
163625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
173625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A unique persistent id for the content or null.
183625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
193625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final String mMediaId;
203625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
213625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A primary title suitable for display or null.
223625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
233625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final CharSequence mTitle;
243625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
253625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A subtitle suitable for display or null.
263625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
273625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final CharSequence mSubtitle;
283625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
293625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A description suitable for display or null.
303625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
313625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final CharSequence mDescription;
323625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
333625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A bitmap icon suitable for display or null.
343625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
353625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final Bitmap mIcon;
363625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
373625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * A Uri for an icon suitable for display or null.
383625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
393625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final Uri mIconUri;
403625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
413625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Extras for opaque use by apps/system.
423625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
433625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private final Bundle mExtras;
446fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand    /**
456fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     * A Uri to identify this content.
466fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     */
476fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand    private final Uri mMediaUri;
483625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
493625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private MediaDescription(String mediaId, CharSequence title, CharSequence subtitle,
506fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand            CharSequence description, Bitmap icon, Uri iconUri, Bundle extras, Uri mediaUri) {
513625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mMediaId = mediaId;
523625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mTitle = title;
533625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mSubtitle = subtitle;
543625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mDescription = description;
553625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mIcon = icon;
563625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mIconUri = iconUri;
573625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mExtras = extras;
586fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        mMediaUri = mediaUri;
593625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
603625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
613625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    private MediaDescription(Parcel in) {
623625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mMediaId = in.readString();
633625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mTitle = in.readCharSequence();
643625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mSubtitle = in.readCharSequence();
653625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mDescription = in.readCharSequence();
663625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mIcon = in.readParcelable(null);
673625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mIconUri = in.readParcelable(null);
683625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        mExtras = in.readBundle();
696fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        mMediaUri = in.readParcelable(null);
703625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
713625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
723625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
733625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns the media id or null. See
743625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * {@link MediaMetadata#METADATA_KEY_MEDIA_ID}.
753625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
763625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable String getMediaId() {
773625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mMediaId;
783625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
793625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
803625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
813625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns a title suitable for display or null.
823625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
833625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return A title or null.
843625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
853625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable CharSequence getTitle() {
863625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mTitle;
873625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
883625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
893625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
903625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns a subtitle suitable for display or null.
913625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
923625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return A subtitle or null.
933625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
943625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable CharSequence getSubtitle() {
953625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mSubtitle;
963625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
973625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
983625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
993625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns a description suitable for display or null.
1003625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
1013625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return A description or null.
1023625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
1033625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable CharSequence getDescription() {
1043625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mDescription;
1053625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1063625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1073625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
1083625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns a bitmap icon suitable for display or null.
1093625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
1103625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return An icon or null.
1113625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
1123625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable Bitmap getIconBitmap() {
1133625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mIcon;
1143625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1153625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1163625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
1173625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns a Uri for an icon suitable for display or null.
1183625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
1193625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return An icon uri or null.
1203625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
1213625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable Uri getIconUri() {
1223625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mIconUri;
1233625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1243625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1253625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
1263625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Returns any extras that were added to the description.
1273625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     *
1283625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * @return A bundle of extras or null.
1293625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
1303625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public @Nullable Bundle getExtras() {
1313625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mExtras;
1323625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1333625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1346fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand    /**
1356fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     * Returns a Uri representing this content or null.
1366fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     *
1376fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     * @return A media Uri or null.
1386fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand     */
1396fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand    public @Nullable Uri getMediaUri() {
1406fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        return mMediaUri;
1416fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand    }
1426fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand
1433625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    @Override
1443625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public int describeContents() {
1453625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return 0;
1463625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1473625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1483625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    @Override
1493625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public void writeToParcel(Parcel dest, int flags) {
1503625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeString(mMediaId);
1513625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeCharSequence(mTitle);
1523625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeCharSequence(mSubtitle);
1533625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeCharSequence(mDescription);
1543625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeParcelable(mIcon, flags);
1553625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeParcelable(mIconUri, flags);
1563625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        dest.writeBundle(mExtras);
1576fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        dest.writeParcelable(mMediaUri, flags);
1583625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1593625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1603625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    @Override
1613625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public String toString() {
1623625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        return mTitle + ", " + mSubtitle + ", " + mDescription;
1633625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
1643625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1653625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public static final Parcelable.Creator<MediaDescription> CREATOR =
1663625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            new Parcelable.Creator<MediaDescription>() {
1673625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                @Override
1683625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                public MediaDescription createFromParcel(Parcel in) {
1693625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                    return new MediaDescription(in);
1703625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                }
1713625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1723625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                @Override
1733625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                public MediaDescription[] newArray(int size) {
1743625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                    return new MediaDescription[size];
1753625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik                }
1763625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            };
1773625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1783625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    /**
1793625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     * Builder for {@link MediaDescription} objects.
1803625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik     */
1813625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    public static class Builder {
1823625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private String mMediaId;
1833625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private CharSequence mTitle;
1843625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private CharSequence mSubtitle;
1853625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private CharSequence mDescription;
1863625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private Bitmap mIcon;
1873625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private Uri mIconUri;
1883625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        private Bundle mExtras;
1896fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        private Uri mMediaUri;
1903625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1913625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
1923625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Creates an initially empty builder.
1933625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
1943625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder() {
1953625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
1963625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
1973625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
1983625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the media id.
1993625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2003625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param mediaId The unique id for the item or null.
2013625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2023625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2033625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setMediaId(@Nullable String mediaId) {
2043625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mMediaId = mediaId;
2053625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2063625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2073625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2083625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2093625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the title.
2103625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2113625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param title A title suitable for display to the user or null.
2123625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2133625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2143625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setTitle(@Nullable CharSequence title) {
2153625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mTitle = title;
2163625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2173625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2183625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2193625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2203625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the subtitle.
2213625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2223625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param subtitle A subtitle suitable for display to the user or null.
2233625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2243625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2253625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setSubtitle(@Nullable CharSequence subtitle) {
2263625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mSubtitle = subtitle;
2273625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2283625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2293625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2303625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2313625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the description.
2323625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2333625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param description A description suitable for display to the user or
2343625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *            null.
2353625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2363625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2373625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setDescription(@Nullable CharSequence description) {
2383625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mDescription = description;
2393625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2403625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2413625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2423625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2433625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the icon.
2443625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2453625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param icon A {@link Bitmap} icon suitable for display to the user or
2463625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *            null.
2473625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2483625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2493625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setIconBitmap(@Nullable Bitmap icon) {
2503625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mIcon = icon;
2513625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2523625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2533625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2543625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2553625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets the icon uri.
2563625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2573625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param iconUri A {@link Uri} for an icon suitable for display to the
2583625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *            user or null.
2593625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2603625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2613625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setIconUri(@Nullable Uri iconUri) {
2623625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mIconUri = iconUri;
2633625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2643625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2653625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2663625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        /**
2673625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * Sets a bundle of extras.
2683625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         *
2693625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @param extras The extras to include with this description or null.
2703625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         * @return this
2713625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik         */
2723625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public Builder setExtras(@Nullable Bundle extras) {
2733625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            mExtras = extras;
2743625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return this;
2753625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2763625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik
2776fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        /**
2786fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand         * Sets the media uri.
2796fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand         *
2806fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand         * @param mediaUri The content's {@link Uri} for the item or null.
2816fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand         * @return this
2826fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand         */
2836fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        public Builder setMediaUri(@Nullable Uri mediaUri) {
2846fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand            mMediaUri = mediaUri;
2856fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand            return this;
2866fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand        }
2876fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand
2883625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        public MediaDescription build() {
2893625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik            return new MediaDescription(mMediaId, mTitle, mSubtitle, mDescription, mIcon, mIconUri,
2906fbcc2c01b604d84aeb67118962712556cdeb638P.Y. Laligand                    mExtras, mMediaUri);
2913625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik        }
2923625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik    }
2933625bf72cb8bcf3c7f8f8cd8d708d7206824cc62RoboErik}
294