คอมโพเนนต์ของระบบและการไหลของผู้ใช้

แผนภาพต่อไปนี้แสดงคอมโพเนนต์ที่โต้ตอบกับสื่อ

ส่วนประกอบของระบบ

รูปที่ 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 ซึ่งสัญญาณนี้จะบ่งบอกว่าคุณไม่สามารถดำเนินการอื่นๆ ได้จนกว่าการลงชื่อเข้าใช้จะเสร็จสมบูรณ์