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

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

شکل 2. آیتم های گرید تصاویر را بر عناوین و ابرداده ها اولویت می دهند.
سبک های محتوای پیش فرض را تنظیم کنید
میتوانید پیشفرضهای جهانی را برای نحوه نمایش آیتمهای رسانه خود تنظیم کنید. برای انجام این کار، ثابت های خاصی را در بسته اضافی BrowserRoot
که توسط پیاده سازی 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
قابل مرور را نشان می دهد که سبک محتوای پیش فرض را برای خود و فرزندانش لغو می کند. خود را به عنوان یک آیتم فهرست دسته بندی، نوادگان قابل مرور آن به عنوان آیتم های فهرست، و فرزندان قابل پخش آن به عنوان آیتم های شبکه ای استایل می کند.
کاتلین
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")
در نتیجه این چهار گروه به وجود می آیند:
- گروه 1، به نام "ترانه ها"، حاوی آیتم رسانه ای A
- گروه 2، به نام "آلبوم"، حاوی آیتم رسانه ای B
- گروه 3، به نام "ترانه ها"، حاوی آیتم های رسانه ای C و D
- گروه 4، به نام "آلبوم"، حاوی آیتم رسانه ای 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 فرادادههای جلسه رسانه را میخوانند و به دنبال ثابتهای خاصی میگردند تا مشخص کنند کدام شاخصها را نمایش دهند.

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

شکل 4. نمای محتوای پخش نشده را مرور کنید.
این ثابت ها را می توان هم در توضیحات اضافی 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
: نشان دهنده پیشرفت تکمیل در محتوای طولانی به صورت دو برابری بین 0.0 و 1.0، شامل. این اطلاعات بیشتر در مورد وضعیتPARTIALLY_PLAYING
ارائه میکند و به Android Auto یا AAOS اجازه میدهد یک نشانگر پیشرفت معنیدارتر، مانند نوار پیشرفت، نمایش دهند. اگر از این موارد اضافی استفاده میکنید، به بهروزرسانی نوار پیشرفت در نمای مرور هنگام پخش محتوا مراجعه کنید تا یاد بگیرید چگونه این شاخص را پس از نمایش اولیه بهروز نگه دارید.
برای نمایش نشانگرهایی که در حالی که کاربر در حال مرور درخت مرور رسانه است ظاهر می شوند، یک بسته اضافی ایجاد کنید که شامل یک یا چند مورد از این ثابت ها باشد. سپس، آن بسته را به متد MediaDescription.Builder.setExtras
منتقل کنید.
این قطعه نحوه نمایش نشانگرها را برای یک مورد رسانه صریح که 70٪ کامل است نشان می دهد:
کاتلین
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
را در mediaSession
MediaMetadataCompat
خود اعلام کنید.
این قطعه کد نحوه نشان دادن صریح بودن و بارگیری آهنگ در نمای پخش را نشان می دهد:
کاتلین
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());
P حتی محتوای پخش نشده یا به طور کامل پخش شده می تواند نوار پیشرفت به روز رسانی خودکار را نمایش دهد. اگر موارد رسانه مربوطه شامل DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
اضافی با مقدار 0.0
(برای پخش نشده) یا 1.0
(برای پخش کامل) باشد. پس از اینکه کاربر این موارد رسانه ای را انتخاب کرد، Android Auto و AAOS نوار پیشرفت را بر روی سایر نشانگرهای پیشرفت نمایش می دهند.
پس از استفاده از موارد قابل مرور یا قابل پخش برای ایجاد سلسله مراتب محتوای خود ، سبک های محتوا را برای تعیین نحوه نمایش آن موارد در خودرو اعمال کنید. از این سبک های محتوا استفاده کنید:

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

شکل 2. آیتم های گرید تصاویر را بر عناوین و ابرداده ها اولویت می دهند.
سبک های محتوای پیش فرض را تنظیم کنید
میتوانید پیشفرضهای جهانی را برای نحوه نمایش آیتمهای رسانه خود تنظیم کنید. برای انجام این کار، ثابت های خاصی را در بسته اضافی BrowserRoot
که توسط پیاده سازی 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
قابل مرور را نشان می دهد که سبک محتوای پیش فرض را برای خود و فرزندانش لغو می کند. خود را به عنوان یک آیتم فهرست دسته بندی، نوادگان قابل مرور آن به عنوان آیتم های فهرست، و فرزندان قابل پخش آن به عنوان آیتم های شبکه ای استایل می کند.
کاتلین
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")
در نتیجه این چهار گروه به وجود می آیند:
- گروه 1، به نام "ترانه ها"، حاوی آیتم رسانه ای A
- گروه 2، به نام "آلبوم"، حاوی آیتم رسانه ای B
- گروه 3، به نام "ترانه ها"، حاوی آیتم های رسانه ای C و D
- گروه 4، به نام "آلبوم"، حاوی آیتم رسانه ای 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 فرادادههای جلسه رسانه را میخوانند و به دنبال ثابتهای خاصی میگردند تا مشخص کنند کدام شاخصها را نمایش دهند.

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

شکل 4. نمای محتوای پخش نشده را مرور کنید.
این ثابت ها را می توان هم در توضیحات اضافی 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
: نشان دهنده پیشرفت تکمیل در محتوای طولانی به صورت دو برابری بین 0.0 و 1.0، شامل. این اطلاعات بیشتر در مورد وضعیتPARTIALLY_PLAYING
ارائه میکند و به Android Auto یا AAOS اجازه میدهد یک نشانگر پیشرفت معنیدارتر، مانند نوار پیشرفت، نمایش دهند. اگر از این موارد اضافی استفاده میکنید، به بهروزرسانی نوار پیشرفت در نمای مرور هنگام پخش محتوا مراجعه کنید تا یاد بگیرید چگونه این شاخص را پس از نمایش اولیه بهروز نگه دارید.
برای نمایش نشانگرهایی که در حالی که کاربر در حال مرور درخت مرور رسانه است ظاهر می شوند، یک بسته اضافی ایجاد کنید که شامل یک یا چند مورد از این ثابت ها باشد. سپس، آن بسته را به متد MediaDescription.Builder.setExtras
منتقل کنید.
این قطعه نحوه نمایش نشانگرها را برای یک مورد رسانه صریح که 70٪ کامل است نشان می دهد:
کاتلین
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
را در mediaSession
MediaMetadataCompat
خود اعلام کنید.
این قطعه کد نحوه نشان دادن صریح بودن و بارگیری آهنگ در نمای پخش را نشان می دهد:
کاتلین
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());
P حتی محتوای پخش نشده یا به طور کامل پخش شده می تواند نوار پیشرفت به روز رسانی خودکار را نمایش دهد. اگر موارد رسانه مربوطه شامل DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
اضافی با مقدار 0.0
(برای پخش نشده) یا 1.0
(برای پخش کامل) باشد. پس از اینکه کاربر این موارد رسانه ای را انتخاب کرد، Android Auto و AAOS نوار پیشرفت را بر روی سایر نشانگرهای پیشرفت نمایش می دهند.