1cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik/* 2cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Copyright (C) 2014 The Android Open Source Project 3cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 4cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Licensed under the Apache License, Version 2.0 (the "License"); 5cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * you may not use this file except in compliance with the License. 6cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * You may obtain a copy of the License at 7cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 8cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * http://www.apache.org/licenses/LICENSE-2.0 9cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 10cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Unless required by applicable law or agreed to in writing, software 11cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * distributed under the License is distributed on an "AS IS" BASIS, 12cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * See the License for the specific language governing permissions and 14cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * limitations under the License. 15cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 16cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikpackage android.support.v4.media; 17cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 18cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.graphics.Bitmap; 19cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.net.Uri; 20cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.os.Build; 21cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.os.Bundle; 22cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.os.Parcel; 23cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.os.Parcelable; 249cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lakeimport android.support.annotation.Nullable; 25cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikimport android.text.TextUtils; 26cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 27cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik/** 28cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A simple set of metadata for a media item suitable for display. This can be 29cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * created using the Builder or retrieved from existing metadata using 30cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * {@link MediaMetadataCompat#getDescription()}. 31cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 32cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErikpublic final class MediaDescriptionCompat implements Parcelable { 33cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 3401ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * Custom key to store a media URI on API 21-22 devices (before it became part of the 3501ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * framework class) when parceling/converting to and from framework objects. 3601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * 3701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * @hide 3801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake */ 3901ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake public static final String DESCRIPTION_KEY_MEDIA_URI = 4001ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake "android.support.v4.media.description.MEDIA_URI"; 4101ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake /** 4201ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * Custom key to store whether the original Bundle provided by the developer was null 4301ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * 4401ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake * @hide 4501ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake */ 4601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake public static final String DESCRIPTION_KEY_NULL_BUNDLE_FLAG = 4701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake "android.support.v4.media.description.NULL_BUNDLE_FLAG"; 4801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake /** 49cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A unique persistent id for the content or null. 50cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 51cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final String mMediaId; 52cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 53cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A primary title suitable for display or null. 54cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 55cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final CharSequence mTitle; 56cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 57cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A subtitle suitable for display or null. 58cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 59cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final CharSequence mSubtitle; 60cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 61cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A description suitable for display or null. 62cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 63cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final CharSequence mDescription; 64cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 65cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A bitmap icon suitable for display or null. 66cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 67cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final Bitmap mIcon; 68cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 69cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A Uri for an icon suitable for display or null. 70cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 71cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final Uri mIconUri; 72cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 73cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Extras for opaque use by apps/system. 74cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 75cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private final Bundle mExtras; 769cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake /** 779cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * A Uri to identify this content. 789cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake */ 799cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake private final Uri mMediaUri; 80cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 81cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 82cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * A cached copy of the equivalent framework object. 83cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 84cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private Object mDescriptionObj; 85cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 86cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private MediaDescriptionCompat(String mediaId, CharSequence title, CharSequence subtitle, 879cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake CharSequence description, Bitmap icon, Uri iconUri, Bundle extras, Uri mediaUri) { 88cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mMediaId = mediaId; 89cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mTitle = title; 90cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mSubtitle = subtitle; 91cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mDescription = description; 92cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIcon = icon; 93cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIconUri = iconUri; 94cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mExtras = extras; 959cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake mMediaUri = mediaUri; 96cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 97cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 98cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private MediaDescriptionCompat(Parcel in) { 99cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mMediaId = in.readString(); 100cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 101cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mSubtitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 102cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 103cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIcon = in.readParcelable(null); 104cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIconUri = in.readParcelable(null); 105cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mExtras = in.readBundle(); 1069cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake mMediaUri = in.readParcelable(null); 107cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 108cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 109cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 110cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns the media id or null. See 111cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * {@link MediaMetadataCompat#METADATA_KEY_MEDIA_ID}. 112cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1139cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 114cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public String getMediaId() { 115cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mMediaId; 116cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 117cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 118cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 119cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns a title suitable for display or null. 120cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 121cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return A title or null. 122cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1239cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 124cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public CharSequence getTitle() { 125cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mTitle; 126cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 127cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 128cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 129cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns a subtitle suitable for display or null. 130cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 131cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return A subtitle or null. 132cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1339cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 134cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public CharSequence getSubtitle() { 135cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mSubtitle; 136cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 137cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 138cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 139cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns a description suitable for display or null. 140cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 141cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return A description or null. 142cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1439cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 144cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public CharSequence getDescription() { 145cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mDescription; 146cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 147cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 148cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 149cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns a bitmap icon suitable for display or null. 150cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 151cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return An icon or null. 152cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1539cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 154cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public Bitmap getIconBitmap() { 155cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mIcon; 156cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 157cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 158cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 159cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns a Uri for an icon suitable for display or null. 160cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 161cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return An icon uri or null. 162cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1639cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 164cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public Uri getIconUri() { 165cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mIconUri; 166cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 167cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 168cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 169cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Returns any extras that were added to the description. 170cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 171cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return A bundle of extras or null. 172cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 1739cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 174cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public Bundle getExtras() { 175cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mExtras; 176cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 177cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 1789cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake /** 1799cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * Returns a Uri representing this content or null. 1809cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * 1819cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * @return A media Uri or null. 1829cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake */ 1839cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake @Nullable 1849cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Uri getMediaUri() { 1859cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake return mMediaUri; 1869cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake } 1879cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake 188cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik @Override 189cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public int describeContents() { 190cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return 0; 191cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 192cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 193cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik @Override 194cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public void writeToParcel(Parcel dest, int flags) { 195cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik if (Build.VERSION.SDK_INT < 21) { 196cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik dest.writeString(mMediaId); 197cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik TextUtils.writeToParcel(mTitle, dest, flags); 198cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik TextUtils.writeToParcel(mSubtitle, dest, flags); 199cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik TextUtils.writeToParcel(mDescription, dest, flags); 200cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik dest.writeParcelable(mIcon, flags); 201cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik dest.writeParcelable(mIconUri, flags); 202cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik dest.writeBundle(mExtras); 20381f61057e1542008c03d6a85e8ef475d9177149fAndrew Sutherland dest.writeParcelable(mMediaUri, flags); 204cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } else { 205cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.writeToParcel(getMediaDescription(), dest, flags); 206cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 207cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 208cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 209cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik @Override 210cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public String toString() { 211cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mTitle + ", " + mSubtitle + ", " + mDescription; 212cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 213cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 214cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 215cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Gets the underlying framework {@link android.media.MediaDescription} 216cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * object. 217cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * <p> 218cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * This method is only supported on 219cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * {@link android.os.Build.VERSION_CODES#LOLLIPOP} and later. 220cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * </p> 221cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 222cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return An equivalent {@link android.media.MediaDescription} object, or 223cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * null if none. 224cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 225cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public Object getMediaDescription() { 226cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik if (mDescriptionObj != null || Build.VERSION.SDK_INT < 21) { 227cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mDescriptionObj; 228cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 229cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik Object bob = MediaDescriptionCompatApi21.Builder.newInstance(); 230cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setMediaId(bob, mMediaId); 231cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setTitle(bob, mTitle); 232cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setSubtitle(bob, mSubtitle); 233cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setDescription(bob, mDescription); 234cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setIconBitmap(bob, mIcon); 235cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompatApi21.Builder.setIconUri(bob, mIconUri); 23601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // Media URI was not added until API 23, so add it to the Bundle of extras to 23701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // ensure the data is not lost - this ensures that 23801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // fromMediaDescription(getMediaDescription(mediaDescriptionCompat)) returns 23901ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // an equivalent MediaDescriptionCompat on all API levels 24001ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake Bundle extras = mExtras; 24101ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake if (Build.VERSION.SDK_INT < 23 && mMediaUri != null) { 24201ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake if (extras == null) { 24301ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras = new Bundle(); 24401ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras.putBoolean(DESCRIPTION_KEY_NULL_BUNDLE_FLAG, true); 24501ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } 24601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras.putParcelable(DESCRIPTION_KEY_MEDIA_URI, mMediaUri); 24701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } 24801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake MediaDescriptionCompatApi21.Builder.setExtras(bob, extras); 2499cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake if (Build.VERSION.SDK_INT >= 23) { 2509cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake MediaDescriptionCompatApi23.Builder.setMediaUri(bob, mMediaUri); 2519cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake } 252cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mDescriptionObj = MediaDescriptionCompatApi21.Builder.build(bob); 253cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 254cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return mDescriptionObj; 255cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 256cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 257cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 258cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Creates an instance from a framework 259cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * {@link android.media.MediaDescription} object. 260cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * <p> 261cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * This method is only supported on API 21+. 262cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * </p> 263cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 264cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param descriptionObj A {@link android.media.MediaDescription} object, or 265cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * null if none. 266cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return An equivalent {@link MediaMetadataCompat} object, or null if 267cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * none. 268cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 269cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public static MediaDescriptionCompat fromMediaDescription(Object descriptionObj) { 270cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik if (descriptionObj == null || Build.VERSION.SDK_INT < 21) { 271cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return null; 272cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 273cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 274cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik Builder bob = new Builder(); 275cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setMediaId(MediaDescriptionCompatApi21.getMediaId(descriptionObj)); 276cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setTitle(MediaDescriptionCompatApi21.getTitle(descriptionObj)); 277cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setSubtitle(MediaDescriptionCompatApi21.getSubtitle(descriptionObj)); 278cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setDescription(MediaDescriptionCompatApi21.getDescription(descriptionObj)); 279cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setIconBitmap(MediaDescriptionCompatApi21.getIconBitmap(descriptionObj)); 280cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik bob.setIconUri(MediaDescriptionCompatApi21.getIconUri(descriptionObj)); 28101ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake Bundle extras = MediaDescriptionCompatApi21.getExtras(descriptionObj); 28201ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake Uri mediaUri = extras == null ? null : 28301ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake (Uri) extras.getParcelable(DESCRIPTION_KEY_MEDIA_URI); 28401ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake if (mediaUri != null) { 28501ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake if (extras.containsKey(DESCRIPTION_KEY_NULL_BUNDLE_FLAG) && extras.size() == 2) { 28601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // The extras were only created for the media URI, so we set it back to null to 28701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // ensure mediaDescriptionCompat.getExtras() equals 28801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // fromMediaDescription(getMediaDescription(mediaDescriptionCompat)).getExtras() 28901ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras = null; 29001ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } else { 29101ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // Remove media URI keys to ensure mediaDescriptionCompat.getExtras().keySet() 29201ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // equals fromMediaDescription(getMediaDescription(mediaDescriptionCompat)) 29301ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake // .getExtras().keySet() 29401ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras.remove(DESCRIPTION_KEY_MEDIA_URI); 29501ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake extras.remove(DESCRIPTION_KEY_NULL_BUNDLE_FLAG); 29601ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } 29701ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } 29801ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake bob.setExtras(extras); 29901ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake if (mediaUri != null) { 30001ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake bob.setMediaUri(mediaUri); 30101ce79ae5cba1be3859bf520d2186c882631fca5Ian Lake } else if (Build.VERSION.SDK_INT >= 23) { 3029cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake bob.setMediaUri(MediaDescriptionCompatApi23.getMediaUri(descriptionObj)); 3039cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake } 304cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik MediaDescriptionCompat descriptionCompat = bob.build(); 305cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik descriptionCompat.mDescriptionObj = descriptionObj; 306cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 307cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return descriptionCompat; 308cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 309cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 310cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public static final Parcelable.Creator<MediaDescriptionCompat> CREATOR = 311cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik new Parcelable.Creator<MediaDescriptionCompat>() { 312cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik @Override 313cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public MediaDescriptionCompat createFromParcel(Parcel in) { 314cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik if (Build.VERSION.SDK_INT < 21) { 315cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return new MediaDescriptionCompat(in); 316cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } else { 317cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return fromMediaDescription(MediaDescriptionCompatApi21.fromParcel(in)); 318cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 319cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 320cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 321cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik @Override 322cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public MediaDescriptionCompat[] newArray(int size) { 323cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return new MediaDescriptionCompat[size]; 324cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 325cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik }; 326cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 327cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 328cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Builder for {@link MediaDescriptionCompat} objects. 329cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 330cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public static final class Builder { 331cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private String mMediaId; 332cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private CharSequence mTitle; 333cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private CharSequence mSubtitle; 334cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private CharSequence mDescription; 335cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private Bitmap mIcon; 336cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private Uri mIconUri; 337cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik private Bundle mExtras; 3389cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake private Uri mMediaUri; 339cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 340cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 341cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Creates an initially empty builder. 342cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 343cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public Builder() { 344cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 345cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 346cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 347cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the media id. 348cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 349cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param mediaId The unique id for the item or null. 350cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 351cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 3529cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setMediaId(@Nullable String mediaId) { 353cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mMediaId = mediaId; 354cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 355cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 356cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 357cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 358cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the title. 359cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 360cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param title A title suitable for display to the user or null. 361cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 362cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 3639cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setTitle(@Nullable CharSequence title) { 364cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mTitle = title; 365cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 366cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 367cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 368cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 369cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the subtitle. 370cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 371cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param subtitle A subtitle suitable for display to the user or null. 372cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 373cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 3749cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setSubtitle(@Nullable CharSequence subtitle) { 375cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mSubtitle = subtitle; 376cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 377cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 378cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 379cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 380cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the description. 381cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 382cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param description A description suitable for display to the user or 383cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * null. 384cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 385cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 3869cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setDescription(@Nullable CharSequence description) { 387cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mDescription = description; 388cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 389cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 390cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 391cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 392cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the icon. 393cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 394cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param icon A {@link Bitmap} icon suitable for display to the user or 395cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * null. 396cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 397cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 3989cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setIconBitmap(@Nullable Bitmap icon) { 399cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIcon = icon; 400cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 401cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 402cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 403cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 404cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets the icon uri. 405cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 406cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param iconUri A {@link Uri} for an icon suitable for display to the 407cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * user or null. 408cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 409cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 4109cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setIconUri(@Nullable Uri iconUri) { 411cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mIconUri = iconUri; 412cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 413cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 414cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 415cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 416cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Sets a bundle of extras. 417cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 418cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @param extras The extras to include with this description or null. 419cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return this 420cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 4219cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setExtras(@Nullable Bundle extras) { 422cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik mExtras = extras; 423cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return this; 424cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 425cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik 426cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik /** 4279cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * Sets the media uri. 4289cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * 4299cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * @param mediaUri The content's {@link Uri} for the item or null. 4309cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake * @return this 4319cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake */ 4329cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake public Builder setMediaUri(@Nullable Uri mediaUri) { 4339cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake mMediaUri = mediaUri; 4349cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake return this; 4359cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake } 4369cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake 4379cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake /** 438cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * Creates a {@link MediaDescriptionCompat} instance with the specified 439cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * fields. 440cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * 441cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik * @return A MediaDescriptionCompat instance. 442cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik */ 443cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik public MediaDescriptionCompat build() { 444cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik return new MediaDescriptionCompat(mMediaId, mTitle, mSubtitle, mDescription, mIcon, 4459cdd87d08a3295f5f973b70008840d6bf8de8aa1Ian Lake mIconUri, mExtras, mMediaUri); 446cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 447cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik } 448cf9daf1b11f55ecb9f4008cd1c7af2c8dac990afRoboErik} 449