कॉन्टेंट का क्रम तय करने के लिए, ब्राउज़ किए जा सकने वाले या चलाए जा सकने वाले आइटम का इस्तेमाल करें. इसके बाद, कॉन्टेंट स्टाइल लागू करें, ताकि यह तय किया जा सके कि वे आइटम कार में कैसे दिखेंगे. कॉन्टेंट की इन स्टाइल का इस्तेमाल करें:

पहली इमेज. सूची में शामिल आइटम के लिए, इमेज के बजाय टाइटल और मेटाडेटा को प्राथमिकता दी जाती है.

दूसरी इमेज. ग्रिड आइटम में, टाइटल और मेटाडेटा के बजाय इमेज को प्राथमिकता दी जाती है.
कॉन्टेंट के डिफ़ॉल्ट स्टाइल सेट करना
मीडिया आइटम के दिखने के तरीके के लिए, ग्लोबल डिफ़ॉल्ट सेट किए जा सकते हैं. इसके लिए, अपनी सेवा के onGetRoot
को लागू करने के दौरान, BrowserRoot
extras बंडल में कुछ खास कॉन्स्टेंट शामिल करें. साथ ही, सही स्टाइल तय करने के लिए इन कॉन्स्टेंट को खोजें.
इन एक्स्ट्रा का इस्तेमाल बंडल में कुंजियों के तौर पर किया जा सकता है:
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
: मिलते-जुलते आइटम, "कैटगरी" ग्रिड आइटम के तौर पर दिखाए जाते हैं. ये सामान्य ग्रिड आइटम की तरह ही होते हैं. हालांकि, आइटम के आइकॉन के चारों ओर मार्जिन लागू होते हैं. इससे छोटे आइकॉन बेहतर दिखते हैं. आइकॉन, टिंट किए जा सकने वाले वेक्टर ड्रॉएबल होने चाहिए. यह जानकारी सिर्फ़ उन आइटम के लिए दी जानी चाहिए जिन्हें ब्राउज़ किया जा सकता है.
इस कोड स्निपेट में बताया गया है कि ब्राउज़ किए जा सकने वाले आइटम के लिए, कॉन्टेंट की डिफ़ॉल्ट स्टाइल को ग्रिड पर और चलाए जा सकने वाले आइटम के लिए, कॉन्टेंट की डिफ़ॉल्ट स्टाइल को सूचियों पर कैसे सेट करें:
Kotlin
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)
}
Java
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
, खुद के और अपने डिसेंडेंट के लिए कॉन्टेंट की डिफ़ॉल्ट स्टाइल को बदलता है. यह खुद को कैटगरी की सूची के आइटम के तौर पर स्टाइल करता है. इसके ब्राउज़ किए जा सकने वाले डिसेंडेंट, सूची के आइटम के तौर पर स्टाइल किए जाते हैं. इसके चलाए जा सकने वाले डिसेंडेंट, ग्रिड आइटम के तौर पर स्टाइल किए जाते हैं.
Kotlin
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)
}
Java
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
सबग्रुप हेडिंग दी गई है:
Kotlin
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*/)
}
Java
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 इन्हें चार अलग-अलग ग्रुप के तौर पर पहचानते हैं:
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Aextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
वाला मीडिया आइटम Bextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Cextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Dextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
वाला मीडिया आइटम E
इस वजह से, ये चार ग्रुप बनते हैं:
- "गाने" नाम वाला ग्रुप 1, जिसमें मीडिया आइटम A शामिल है
- ग्रुप 2, जिसे "एल्बम" कहा जाता है. इसमें मीडिया आइटम B शामिल है
- ग्रुप 3, जिसे "गाने" कहा जाता है. इसमें मीडिया आइटम C और D शामिल हैं
- ग्रुप 4, जिसे "ऐल्बम" कहा जाता है. इसमें मीडिया आइटम E शामिल है
इन आइटम को दो ग्रुप में दिखाने के लिए, आपके ऐप्लिकेशन को मीडिया आइटम इस क्रम में पास करने होंगे:
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Aextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Cextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
वाला मीडिया आइटम Dextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
वाला मीडिया आइटम Bextras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
वाला मीडिया आइटम E
मेटाडेटा के अन्य इंडिकेटर दिखाना
मीडिया ब्राउज़र ट्री में और वीडियो चलाने के दौरान, कॉन्टेंट के बारे में एक नज़र में जानकारी देने के लिए, मेटाडेटा के अन्य इंडिकेटर शामिल किए जा सकते हैं.
ब्राउज़ ट्री में, 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
: इससे लंबी अवधि के कॉन्टेंट को पूरा करने की प्रोग्रेस का पता चलता है. यह 0.0 और 1.0 के बीच की एक डबल वैल्यू होती है. इससेPARTIALLY_PLAYING
की स्थिति के बारे में ज़्यादा जानकारी मिलती है. इससे Android Auto या AAOS को प्रोग्रेस इंडिकेटर को ज़्यादा बेहतर तरीके से दिखाने में मदद मिलती है. जैसे, प्रोग्रेस बार. अगर आपको इस एक्स्ट्रा का इस्तेमाल करना है, तो कॉन्टेंट चलने के दौरान ब्राउज़ व्यू में प्रोग्रेस बार को अपडेट करना लेख पढ़ें. इसमें बताया गया है कि शुरुआती इंप्रेशन के बाद, इस इंडिकेटर को अप-टू-डेट कैसे रखा जाए.
उपयोगकर्ता के मीडिया ब्राउज़ ट्री ब्राउज़ करते समय दिखने वाले इंडिकेटर दिखाने के लिए, एक ऐसा एक्स्ट्रा बंडल बनाएं जिसमें इनमें से एक या उससे ज़्यादा कॉन्स्टेंट शामिल हों.
इसके बाद, उस बंडल को MediaDescription.Builder.setExtras
तरीके से पास करें.
इस स्निपेट में, 70% तक चल चुके अश्लील कॉन्टेंट वाले मीडिया आइटम के लिए इंडिकेटर दिखाने का तरीका बताया गया है:
Kotlin
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 */)
Java
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 */);
फ़िलहाल चल रहे मीडिया आइटम के लिए इंडिकेटर दिखाने के लिए, अपने mediaSession
के MediaMetadataCompat
में METADATA_KEY_IS_EXPLICIT
या EXTRA_DOWNLOAD_STATUS
के लिए वैल्यू तय करें.
इस कोड स्निपेट में बताया गया है कि प्लेबैक व्यू में मौजूद गाना अश्लील है और उसे डाउनलोड किया गया है:
Kotlin
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())
Java
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
को पास किए गए मीडिया आईडी के बराबर स्ट्रिंग वैल्यू पर मैप करता है.
इस कोड स्निपेट में बताया गया है कि ब्राउज़ व्यू में मौजूद किसी आइटम से, चल रहे आइटम को कैसे लिंक किया जाता है:
Kotlin
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())
Java
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, प्रोग्रेस बार को अन्य प्रोग्रेस इंडिकेटर के ऊपर दिखाते हैं.