پس از استفاده از آیتمهای قابل مرور یا قابل پخش برای ساخت سلسله مراتب محتوای خود ، سبکهای محتوا را برای تعیین نحوه نمایش این آیتمها در خودرو اعمال کنید. از این سبکهای محتوا استفاده کنید:

شکل ۱. موارد فهرست، عناوین و فرادادهها را نسبت به تصاویر در اولویت قرار میدهند.

شکل ۲. آیتمهای جدولی، تصاویر را نسبت به عناوین و فرادادهها در اولویت قرار میدهند.
تنظیم سبکهای محتوای پیشفرض
شما میتوانید پیشفرضهای سراسری را برای نحوه نمایش آیتمهای رسانهای خود تنظیم کنید. برای انجام این کار، ثابتهای خاصی را در بسته BrowserRoot extras که توسط پیادهسازی onGetRoot سرویس شما بازگردانده میشود، قرار دهید و برای تعیین سبک مناسب، به دنبال این ثابتها بگردید.
این موارد اضافی میتوانند به عنوان کلید در بسته استفاده شوند:
DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE: یک راهنمای نمایش برای تمام آیتمهای قابل مرور در درخت مرور.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE: یک راهنمای نمایش برای تمام آیتمهای قابل پخش در درخت مرور.
این کلیدها میتوانند به این مقادیر ثابت صحیح نگاشت شوند تا بر نحوه نمایش آن موارد تأثیر بگذارند:
DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM: موارد مربوطه به عنوان موارد لیست ارائه شدهاند.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM: موارد مربوطه به صورت موارد شبکهای نمایش داده میشوند.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM: آیتمهای مربوطه به عنوان آیتمهای لیست "دستهبندی" ارائه میشوند، مشابه آیتمهای لیست معمولی، اما حاشیههایی در اطراف آیکونهای آیتمها اعمال میشود. این امر ظاهر آیکونهای کوچک را بهبود میبخشد. آیکونها باید بردارهای قابل ترسیم با قابلیت رنگآمیزی باشند. انتظار میرود این نکته فقط برای آیتمهای قابل مرور ارائه شود.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_GRID_ITEM: آیتمهای مربوطه به صورت آیتمهای شبکهای "رده" نمایش داده میشوند و مشابه آیتمهای شبکهای معمولی هستند، اما حاشیههایی در اطراف آیکونهای آیتمها اعمال میشود. این امر ظاهر آیکونهای کوچک را بهبود میبخشد. آیکونها باید بردارهای قابل ترسیم با قابلیت رنگآمیزی باشند. انتظار میرود این نکته فقط برای آیتمهای قابل مرور ارائه شود.
این قطعه کد نحوه تنظیم سبک محتوای پیشفرض برای موارد قابل مرور به صورت شبکهای و موارد قابل پخش به صورت لیست را نشان میدهد:
کاتلین
import androidx.media.utils.MediaConstants
@Nullable
override fun onGetRoot(
@NonNull clientPackageName: String,
clientUid: Int,
@Nullable rootHints: Bundle
): BrowserRoot {
val extras = Bundle()
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM)
return BrowserRoot(ROOT_ID, extras)
}
جاوا
import androidx.media.utils.MediaConstants;
@Nullable
@Override
public BrowserRoot onGetRoot(
@NonNull String clientPackageName,
int clientUid,
@Nullable Bundle rootHints) {
Bundle extras = new Bundle();
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM);
return new BrowserRoot(ROOT_ID, extras);
}
تنظیم سبکهای محتوای هر آیتم
شما میتوانید سبک محتوای پیشفرض را برای هر زیرمجموعهی یک آیتم رسانهای قابل مرور، و همچنین برای هر آیتم رسانهای، لغو کنید. برای لغو پیشفرض برای زیرمجموعههای یک آیتم رسانهای قابل مرور، یک بستهی اضافی در MediaDescription آیتم رسانهای ایجاد کنید و همان نکات ذکر شدهی قبلی را اضافه کنید:
DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLEبرای فرزندان قابل پخش آن آیتم اعمال میشود.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLEبرای فرزندان قابل مرور آن آیتم اعمال میشود.
برای لغو پیشفرض برای یک آیتم رسانهای خاص (نه زیرمجموعههای آن)، یک بسته اضافی در MediaDescription آیتم رسانهای ایجاد کنید. سپس، یک راهنما با کلید DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM اضافه کنید. از همان مقادیری که قبلاً توضیح داده شد برای مشخص کردن نحوه نمایش آن آیتم استفاده کنید.
این قطعه کد نشان میدهد که چگونه میتوان یک MediaItem قابل مرور ایجاد کرد که سبک محتوای پیشفرض را برای خود و فرزندانش لغو میکند. این MediaItem خودش را به عنوان یک آیتم فهرست دستهبندی، فرزندان قابل مرورش را به عنوان آیتمهای فهرست و فرزندان قابل پخشش را به عنوان آیتمهای شبکهای سبکبندی میکند.
کاتلین
import androidx.media.utils.MediaConstants
private fun createBrowsableMediaItem(
mediaId: String,
folderName: String,
iconUri: Uri
): MediaBrowser.MediaItem {
val mediaDescriptionBuilder = MediaDescription.Builder()
mediaDescriptionBuilder.setMediaId(mediaId)
mediaDescriptionBuilder.setTitle(folderName)
mediaDescriptionBuilder.setIconUri(iconUri)
val extras = Bundle()
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM)
mediaDescriptionBuilder.setExtras(extras)
return MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE)
}
جاوا
import androidx.media.utils.MediaConstants;
private MediaBrowser.MediaItem createBrowsableMediaItem(
String mediaId,
String folderName,
Uri iconUri) {
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId(mediaId);
mediaDescriptionBuilder.setTitle(folderName);
mediaDescriptionBuilder.setIconUri(iconUri);
Bundle extras = new Bundle();
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM);
mediaDescriptionBuilder.setExtras(extras);
return new MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE);
}
گروهبندی موارد با استفاده از نکات عنوان
برای گروهبندی آیتمهای رسانهای مرتبط، از یک راهنمای هر آیتم استفاده کنید. هر آیتم رسانهای در یک گروه باید یک بستهی اضافی در MediaDescription خود تعریف کند. این بسته باید شامل یک نگاشت با کلید DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE و یک مقدار رشتهای یکسان باشد. این رشته را محلیسازی کنید، زیرا برای عنوان گروه استفاده میشود.
این قطعه کد نحوه ایجاد یک MediaItem با عنوان زیرگروه Songs را نشان میدهد:
کاتلین
import androidx.media.utils.MediaConstants
private fun createMediaItem(
mediaId: String,
folderName: String,
iconUri: Uri
): MediaBrowser.MediaItem {
val mediaDescriptionBuilder = MediaDescription.Builder()
mediaDescriptionBuilder.setMediaId(mediaId)
mediaDescriptionBuilder.setTitle(folderName)
mediaDescriptionBuilder.setIconUri(iconUri)
val extras = Bundle()
extras.putString(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE,
"Songs")
mediaDescriptionBuilder.setExtras(extras)
return MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), /* playable or browsable flag*/)
}
جاوا
import androidx.media.utils.MediaConstants;
private MediaBrowser.MediaItem createMediaItem(String mediaId, String folderName, Uri iconUri) {
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId(mediaId);
mediaDescriptionBuilder.setTitle(folderName);
mediaDescriptionBuilder.setIconUri(iconUri);
Bundle extras = new Bundle();
extras.putString(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE,
"Songs");
mediaDescriptionBuilder.setExtras(extras);
return new MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), /* playable or browsable flag*/);
}
برنامه شما باید تمام آیتمهای رسانهای را که میخواهید به صورت یک بلوک پیوسته گروهبندی کنید، ارسال کند. برای مثال، نمایش دو گروه از آیتمهای رسانهای، "آهنگها" و "آلبومها"، را به همین ترتیب در نظر بگیرید. اگر برنامه شما پنج آیتم رسانهای را به این ترتیب ارسال کند، Android Auto و AAOS آنها را به عنوان چهار گروه جداگانه تفسیر میکنند:
- مورد رسانهای A با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانهای B با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums") - مورد رسانهای C با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانه D با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانه E با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
این منجر به این چهار گروه میشود:
- گروه ۱، با نام «آهنگها»، حاوی آیتم رسانهای A
- گروه ۲، با نام «آلبومها»، حاوی مورد رسانهای B
- گروه ۳، به نام «آهنگها»، شامل موارد رسانهای C و D
- گروه ۴، با نام «آلبومها»، شامل آیتم رسانهای E
برای نمایش این آیتمها در دو گروه، برنامه شما باید آیتمهای رسانهای را به این ترتیب ارسال کند:
- مورد رسانهای A با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانهای C با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانه D با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs") - مورد رسانهای B با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums") - مورد رسانه E با
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
نمایش شاخصهای فراداده اضافی
شما میتوانید شاخصهای فراداده اضافی را برای ارائه اطلاعات اجمالی برای محتوا در درخت مرورگر رسانه و در حین پخش، اضافه کنید.
در درخت مرور، Android Auto و AAOS موارد اضافی مرتبط با یک آیتم را میخوانند و شاخصها را نمایش میدهند. در طول پخش رسانه، Android Auto و AAOS فرادادههای مربوط به جلسه رسانه را میخوانند و به دنبال ثابتهای خاصی میگردند تا تعیین کنند کدام شاخصها را نمایش دهند.

