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_FULLandroid.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
updateRateTốc độ cập nhật AppCard tính bằng mili giây.fastUpdateRateTốc độ cập nhật tính bằng mili giây cho các thành phần được gắn thẻ bằngEnforceFastUpdateRateresponseExecutorMộ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
AppCardContentProvidercó thể hỗ trợ bao nhiêu AppCard?AppCardContentProvidercó 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.