Sử dụng AppCardHost
để giao tiếp với các ứng dụng hiển thị Thẻ ứng dụng.
Quyền
Mọi ứng dụng sử dụng AppCardHost
đều phải có các quyền sau:
android.permission.INTERACT_ACROSS_USERS_FULL
android.permission.QUERY_ALL_PACKAGES
- (Chỉ trong API cấp 34 trở lên)
android.car.permission.BIND_APP_CARD_PROVIDER
Khởi chạy
Để khởi chạy máy chủ lưu trữ, hãy cung cấp:
- Ngữ cảnh
updateRate
Tốc độ cập nhật AppCard tính bằng mili giây.fastUpdateRate
Tốc độ cập nhật tính bằng mili giây cho các thành phần được gắn thẻ bằngEnforceFastUpdateRate
responseExecutor
Một luồng mà bạn muốn nhận phản hồi từ các ứng dụng AppCard.
Thiết kế
Bạn có thể tương tác với AppCardHost
theo một trong hai cách sau:
- Đăng ký làm
AppCardListener
HOẶC
- Tương tác với API
AppCardHost
AppCardListener
Thành phần AppCardListener
tự đăng ký với AppCardHost
để nhận thông tin cập nhật về thông tin liên lạc từ các ứng dụng AppCardHost
và AppCard.
Các hàm giao diện của AppCardListener
được trình bày chi tiết tại đây.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
, cung cấp một Thẻ ứng dụng và appIdentifier
để xác định ứng dụng đã gửi Thẻ ứng dụngfun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
, cung cấp một thành phần AppCards, Identifier
để xác định ứng dụng đã gửi AppCard và một mã nhận dạng chuỗi để trỏ đến AppCard mà thành phần liên quan.fun onProviderRemoved(String, String?)
Nếu authority là {@code null}
, thì toàn bộ gói đã bị xoá.
fun onProviderAdded(String, String?)
Ví dụ về cách sử dụng. Sử dụng hàm này làm điều kiện kích hoạt để làm mới tất cả CardApp có sẵn trong bộ chọn CardApp. Nếu quyền là {@code null}
, thì toàn bộ gói đã được thêm.
fun onPackageCommunicationError(appIdentifier, Throwable)
AppCardHost
gặp lỗi khi giao tiếp với nhà cung cấp AppCard.
Ví dụ về cách sử dụng. Sử dụng phương thức này để cho người dùng biết rằng một AppCard mà họ đã chọn đã gặp lỗi.
API
fun refreshCompatibleapp()
fun destroy()
fun registerListener(AppCardListener)
AppCardListener
.fun unregisterListener(AppCardListener)
AppCardListener
.fun getAllAppCards(AppCardContext)
AppCardListener
đã đăng ký với tất cả AppCard được cung cấp trong hệ thống bằng một AppCardContext
nhất định, cung cấp gợi ý cho các nhà cung cấp về cách định cấu trúc AppCard của họ.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
đã đăng ký bằng một AppCard cụ thể, với điều kiện là AppCardContext
đưa ra gợi ý cho các nhà cung cấp về cách định cấu trúc AppCard của họ.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
.
onClick
gọi hàm này bằng appIdentifier
, mã AppCard, mã thành phần và mã tương tác.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
cho một AppCard cụ thể. Ví dụ: khi chuyển từ chế độ Đỗ xe sang chế độ Lái xe, hãy sử dụng phương thức này để gửi bản cập nhật AppCardContext
, trong đó isInteractable
được đặt thành false
cho mỗi AppCard đang hoạt động.Câu hỏi thường gặp
Tôi có thể tìm thấy các cách triển khai mẫu ở đâu?
Máy chủ lưu trữ mẫu. Hiển thị tất cả AppCard có sẵn trong hệ thống, cùng với các tính năng kiểm thử.
DriverUI và Trình quản lý Pano. Trình quản lý Pano đóng vai trò là bộ chọn trong khi DriverUI đóng vai trò là trình trình bày.
Mỗi
AppCardContentProvider
có thể hỗ trợ bao nhiêu AppCard?AppCardContentProvider
có thể hỗ trợ vô số AppCard. Tuy nhiên, hãy nhớ cân bằng số lượng Thẻ ứng dụng với hiệu suất bị giảm so với trải nghiệm người dùng tích cực.