شکل ۳. نمای پخش به همراه فراداده.

شکل ۴. نمای مرور برای محتوای پخش نشده.
این ثابتها میتوانند هم در توضیحات MediaItem و هم در MediaMetadata استفاده شوند:
EXTRA_DOWNLOAD_STATUS: وضعیت دانلود یک آیتم را نشان میدهد. از این ثابت به عنوان کلید استفاده کنید. این ثابتهای طولانی مقادیر ممکن هستند:-
STATUS_DOWNLOADED: مورد به طور کامل دانلود شده است. -
STATUS_DOWNLOADING: مورد در حال دانلود است. -
STATUS_NOT_DOWNLOADED): مورد دانلود نشده است.
-
METADATA_KEY_IS_EXPLICIT: نشان میدهد که آیتم حاوی محتوای صریح است. برای نشان دادن اینکه یک آیتم صریح است، از این ثابت به عنوان کلید و ازMETADATA_VALUE_ATTRIBUTE_PRESENTطولانی به عنوان مقدار استفاده کنید.
این ثابتها فقط میتوانند در توضیحات اضافی MediaItem استفاده شوند:
DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS: وضعیت تکمیل محتوای طولانی مانند قسمتهای پادکست و کتابهای صوتی را نشان میدهد. از این ثابت به عنوان کلید استفاده کنید. این ثابتهای صحیح مقادیر ممکن هستند:DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_NOT_PLAYED: مورد پخش نشده است.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED: آیتم به صورت ناقص پخش شده است و موقعیت فعلی آن جایی در میانه قرار دارد.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_FULLY_PLAYED: مورد تکمیل شد.
DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE: پیشرفت تکمیل محتوای طولانی را به صورت یک عدد دوتایی بین ۰.۰ و ۱.۰، شامل موارد زیر، نشان میدهد. این اطلاعات بیشتری در مورد وضعیتPARTIALLY_PLAYINGارائه میدهد و به Android Auto یا AAOS اجازه میدهد تا یک نشانگر پیشرفت معنادارتر، مانند یک نوار پیشرفت، نمایش دهند. اگر از این مورد اضافی استفاده میکنید، برای یادگیری نحوه بهروز نگه داشتن این نشانگر پس از نمایش اولیه، به بخش «بهروزرسانی نوار پیشرفت در نمای مرور هنگام پخش محتوا» مراجعه کنید.
برای نمایش نشانگرهایی که هنگام مرور درخت مرور رسانه توسط کاربر ظاهر میشوند، یک بسته اضافی ایجاد کنید که شامل یک یا چند مورد از این ثابتها باشد. سپس، آن بسته را به متد MediaDescription.Builder.setExtras منتقل کنید.
این قطعه کد نحوه نمایش شاخصها برای یک آیتم رسانهای مشخص که ۷۰٪ تکمیل شده است را نشان میدهد:
کاتلین
import androidx.media.utils.MediaConstants
val extras = Bundle()
extras.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED)
extras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.7)
val description =
MediaDescriptionCompat.Builder()
.setMediaId(/*...*/)
.setTitle(resources.getString(/*...*/))
.setExtras(extras)
.build()
return MediaBrowserCompat.MediaItem(description, /* flags */)
جاوا
import androidx.media.utils.MediaConstants;
Bundle extras = new Bundle();
extras.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED);
extras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.7);
MediaDescriptionCompat description =
new MediaDescriptionCompat.Builder()
.setMediaId(/*...*/)
.setTitle(resources.getString(/*...*/))
.setExtras(extras)
.build();
return new MediaBrowserCompat.MediaItem(description, /* flags */);
برای نمایش نشانگرهای یک آیتم رسانهای که در حال پخش است، مقادیری را برای METADATA_KEY_IS_EXPLICIT یا EXTRA_DOWNLOAD_STATUS در MediaMetadataCompat مربوط به mediaSession خود تعریف کنید.
این قطعه کد نشان میدهد که چگونه میتوان نشان داد که آهنگ در نمای پخش، صریح و دانلود شده است:
کاتلین
import androidx.media.utils.MediaConstants
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, "Song Name")
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, "Artist name")
.putString(
MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
albumArtUri.toString())
.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
.putLong(
MediaDescriptionCompat.EXTRA_DOWNLOAD_STATUS,
MediaDescriptionCompat.STATUS_DOWNLOADED)
.build())
جاوا
import androidx.media.utils.MediaConstants;
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, "Song Name")
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, "Artist name")
.putString(
MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
albumArtUri.toString())
.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
.putLong(
MediaDescriptionCompat.EXTRA_DOWNLOAD_STATUS,
MediaDescriptionCompat.STATUS_DOWNLOADED)
.build());
بهروزرسانی نوار پیشرفت در نمای مرور هنگام پخش محتوا
همانطور که قبلاً ذکر شد، میتوانید از DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE اضافی برای نمایش نوار پیشرفت برای محتوای نیمهباز در نمای مرور استفاده کنید. با این حال، اگر کاربر به پخش محتوای نیمهباز ادامه دهد، آن نشانگر به مرور زمان نادرست میشود.
برای اینکه Android Auto و AAOS نوار پیشرفت را بهروز نگه دارند، اطلاعات اضافی را در MediaMetadataCompat و PlaybackStateCompat ارائه دهید تا محتوای در حال انجام را به موارد رسانهای در نمای مرور پیوند دهید.
برای اینکه یک آیتم رسانهای نوار پیشرفت بهروزرسانی خودکار داشته باشد، باید این الزامات رعایت شود:
هنگام ایجاد،
MediaItemبایدDESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGEدر قسمتهای اضافی خود با مقداری بین0.0و1.0، شامل موارد زیر، ارسال کند.تابع
MediaMetadataCompatبایدMETADATA_KEY_MEDIA_IDبه همراه یک مقدار رشتهای برابر با شناسه رسانه ارسالی بهMediaItemارسال کند.PlaybackStateCompatباید شامل یک کلید اضافی به نامPLAYBACK_STATE_EXTRAS_KEY_MEDIA_IDباشد که به یک مقدار رشتهای برابر با شناسه رسانه ارسال شده بهMediaItemنگاشت میشود.
این قطعه کد نشان میدهد که چگونه میتوان نشان داد که آیتم در حال پخش به یک آیتم در نمای مرور لینک شده است:
کاتلین
import androidx.media.utils.MediaConstants
// When the MediaItem is constructed to show in the browse view.
// Suppose the item was 25% complete when the user launched the browse view.
val mediaItemExtras = Bundle()
mediaItemExtras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.25)
val description =
MediaDescriptionCompat.Builder()
.setMediaId("my-media-id")
.setExtras(mediaItemExtras)
// ...and any other setters.
.build()
return MediaBrowserCompat.MediaItem(description, /* flags */)
// Elsewhere, when the user has selected MediaItem for playback.
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_MEDIA_ID, "my-media-id")
// ...and any other setters.
.build())
val playbackStateExtras = Bundle()
playbackStateExtras.putString(
MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID, "my-media-id")
mediaSession.setPlaybackState(
PlaybackStateCompat.Builder()
.setExtras(playbackStateExtras)
// ...and any other setters.
.build())
جاوا
import androidx.media.utils.MediaConstants;
// When the MediaItem is constructed to show in the browse view.
// Suppose the item was 25% complete when the user launched the browse view.
Bundle mediaItemExtras = new Bundle();
mediaItemExtras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.25);
MediaDescriptionCompat description =
new MediaDescriptionCompat.Builder()
.setMediaId("my-media-id")
.setExtras(mediaItemExtras)
// ...and any other setters.
.build();
return new MediaBrowserCompat.MediaItem(description, /* flags */);
// Elsewhere, when the user has selected MediaItem for playback.
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_MEDIA_ID, "my-media-id")
// ...and any other setters.
.build());
Bundle playbackStateExtras = new Bundle();
playbackStateExtras.putString(
MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID, "my-media-id");
mediaSession.setPlaybackState(
new PlaybackStateCompat.Builder()
.setExtras(playbackStateExtras)
// ...and any other setters.
.build());
حتی محتوای پخش نشده یا کاملاً پخش شده نیز میتواند یک نوار پیشرفت به صورت خودکار در حال بهروزرسانی را نمایش دهد. این اتفاق در صورتی رخ میدهد که آیتمهای رسانهای مربوطه شامل DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE اضافی با مقدار 0.0 (برای پخش نشده) یا 1.0 (برای پخش شده کامل) باشند. پس از انتخاب این آیتمهای رسانهای توسط کاربر، Android Auto و AAOS نوار پیشرفت را روی سایر شاخصهای پیشرفت نمایش میدهند.