แผนภาพต่อไปนี้แสดงคอมโพเนนต์ที่โต้ตอบกับสื่อ
รูปที่ 1 ส่วนประกอบของระบบ
องค์ประกอบในรูปนี้มีคำอธิบายในตาราง:
ส่วนประกอบ | คำอธิบาย |
---|---|
หน้าจอหลัก | แสดงพื้นผิวอื่นๆ ใน UI ของรถยนต์ที่แสดงและควบคุม สื่อ ใน AOSP ข้อมูลนี้คือหน้าจอหลักจะแสดงขึ้นเมื่อระบบเริ่มทำงาน จากหน้าจอนี้ ผู้ใช้สามารถดูรายละเอียดของรายการสื่อที่กำลังเล่นและใช้ชุดมาตรฐานที่จำกัด และการกระทำแบบกำหนดเอง (เช่น "เล่น" และ "หยุดชั่วคราว") |
UI ระบบ | ให้ฟังก์ชันการทำงานที่มีตัวเลือกการนำทาง UI ส่วนกลาง เช่น เพื่อไปที่ สื่อ |
ผู้ช่วย | Android มีกลไกให้แอปผู้ช่วยแบบเสียงต่างๆ โต้ตอบกับระบบ แอปเหล่านี้สามารถโต้ตอบกับแหล่งที่มาของสื่อในเบื้องหลังได้ (ตัวอย่างเช่น การเล่น เพลงที่มาจากคำสั่งเสียง) หรือไปที่ "สื่อ" ในเบื้องหน้า (ตัวอย่างเช่น เมื่อมีการสั่งให้แอปผู้ช่วยแบบเสียงแสดง UI ของแหล่งที่มาของสื่อหนึ่งๆ) |
เครื่องเรียกใช้งานแอป | แอป Android ทั้งหมดจะเริ่มต้นในตัวเปิดแอป รวมถึงแหล่งที่มาของสื่อ สื่อสามารถ นำเสนอตัวเลือกแหล่งที่มาของสื่อของตนเอง เพื่อเสริมหรือแทนที่เครื่องเรียกใช้งานแอป จุดเริ่มต้นสำหรับสื่อ |
Google Play Store | เมื่อใช้งาน GAS นี่คือที่ที่ผู้ใช้จะค้นหาและติดตั้งแอปใหม่ใน อุปกรณ์ Android สำหรับสื่อ เมื่อติดตั้งแอปแล้ว ระบบจะนำผู้ใช้ไปยัง "สื่อ" เพื่อ ดำเนินการลงชื่อเข้าใช้ให้เสร็จสิ้นหรือเริ่มโต้ตอบกับแอป |
ผู้จัดการเซสชันสื่อ | บริการของระบบ Android ที่ติดตามและควบคุมเซสชันสื่อจากแหล่งที่มาทั้งหมดของสื่อ ทั้งนี้ มอบกลไกในการตรวจจับเมื่อแหล่งที่มาสื่อกลายเป็นสื่อที่ทำงานอยู่เบื้องหน้า แหล่งที่มา สื่อและแอปอื่นๆ ทั้งหมดที่แสดงแหล่งที่มาของสื่อที่กำลังเล่นอยู่ (สำหรับ เช่น หน้าจอหลัก) ให้ใช้ตัวจัดการเซสชันสื่อเพื่อตรวจจับเหตุการณ์เหล่านี้และอัปเดต UI ตามนั้น แหล่งที่มาของสื่อจะโต้ตอบกับตัวจัดการเซสชันสื่อด้วยวิธีต่อไปนี้ สื่อ Session API |
วิทยุ | แอปเฉพาะทางสำหรับโต้ตอบกับฮาร์ดแวร์วิทยุ การค้นหาวิทยุสำหรับวิทยุ เลือกสถานีที่ระบุล่าสุดได้อย่างรวดเร็ว และสลับระหว่างย่านความถี่วิทยุ คอมโพเนนต์ UI ที่แชร์โดยทั้งวิทยุและสื่อช่วยให้ผู้ใช้สลับไปมาระหว่าง ได้ง่ายขึ้น |
เครื่องมือลดการเสียสมาธิของผู้ขับ | บริการระบบ Android ที่ใช้เพื่อกำหนดข้อจำกัด UX ตามสถานะการขับขี่ รถยนต์ สำหรับการลงชื่อเข้าใช้และ UX ของแหล่งที่มาของสื่อ (ซึ่งควบคุมหน้าจอได้โดยตรงโดย ของสื่อ) บริการนี้ช่วยให้มั่นใจว่าจะไม่มีการแสดงเนื้อหาที่ไม่ปลอดภัยเมื่อรถยนต์ เมื่ออยู่ในโหมดขับรถ OEM จะปรับแต่งคําจํากัดความของรัฐเหล่านี้และลักษณะที่ระบบ ตอบสนองในสถานการณ์เหล่านี้ (เช่น โดยการแสดงการวางซ้อนหน้าจอแบบบล็อก) |
การไหลเวียนของผู้ใช้
การเปิดตัวแอปสื่อ
กระบวนการที่เปิดสื่อจะปรากฏอยู่ด้านล่าง
รูปที่ 2 การเปิดตัวแอปสื่อ
ต้องเปิดตัวสื่อโดยใช้โดยนัยต่อไปนี้
CAR_INTENT_ACTION_MEDIA_TEMPLATE
Intent นี้อาจมีข้อมูลต่อไปนี้เป็นข้อมูลเพิ่มเติม
-
android.car.intent.extra.MEDIA_COMPONENT
(ไม่บังคับ) สตริงส่วนเกิน เพื่อแทนชื่อคอมโพเนนต์ที่แยกเป็นหลายรายการของMediaBrowserService
ในแอปสื่อที่สื่อจะเชื่อมต่อ หากไม่ระบุ สื่อจะแสดง แอปสื่อที่เลือกอยู่ Intent นี้ใช้จากรายการต่อไปนี้ จุดแรกเข้า:-
UI ของระบบ ใช้เพื่อกลับไปยังประสบการณ์สื่อหรือเริ่มต้น เพิ่งใช้เป็นครั้งแรก ในกรณีนี้ ระบบจะใช้ Intent ข้างต้นโดยไม่มี เพิ่มเติมเพื่อให้สื่อแสดงแอปสื่อที่เลือกไว้ในปัจจุบัน
-
หน้าจอหลัก ผู้ช่วย และศูนย์การแจ้งเตือน ผู้ใช้สามารถ ให้ไปที่ "สื่อ" เพื่อแสดงแอปสื่อที่เลือกอยู่ในปัจจุบัน ในทุกกรณี ระบบจะเรียกใช้ Intent แบบไม่เจาะจงปลายทางที่ไม่มีส่วนเสริม
-
เครื่องเรียกใช้งานแอป เมื่อผู้ใช้เลือกแอปสื่อจาก เครื่องเรียกใช้งานแอป Intent ด้านบนจะรวม
CAR_EXTRA_MEDIA_COMPONENT
พิเศษ ซึ่งมีแอปสื่อที่เลือกไว้ สื่อกำหนดให้เป็น แอปที่เลือกและเชื่อมต่อกับแอปนั้นๆ โปรดดูรายละเอียดที่ส่วนด้านล่าง การผสานรวม Launcher กับสื่อ
-
ตัวเปิดแอปกับการผสานรวมสื่อ
แอปสื่อไม่ได้รับอนุญาตให้แสดงกิจกรรมที่มีคำอธิบายประกอบ
หมวดหมู่ android.intent.category.LAUNCHER
ด้วยเหตุนี้ เครื่องเรียกใช้งานแอป (หรือ
เทียบเท่า) ต้องใช้ตรรกะพิเศษเพื่อระบุการผสานรวมแหล่งที่มาของสื่อ ดังนี้
-
เครื่องเรียกใช้งานแอปต้องสแกนระบบเพื่อดูแพ็กเกจที่ใช้งาน
MediaBrowserService.SERVICE_INTERFACE
สำหรับแพ็กเกจเหล่านี้ เครื่องเรียกใช้งานแอปจะดึงข้อมูลไอคอนบริการที่คล้ายกับที่ใช้ในการดึงข้อมูลอื่นๆ กิจกรรม -
จากนั้นเครื่องเรียกใช้งานแอปจะรวมแพ็กเกจเหล่านี้กับแพ็กเกจที่ใช้งาน
android.intent.category.LAUNCHER
กิจกรรม หากแอปมี การใช้งานMediaBrowserService
และกิจกรรม Launcher บริการนี้ใช้เวลา ลำดับความสำคัญในระหว่างที่เขียนนี้ แอปแหล่งที่มาของสื่อไม่มีกิจกรรม Launcher เลย
- ตัวอย่างของตรรกะนี้จะอยู่ในโค้ด AOSP ที่
AppLauncherUtils#getAllLauncherApps()
ขั้นตอนการลงชื่อเข้าใช้และตัวเลือกการกำหนดค่า
แอปสื่ออาจมีกิจกรรมการตั้งค่าที่เพิ่มประสิทธิภาพยานพาหนะ กิจกรรมดังกล่าวอาจ ใช้ในการดำเนินการโฟลว์ผู้ใช้ที่ Android Media API ไม่ได้จัดการ เช่น
- ลงชื่อเข้าใช้
- ออกจากระบบ
- การสลับบัญชี
- แสดงข้อมูลที่ผู้ใช้กำลังเข้าสู่ระบบอยู่ (หากมี)
- การกำหนดค่าบริการ
รูปที่ 3 ขั้นตอนการลงชื่อเข้าใช้
แอปสื่อประกาศกิจกรรมการตั้งค่านี้ด้วยตัวกรอง Intent ต่อไปนี้
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
สื่อต้องใช้ตรรกะต่อไปนี้
-
ตรวจสอบว่าแอปสื่อที่เลือกในปัจจุบันมีกิจกรรมที่มี ตัวกรองความตั้งใจ
-
หากใช่ โปรดอนุญาตให้ผู้ใช้ไปยังกิจกรรม
-
หากข้อจำกัด UX ของรถยนต์มีผลบังคับใช้ (เช่น รถกำลังเคลื่อนที่) ราคานี้ควร ปิดใช้ได้ เนื่องจากกิจกรรมการตั้งค่าไม่ใช่ UI ที่เพิ่มประสิทธิภาพไดรเวอร์
การจัดการข้อผิดพลาดและการลงชื่อเข้าใช้ที่จำเป็น
สื่อจะโต้ตอบกับแอปสื่อผ่านทาง Android Media Session API ส่วนหนึ่งของการเปลี่ยนแปลงนี้
API สื่อจะได้รับ
PlaybackState
ซึ่งจะสื่อสารสถานะปัจจุบันของแอปสื่อ
ขั้นตอนการลงชื่อเข้าใช้จะเริ่มต้นเมื่อแอปสื่อมีการเปลี่ยนแปลง
PlaybackState
ถึง
STATE_ERROR
,
รวมถึงรหัสข้อผิดพลาดที่เฉพาะเจาะจง (ดูรายละเอียดด้านล่าง) เมื่อใด
เกิดขึ้น สื่อจะแสดงคำอธิบายข้อผิดพลาดและโอกาสในการนำทางไปยังกิจกรรมการลงชื่อเข้าใช้
ที่พัฒนาโดยแอปสื่อ
แอปสามารถใช้ขั้นตอนเดียวกันนี้เพื่อส่งสัญญาณแจ้งสถานการณ์ข้อผิดพลาดอื่นๆ (เช่น ข้อผิดพลาดในการเชื่อมต่อเซิร์ฟเวอร์)
รูปที่ 4 การจัดการข้อผิดพลาด
สื่อต้องตรวจสอบอินพุตต่อไปนี้ซึ่งเป็นส่วนหนึ่งของการจัดการข้อผิดพลาด PlaybackState
ตามปกติ
-
รหัสข้อผิดพลาด
PlaybackState
รายการเท่ากับPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
สัญญาณนี้ กำหนดให้แอปสื่อต้องลงชื่อเข้าใช้เพื่อดำเนินการต่อ รหัสข้อผิดพลาดอื่นๆ อาจมีลักษณะดังนี้ ที่ได้รับ ซึ่งจะบ่งบอกถึงสถานการณ์ข้อผิดพลาดประเภทอื่นๆ -
PlaybackState
ข้อความแสดงข้อผิดพลาด (ตั้งค่าโดยแอปสื่อโดยใช้ วันที่PlaybackStateCompat.Builder#setErrorMessage
) มีแอตทริบิวต์ คำอธิบายที่มนุษย์อ่านได้ (เช่น "คุณไม่ได้ลงชื่อเข้าใช้") ข้อความนี้ต้องแสดงต่อ และผู้ใช้จะต้องเพิ่มประสิทธิภาพสิ่งรบกวนสมาธิ (DO) -
PlaybackState
สามารถรวมบริการเสริมต่อไปนี้ (ตั้งค่าตามสื่อ) ได้ แอปที่มีPlaybackStateCompat.Builder#setExtras
) ด้วยคีย์ต่อไปนี้-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
ตั้งค่าเป็นสตริงที่ มีข้อความที่มนุษย์อ่านได้ซึ่งจะแสดงบนปุ่มที่ผู้ใช้แตะเพื่อเริ่มต้น ขั้นตอนการลงชื่อเข้าใช้ -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
ตั้งค่าด้วยPendingIntent
เป็น แสดงขึ้นเมื่อผู้ใช้คลิกปุ่มที่กล่าวไว้ด้านบน ช่วงเวลานี้PendingIntent
ชี้ไปที่กิจกรรมการลงชื่อเข้าใช้ที่กำหนดเองซึ่งใช้งานโดยแอปสื่อเดียวกัน
-
-
สถานะ
PlaybackState
เท่ากับSTATE_ERROR
ซึ่งสัญญาณนี้จะบ่งบอกว่าคุณไม่สามารถดำเนินการอื่นๆ ได้จนกว่าการลงชื่อเข้าใช้จะเสร็จสมบูรณ์