หลังจากใช้รายการที่เรียกดูหรือเล่นได้เพื่อสร้างลำดับชั้นของเนื้อหา ให้ใช้รูปแบบเนื้อหาเพื่อกำหนดวิธีแสดงรายการเหล่านั้นในรถ ใช้รูปแบบเนื้อหาต่อไปนี้

รูปที่ 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
: รายการที่เกี่ยวข้องจะแสดงเป็นรายการตาราง "หมวดหมู่" และคล้ายกับ รายการตารางทั่วไป แต่จะมีการใช้ระยะขอบรอบๆ ไอคอนของรายการ ซึ่งจะ ปรับปรุงลักษณะที่ปรากฏของไอคอนขนาดเล็ก ไอคอนต้องเป็นภาพวาดแบบเวกเตอร์ที่เปลี่ยนสีได้ ระบบคาดหวังให้ระบุคำใบ้นี้สำหรับรายการที่เรียกดูได้เท่านั้น
ข้อมูลโค้ดนี้แสดงวิธีตั้งค่ารูปแบบเนื้อหาเริ่มต้นสำหรับรายการที่เรียกดูได้เป็นตารางกริด และรายการที่เล่นได้เป็นรายการ
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
ที่เรียกใช้แทน
รูปแบบเนื้อหาเริ่มต้นสำหรับตัวมันเองและองค์ประกอบย่อย โดยจะกำหนดสไตล์ให้ตัวเองเป็น
รายการในรายการหมวดหมู่ ลูกหลานที่เรียกดูได้เป็นรายการในลิสต์ และลูกหลานที่เล่นได้เป็นรายการในตารางกริด
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*/);
}
แอปของคุณต้องส่งรายการสื่อทั้งหมดที่ต้องการจัดกลุ่มไว้ด้วยกันเป็นบล็อกที่ต่อเนื่องกัน ตัวอย่างเช่น ลองพิจารณาการแสดงรายการสื่อ 2 กลุ่ม ได้แก่ "เพลง" และ "อัลบั้ม" ตามลำดับ หากแอปส่งรายการสื่อ 5 รายการตามลำดับนี้ Android Auto และ AAOS จะตีความรายการเหล่านั้นเป็น 4 กลุ่มแยกกัน ดังนี้
- รายการสื่อ 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")
ซึ่งจะทำให้เกิดกลุ่ม 4 กลุ่มต่อไปนี้
- กลุ่ม 1 ชื่อ "เพลง" ซึ่งมีรายการสื่อ ก
- กลุ่ม 2 ชื่อ "อัลบั้ม" ซึ่งมีรายการสื่อ B
- กลุ่ม 3 ชื่อ "เพลง" ซึ่งมีรายการสื่อ C และ D
- กลุ่ม 4 ชื่อ "อัลบั้ม" ซึ่งมีรายการสื่อ E
หากต้องการแสดงรายการเหล่านี้ใน 2 กลุ่ม แอปจะต้องส่งรายการสื่อ ตามลำดับต่อไปนี้แทน
- รายการสื่อ 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
: บ่งชี้ว่ารายการมีเนื้อหาโจ่งแจ้ง หากต้องการระบุว่ารายการเป็นเนื้อหาโจ่งแจ้ง ให้ใช้ค่าคงที่นี้เป็นคีย์และ longMETADATA_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 แสดงตัวบ่งชี้ความคืบหน้าที่มีความหมายมากขึ้น เช่น แถบความคืบหน้า หากคุณใช้ส่วนเสริมนี้ โปรดดูอัปเดตแถบความคืบหน้าในมุมมอง การเรียกดูขณะเล่นเนื้อหาเพื่อดูวิธีอัปเดตตัวบ่งชี้นี้ หลังจากแสดงผลครั้งแรก
หากต้องการแสดงตัวบ่งชี้ที่ปรากฏขณะที่ผู้ใช้กำลังเรียกดูทรีการเรียกดูสื่อ
ให้สร้างชุดข้อมูลเพิ่มเติมที่มีค่าคงที่เหล่านี้อย่างน้อย 1 รายการ
จากนั้นส่งชุดดังกล่าวไปยังเมธอด 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 */);
หากต้องการแสดงตัวบ่งชี้สำหรับรายการสื่อที่กำลังเล่น ให้ประกาศค่าสำหรับ METADATA_KEY_IS_EXPLICIT
หรือ EXTRA_DOWNLOAD_STATUS
ใน mediaSession
ของ MediaMetadataCompat
ข้อมูลโค้ดนี้แสดงวิธีระบุว่าเพลงในมุมมองการเล่นเป็นเพลงที่มีเนื้อหาไม่เหมาะสมและดาวน์โหลดแล้ว
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());
แม้ว่าเนื้อหาจะยังไม่ได้เล่นหรือเล่นจนจบแล้ว แถบความคืบหน้าก็จะแสดงและอัปเดตโดยอัตโนมัติ
กรณีนี้จะเกิดขึ้นหากรายการสื่อที่เกี่ยวข้องมีDESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
เนื้อหาพิเศษที่มีค่าเป็น 0.0
(สำหรับเนื้อหาที่ยังไม่ได้เล่น) หรือ 1.0
(สำหรับเนื้อหาที่เล่นจนจบ) หลังจากผู้ใช้เลือกรายการสื่อเหล่านี้แล้ว Android Auto และ AAOS จะแสดงแถบความคืบหน้าเหนือตัวบ่งชี้ความคืบหน้าอื่นๆ