Pemilihan VIA aktif dilakukan 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 - Dengan
VoiceInteractionManagerServicemelaluiAssistUtilsAPI internal.
Daftar kandidat VIA dapat diperoleh menggunakan RolesManager
dengan nama peran android.app.role.ASSISTANT.
Pemicuan frasa pengaktif
Android menyediakan AlwaysOnHotwordDetector
sebagai abstraksi di atas DSP hardware. Hal ini memberikan cara mudah untuk
mengaitkan VoiceInteractionService dengan model suara untuk pengenalan suara
selalu aktif berdaya rendah. Ini adalah alur interaksi yang paling umum dan terkenal, di mana 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 frasa pengaktif
Legenda. 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 penerapan default, layanan ini menangani peristiwa input yang diterima melalui Vehicle HAL, dan dalam kasus khusus interaksi suara, layanan ini menerapkan logika berikut ke peristiwa utama:
- 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 Berbicara (atau tombol software)
Pemicuan interaksi suara dari UI sistem dilakukan menggunakan AssistUtil. Ini adalah API sistem tersembunyi yang hanya dapat digunakan oleh aplikasi sistem bawaan seperti UI sistem yang memungkinkan:
- Berinteraksi dengan
VoiceInteractionManagerServiceuntuk memulai sesi kontrol suara. - Tentukan VIA yang saat ini dipilih.
Untuk menyajikan 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 Berbicara
Fitur Ketuk untuk Membaca (TTR) asisten suara
Di Otomotif, notifikasi yang diposting ke Pusat Notifikasi yang diidentifikasi sebagai notifikasiINBOX atau INBOX_IN_GROUP (misalnya, pesan SMS)
menyertakan tombol tindakan Putar, yang memungkinkan pengguna membacakan notifikasi
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 sebelum dipasang bertanggung jawab untuk memutuskan apa 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 anotasi aktivitas dengan metadata distractionOptimized. Untuk mengetahui informasi selengkapnya, lihat
Panduan gangguan pengemudi.
DSP dan HAL audio
Pastikan untuk meninjau pedoman yang diperbarui terkait perekaman audio yang selalu aktif secara bersamaan dan HAL audio di Pengambilan serentak. Akses ke API ini dapat berdampak signifikan pada performa deteksi kata aktif seperti yang dijelaskan di Merespons kata aktif.
Izin
Memberikan izin hak istimewa sistem
Mengingat izin istimewa tidak dapat diberikan oleh pengguna, jika VIA memerlukan salah satu izin tersebut, OEM harus memuat APK-nya terlebih dahulu di image sistemnya, dan memberikan izin tersebut secara eksplisit dalam build-nya. Lihat Meminta izin.
Untuk melakukannya, tambahkan dependensi daftar yang diizinkan hak istimewa ke project Anda:
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Tambahkan file izin daftar yang diizinkan 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>
Pra-pemberian izin berbahaya
Seperti yang ditunjukkan dalam
Meminta
izin, VIA memerlukan izin pengguna untuk mengakses fungsi tertentu. Beberapa izin ini telah diberikan sebelumnya 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 sebelumnya menggunakan file konfigurasi default-permissions.xml. Untuk mengetahui detail tentang
pembatasan terkait pemberian izin sebelumnya, lihat Bagian 9 dalam
Dokumen Definisi Kompatibilitas (CDD) Android.
Penting. Dalam semua kasus, hanya VIA default yang akan memiliki izin ini yang telah diberikan sebelumnya. Jika sistem memiliki lebih dari satu VIA yang sudah dimuat sebelumnya, VIA non-default harus meminta izin kepada pengguna secara eksplisit sebagai bagian dari penyiapannya atau selama penggunaan pertama.
Distribusi (menginstal dan men-deploy update)
VIA yang telah diinstal sebelumnya harus berada di bawah partisi dan folder /product/priv-apps atau /vendor/priv-apps (lihat informasi selengkapnya tentang partisi di Ringkasan partisi dan Membangun 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 telah diinstal sebelumnya, 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 dibandingkan 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 dibangun sedemikian rupa sehingga UI-nya dapat disesuaikan dengan desain setiap model mobil.