Định cấu hình máy chủ AppCard

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ằng EnforceFastUpdateRate
  • 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:

HOẶC

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)

Hàm này được kích hoạt khi nhận được một Thẻ ứng dụng từ một ứng dụng. Hàm này được gửi dưới dạng AppCardContainer, cung cấp một Thẻ ứng dụng và appIdentifier để xác định ứng dụng đã gửi Thẻ ứng dụng

fun onComponentReceived(AppCardComponentContainer)

Hàm này được kích hoạt khi nhận được một thành phần AppCard từ một ứng dụng. Hàm này được gửi dưới dạng 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?)

Hàm này được kích hoạt khi một trình cung cấp AppCard đã bị xoá hoặc tắt. Sử dụng phương thức này để dọn dẹp mọi AppCard đang hoạt động liên quan đến tên gói và quyền của nhà cung cấp đã cho.

Nếu authority là {@code null}, thì toàn bộ gói đã bị xoá.

fun onProviderAdded(String, String?)

Hàm này được kích hoạt khi bạn thêm hoặc bật một nhà cung cấp AppCard.

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)

Chức năng này được kích hoạt khi 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()

Bạn nên gọi phương thức này bất cứ khi nào hoạt động đang sử dụng máy chủ lưu trữ được tiếp tục để máy chủ lưu trữ có thể làm mới danh sách ứng dụng hỗ trợ Thẻ ứng dụng.

fun destroy()

Gọi phương thức này khi một hoạt động đang sử dụng máy chủ bị huỷ để máy chủ có thể dọn dẹp tất cả các kết nối và thành phần nội bộ.

fun registerListener(AppCardListener)

Dùng để đăng ký AppCardListener.

fun unregisterListener(AppCardListener)

Dùng để huỷ đăng ký AppCardListener.

fun getAllAppCards(AppCardContext)

Gọi phương thức này để cung cấp 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)

Gọi phương thức này để cung cấp một 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)

Thông báo cho nhà cung cấp Thẻ ứng dụng rằng Thẻ ứng dụng của họ không còn hoạt động nữa.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Thông báo cho nhà cung cấp Thẻ ứng dụng rằng người dùng đã tương tác với Thẻ ứng dụng của họ. Lượt tương tác duy nhất được hỗ trợ là lượt nhấp vào nút, được biểu thị bằng AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

Bạn nên tạo một nút cho AppCard bằng trình nghe 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)

Gửi bản cập nhật 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

  1. 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.

  2. 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.