VIA aktif dipilih oleh ManageAssistActivity di CarSettings. Alur ini dipicu oleh aplikasi PackageInstaller, sebagai bagian dari bagian Aplikasi default di layar Setelan.

Gambar 1. Aplikasi default di layar Setelan
VIA yang dipilih diekspos ke sistem dengan dua cara:
- Sebagai bagian dari
RolesManagerlayanan sistem - Oleh
VoiceInteractionManagerServicemelalui API internalAssistUtils.
Daftar VIA kandidat dapat diperoleh menggunakan RolesManager
dengan nama peran android.app.role.ASSISTANT.
Pemicuan kata cepat
Android menyediakan AlwaysOnHotwordDetector
sebagai abstraksi di atas DSP hardware. Hal ini memberikan cara mudah untuk mengaitkan VoiceInteractionService ke model suara untuk pengenalan suara selalu aktif berenergi rendah. Ini adalah alur interaksi yang paling umum dan dikenal, tempat pengguna meminta untuk berinteraksi dengan Aplikasi Suara (VA) untuk memulai percakapan baru. Sesi suara yang dimulai dengan cara ini diidentifikasi dengan SHOW_SOURCE_ASSIST_GESTURE flag.
Gambar 2. Pemicuan kata cepat
Top markotop. Layanan sistem muncul dalam warna biru muda, komponen VIA dalam warna hijau.
Pemicuan PTT
Hal ini berlaku untuk penekanan tombol hardware yang lama atau singkat. Di AAOS, PTT ditangani oleh CarInputService. Dalam implementasi default, layanan ini menangani peristiwa input yang diterima melalui Vehicle HAL, dan dalam kasus interaksi suara tertentu, layanan ini menerapkan logika berikut ke peristiwa kunci:
- Peristiwa PTT singkat (
KeyEvent.KEYCODE_VOICE_ASSIST) diarahkan keVoiceInteractionManagerServiceuntuk memulai sesi suara baru. - Peristiwa PTT panjang pertama-tama diserahkan ke penerima proyeksi (misalnya, Android Auto atau CarPlay), lalu ke perangkat yang terhubung melalui Bluetooth, dan terakhir ke aplikasi VIA lokal.
Sesi yang dimulai menggunakan alur ini diidentifikasi dengan SHOW_SOURCE_PUSH_TO_TALK.

Gambar 3. Pemicuan PTT
Untuk mengintegrasikan tombol kontrol suara hardware ke AAOS, lihat Integrasi Input Kunci Otomotif.
Pemicuan Ketuk untuk Bicara (atau tombol software)
Pemicuan interaksi suara dari UI sistem dilakukan menggunakan AssistUtil. Ini adalah API sistem tersembunyi yang hanya dapat digunakan oleh aplikasi sistem gabungan seperti UI sistem yang memungkinkan:
- Berinteraksi dengan
VoiceInteractionManagerServiceuntuk memulai sesi kontrol suara. - Menentukan VIA yang saat ini dipilih.
Untuk menampilkan aplikasi VIA yang dipilih secara dinamis, UI sistem dapat menggunakan
RoleManager
dan mengikuti perubahan pada pemegang peran untuk ROLE_ASSISTANT.
Contoh cara menerapkan pemicuan TTT dapat ditemukan di CarSystemUI, AssistantButton.

Gambar 4. Pemicuan Ketuk untuk Bicara
Ketuk untuk Membaca (TTR) asisten suara
Di Automotive, notifikasi yang diposting ke Pusat Notifikasi yang diidentifikasi sebagaiINBOX atau INBOX_IN_GROUP notifikasi (misalnya, pesan SMS)
menyertakan tombol tindakan Putar, yang memungkinkan pengguna meminta notifikasi dibacakan
oleh VIA yang dipilih dan, secara opsional, membalas dengan suara.

