Mengonfigurasi host AppCard

Gunakan AppCardHost untuk berkomunikasi dengan aplikasi yang menampilkan AppCards.

Izin

Setiap aplikasi yang menggunakan AppCardHost harus memiliki izin berikut:

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (Khusus di API level 34 dan yang lebih tinggi) android.car.permission.BIND_APP_CARD_PROVIDER

Lakukan inisialisasi

Untuk melakukan inisialisasi host, berikan:

  • Konteks
  • updateRate Rasio pembaruan Kartu Aplikasi dalam milidetik.
  • fastUpdateRate Kecepatan update dalam milidetik untuk komponen yang diberi tag dengan EnforceFastUpdateRate
  • responseExecutor Thread tempat Anda ingin menerima respons dari aplikasi AppCard.

Desain

AppCardHost dapat berinteraksi dengan salah satu dari dua cara berikut:

ATAU,

AppCardListener

Komponen AppCardListener mendaftarkan dirinya sendiri dengan AppCardHost untuk menerima update komunikasi dari aplikasi AppCardHost dan AppCard. Fungsi antarmuka AppCardListener dijelaskan di sini.

fun onAppCardReceived(AppCardContainer)

Fungsi ini dipicu saat AppCard telah diterima dari aplikasi. Fungsi ini dikirim sebagai AppCardContainer yang menyediakan AppCard dan appIdentifier untuk mengidentifikasi aplikasi yang mengirim AppCard

fun onComponentReceived(AppCardComponentContainer)

Fungsi ini dipicu saat komponen AppCard diterima dari aplikasi. Fungsi ini dikirim sebagai AppCardComponentContainer, yang menyediakan komponen AppCard, Identifier untuk mengidentifikasi aplikasi yang mengirim AppCard, dan ID string untuk mengarah ke AppCard yang terkait dengan komponen tersebut.

fun onProviderRemoved(String, String?)

Fungsi ini dipicu saat penyedia AppCard telah dihapus atau dinonaktifkan. Gunakan metode ini untuk membersihkan AppCard aktif yang terkait dengan nama paket dan otoritas penyedia yang diberikan.

Jika otorisasi adalah {@code null}, seluruh paket akan dihapus.

fun onProviderAdded(String, String?)

Fungsi ini dipicu saat penyedia AppCard telah ditambahkan atau diaktifkan.

Contoh penggunaan. Gunakan fungsi ini sebagai pemicu untuk memuat ulang semua AppCard yang tersedia di pemilih AppCard. Jika otorisasi adalah {@code null}, seluruh paket akan ditambahkan.

fun onPackageCommunicationError(appIdentifier, Throwable)

Fungsi ini dipicu saat AppCardHost mengalami error saat berkomunikasi dengan penyedia AppCard.

Contoh penggunaan. Gunakan metode ini untuk menunjukkan kepada pengguna bahwa AppCard yang telah mereka pilih mengalami error.

API

fun refreshCompatibleapp()

Metode ini harus dipanggil setiap kali aktivitas yang menggunakan host dilanjutkan sehingga host dapat memuat ulang daftar aplikasi yang mendukung AppCard.

fun destroy()

Panggil metode ini saat aktivitas yang menggunakan host dihancurkan sehingga host dapat membersihkan semua koneksi dan anggota internal.

fun registerListener(AppCardListener)

Digunakan untuk mendaftarkan AppCardListener.

fun unregisterListener(AppCardListener)

Digunakan untuk membatalkan pendaftaran AppCardListener.

fun getAllAppCards(AppCardContext)

Panggil metode ini untuk menyediakan AppCardListener terdaftar dengan semua AppCard yang disediakan dalam sistem dengan AppCardContext tertentu yang memberikan petunjuk kepada penyedia tentang cara menyusun AppCard mereka.

fun requestAppCard(AppCardContext, appIdentifier, String)

Panggil metode ini untuk menyediakan AppCardListener terdaftar dengan AppCard tertentu, dengan AppCardContext yang memberikan petunjuk kepada penyedia cara menyusun AppCard mereka.

fun notifyAppCardRemoved(appIdentifier, String)

Memberi tahu penyedia Kartu Aplikasi bahwa Kartu Aplikasinya tidak lagi aktif.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Memberi tahu penyedia AppCard bahwa AppCard-nya telah berinteraksi. Satu-satunya interaksi yang didukung adalah klik tombol, yang ditunjukkan dengan AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

Sebaiknya buat tombol untuk AppCard dengan pemroses onClick yang memanggil fungsi ini dengan appIdentifier, ID AppCard, ID komponen, dan ID interaksi.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Kirim update AppCardContext untuk AppCard tertentu. Misalnya, saat beralih dari mode Parkir ke mode Mengemudi, gunakan metode ini untuk mengirim update AppCardContext dengan isInteractable ditetapkan ke false untuk setiap AppCard yang aktif.

FAQ

  1. Di mana saya dapat menemukan contoh penerapan?

    • Contoh host. Menampilkan semua AppCard yang tersedia di sistem, beserta kemampuan pengujian.

    • DriverUI dan Pengelola Pano. Pengelola Pano bertindak sebagai pemilih, sedangkan DriverUI bertindak sebagai presenter.

  2. Berapa banyak AppCard yang dapat didukung setiap AppCardContentProvider?

    AppCardContentProvider dapat mendukung AppCard dalam jumlah yang tidak terbatas. Namun, pastikan untuk menyeimbangkan jumlah AppCard dengan performa yang menurun versus pengalaman pengguna yang positif.