ใช้ AppCardHost เพื่อสื่อสารกับแอปที่แสดง AppCard
สิทธิ์
แอปที่ใช้ AppCardHost ต้องมีสิทธิ์ต่อไปนี้
android.permission.INTERACT_ACROSS_USERS_FULLandroid.permission.QUERY_ALL_PACKAGES- (ใน API ระดับ 34 ขึ้นไปเท่านั้น)
android.car.permission.BIND_APP_CARD_PROVIDER
เริ่มต้น
หากต้องการเริ่มต้นใช้งานโฮสต์ ให้ระบุข้อมูลต่อไปนี้
- บริบท
updateRateอัตราการอัปเดต AppCard เป็นมิลลิวินาทีfastUpdateRateอัตราการอัปเดตเป็นมิลลิวินาทีสําหรับคอมโพเนนต์ที่ติดแท็กด้วยEnforceFastUpdateRateresponseExecutorชุดข้อความที่คุณต้องการรับการตอบกลับจากแอป AppCard
การออกแบบ
คุณสามารถโต้ตอบกับ AppCardHost ได้ 2 วิธีดังนี้
- ลงทะเบียนเป็น
AppCardListener
หรือ
- โต้ตอบกับ
AppCardHostAPI
AppCardListener
คอมโพเนนต์ AppCardListener จะลงทะเบียนกับ AppCardHost เพื่อรับการอัปเดตการสื่อสารจากแอป AppCardHost และแอป AppCard
ดูรายละเอียดฟังก์ชันอินเทอร์เฟซของ AppCardListener ได้ที่นี่
fun onAppCardReceived(AppCardContainer)AppCardContainer ซึ่งระบุ AppCard และ appIdentifier เพื่อระบุแอปที่ส่ง AppCardfun onComponentReceived(AppCardComponentContainer)AppCardComponentContainer ซึ่งให้คอมโพเนนต์ AppCard, Identifier เพื่อระบุแอปที่ส่ง AppCard และรหัสสตริงเพื่อชี้ไปยัง AppCard ที่คอมโพเนนต์นั้นเกี่ยวข้องfun onProviderRemoved(String, String?)หากมีสิทธิ์เป็น {@code null} แสดงว่าระบบนําทั้งแพ็กเกจออกแล้ว
fun onProviderAdded(String, String?)ตัวอย่างการใช้งาน ใช้ฟังก์ชันนี้เป็นทริกเกอร์เพื่อรีเฟรช AppCard ทั้งหมดที่ใช้ได้ในตัวเลือก AppCard หากมีสิทธิ์เป็น {@code null} แสดงว่ามีการเพิ่มทั้งแพ็กเกจ
fun onPackageCommunicationError(appIdentifier, Throwable)AppCardHost พบข้อผิดพลาดขณะสื่อสารกับผู้ให้บริการ AppCard
ตัวอย่างการใช้งาน ใช้วิธีการนี้เพื่อแสดงให้ผู้ใช้ทราบว่า AppCard ที่เลือกพบข้อผิดพลาด
API
fun refreshCompatibleapp()fun destroy()fun registerListener(AppCardListener)AppCardListenerfun unregisterListener(AppCardListener)AppCardListenerfun getAllAppCards(AppCardContext)AppCardListener ที่ลงทะเบียนไว้พร้อม AppCard ทั้งหมดที่มีให้ในระบบด้วย AppCardContext ที่ระบุ ซึ่งจะให้คำแนะนำแก่ผู้ให้บริการเกี่ยวกับวิธีจัดโครงสร้าง AppCardfun requestAppCard(AppCardContext, appIdentifier, String)AppCardListener ที่ลงทะเบียน โดยให้ AppCardContext ที่บอกคำแนะนำแก่ผู้ให้บริการเกี่ยวกับวิธีจัดโครงสร้าง AppCardfun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
onClick Listener ที่เรียกใช้ฟังก์ชันนี้ด้วย appIdentifier, รหัส AppCard, รหัสคอมโพเนนต์ และรหัสการโต้ตอบfun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)AppCardContext สำหรับ AppCard ที่เฉพาะเจาะจง เช่น เมื่อเปลี่ยนจากโหมดเข้าเกียร์ว่างเป็นโหมดขับเคลื่อน ให้ใช้วิธีนี้เพื่อส่งAppCardContextการอัปเดตโดยตั้งค่า isInteractable เป็น false สําหรับ AppCard ที่ใช้งานอยู่แต่ละรายการคำถามที่พบบ่อย
ฉันจะดูตัวอย่างการใช้งานได้จากที่ใด
โฮสต์ตัวอย่าง แสดง AppCard ทั้งหมดที่ใช้ได้ของระบบ พร้อมกับความสามารถในการทดสอบ
DriverUI และเครื่องมือจัดการ Pano Pano Manager จะทำหน้าที่เป็นตัวเลือก ส่วน DriverUI จะทำหน้าที่เป็นผู้นำเสนอ
AppCardContentProviderแต่ละรายการรองรับ AppCard ได้กี่รายการAppCardContentProviderรองรับ AppCard ได้ไม่จำกัดจำนวน อย่างไรก็ตาม อย่าลืมรักษาสมดุลระหว่างจำนวน AppCard กับประสิทธิภาพที่ลดลงเทียบกับประสบการณ์การใช้งานที่ดีของผู้ใช้