Gambar 5. Notifikasi
Untuk mengetahui informasi selengkapnya tentang cara menerapkan alur ini, lihat Menangani perintah pesan.
Meluncurkan VIA dari peluncur mobil
Seperti aplikasi lainnya, VIA dapat menyertakan satu atau beberapa aktivitas peluncur di manifesnya. Developer aplikasi dan OEM yang menerima untuk menginstal aplikasi ini secara otomatis harus memutuskan tindakan yang akan dilakukan oleh aktivitas ini.
Penting. Di Automotive, semua aktivitas, termasuk aktivitas sistem, tunduk pada pembatasan UX saat mengemudi. Jika pengalaman yang ingin Anda
aktifkan dari ikon peluncur harus tersedia saat mengemudi, tambahkan ke
daftar yang diizinkan (jika Anda adalah OEM) atau beri anotasi pada aktivitas dengan distractionOptimized
metadata. Untuk mengetahui informasi selengkapnya, lihat
Panduan gangguan pengemudi.
DSP dan HAL audio
Pastikan untuk meninjau panduan yang diperbarui terkait perekaman audio selalu aktif dan HAL audio secara serentak di Perekaman serentak. Akses ke API ini dapat berdampak signifikan pada performa deteksi kata cepat seperti yang dijelaskan di Merespons kata cepat.
Izin
Memberikan izin hak istimewa sistem
Mengingat izin hak istimewa tidak dapat diberikan oleh pengguna, jika VIA memerlukannya, OEM harus memuat APK-nya secara otomatis dalam image sistemnya, dan memberikan izin tersebut secara eksplisit dalam build-nya. Lihat Meminta izin.
Untuk melakukannya, tambahkan dependensi daftar yang diizinkan untuk hak istimewa ke project Anda:
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Tambahkan file izin daftar yang diizinkan untuk hak istimewa sistem ke folder yourdata/etc/car:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
Pemberian izin berbahaya secara otomatis
Seperti yang ditunjukkan dalam
Meminta
izin, VIA memerlukan izin pengguna untuk mengakses fungsi tertentu. Beberapa
izin ini diberikan secara otomatis ke VoiceInteractionService default (lihat
DefaultPermissionGrantPolicy.java).
Untuk mengetahui informasi selengkapnya tentang izin untuk pengendali default, lihat
Izin
yang hanya digunakan dalam pengendali default. Anda juga dapat memberikan izin secara otomatis menggunakan file konfigurasi default-permissions.xml. Untuk mengetahui detail tentang
batasan terkait pemberian izin secara otomatis, lihat Bagian 9 dalam Dokumen Definisi Kompatibilitas (CDD) Android
.
Penting. Dalam semua kasus, hanya VIA default yang akan diberikan izin ini secara otomatis. Jika sistem memiliki lebih dari satu VIA yang dimuat secara otomatis, VIA non-default harus meminta izin secara eksplisit kepada pengguna sebagai bagian dari penyiapannya atau selama penggunaan pertama.
Distribusi (menginstal otomatis dan men-deploy update)
VIA yang diinstal otomatis harus berada di bawah /product/priv-apps atau
/vendor/priv-apps partisi dan folder (lihat informasi selengkapnya tentang partisi di Ringkasan partisi dan
Mem-build partisi
produk).
Dalam kasus kedua, mengingat partisi vendor dapat diupdate secara terpisah dari sistem, aplikasi yang dihosting di sini tidak akan dapat mengakses API sistem @hide. Bergantung pada lokasi aplikasi yang diinstal otomatis, update dapat dilakukan sebagai OTA (lihat Update OTA) atau melalui update aplikasi dari app store.
Penyesuaian
Seperti yang disebutkan dalam Konsep khusus otomotif, konsistensi dan penyesuaian UI/UX lebih penting dalam otomotif daripada dalam faktor bentuk lainnya. Untuk interoperabilitas maksimum, sebaiknya gunakan library UI Mobil AAOS . Library ini mencakup komponen dan resource yang dapat diintegrasikan ke dalam aplikasi otomotif yang dirancang untuk disesuaikan oleh OEM. Dengan cara ini, satu APK dapat dibuat sedemikian rupa sehingga UI-nya dapat disesuaikan dengan desain setiap model mobil.