Pemilihan VIA yang aktif dilakukan dengan ManageAssistActivity
di CarSettings. Alur ini dipicu oleh aplikasi PackageInstaller
, sebagai bagian dari bagian Aplikasi default di layar Pengaturan.
Gambar 1. Aplikasi default pada layar Pengaturan
VIA yang dipilih diekspos ke sistem dengan dua cara:
- Sebagai bagian dari layanan sistem
RolesManager
- Oleh
VoiceInteractionManagerService
melalui API internalAssistUtils
.
Daftar kandidat VIA dapat diperoleh menggunakan RolesManager
dengan nama peran android.app.role.ASSISTANT
.
Pemicu kata cepat
Android menyediakan AlwaysOnHotwordDetector sebagai abstraksi di atas DSP perangkat keras. Ini memberikan cara mudah untuk mengaitkan VoiceInteractionService
ke model suara untuk pengenalan suara selalu aktif dengan energi 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. Pemicu kata cepat
Legenda. Layanan sistem muncul dalam warna biru muda, komponen VIA berwarna hijau.
pemicu PTT
Ini berlaku untuk penekanan tombol perangkat keras yang lama atau pendek. Di AAOS, PTT ditangani oleh CarInputService . Dalam implementasi default, layanan ini menangani kejadian masukan yang diterima melalui HAL Kendaraan, dan dalam kasus interaksi suara tertentu, layanan ini menerapkan logika berikut ke kejadian penting:
- Peristiwa PTT singkat (
KeyEvent.KEYCODE_VOICE_ASSIST
) diarahkan keVoiceInteractionManagerService
untuk memulai sesi suara baru. - Peristiwa PTT panjang pertama-tama diserahkan ke penerima proyeksi (misalnya, Android Auto atau CarPlay), lalu ke perangkat yang terhubung dengan 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 perangkat keras ke AAOS, lihat Integrasi Input Kunci Otomotif .
Pemicu Tap-to-Talk (atau tombol perangkat lunak)
Memicu interaksi suara dari UI sistem dilakukan menggunakan AssistUtil . Ini adalah API sistem tersembunyi yang hanya dapat digunakan oleh aplikasi sistem yang dibundel seperti UI sistem yang memungkinkan:
- Berinteraksi dengan
VoiceInteractionManagerService
untuk memulai sesi kontrol suara. - Tentukan VIA mana yang sedang 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. Pemicu Tap-to-Talk
Asisten suara Ketuk untuk Membaca (TTR)
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 membuat notifikasi dibacakan oleh VIA yang dipilih dan, secara opsional, membalas dengan suara.Gambar 5. Notifikasi
Untuk informasi selengkapnya tentang cara menerapkan alur ini, lihat Menangani perintah pengiriman pesan .
Luncurkan VIA dari peluncur mobil
Seperti aplikasi lainnya, VIA dapat menyertakan satu atau lebih aktivitas peluncur di manifesnya. Terserah kepada pengembang aplikasi dan OEM yang menyetujui pra-instal aplikasi ini untuk memutuskan tindakan apa yang akan dilakukan.
Penting. Di Otomotif, semua aktivitas, termasuk aktivitas sistem, tunduk pada batasan UX saat mengemudi. Jika pengalaman yang ingin Anda aktifkan dari ikon peluncur harus tersedia saat mengemudi, tambahkan pengalaman tersebut ke daftar yang diizinkan (jika Anda seorang OEM) atau beri anotasi pada aktivitas dengan metadata distractionOptimized
. Untuk informasi lebih lanjut, lihat Pedoman gangguan pengemudi .
DSP dan audio HAL
Pastikan untuk meninjau panduan terbaru mengenai perekaman audio yang selalu aktif secara bersamaan dan audio HAL di Pengambilan serentak . Akses ke API ini mungkin memiliki dampak yang signifikan terhadap kinerja deteksi kata cepat seperti yang dijelaskan di Menanggapi kata cepat .
Izin
Berikan izin istimewa sistem
Mengingat izin istimewa tidak dapat diberikan oleh pengguna, jika VIA memerlukannya, OEM harus memuat terlebih dahulu APK mereka di image sistem mereka, dan memberikan izin tersebut secara eksplisit di build mereka. Lihat Meminta izin .
Untuk melakukannya, tambahkan ketergantungan hak istimewa yang diizinkan ke proyek Anda:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Tambahkan file izin 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>
Izin pra-hibah yang berbahaya
Seperti yang ditunjukkan dalam Minta izin , VIA memerlukan persetujuan pengguna untuk mengakses fungsi tertentu. Beberapa izin ini telah diberikan ke VoiceInteractionService
default (lihat DefaultPermissionGrantPolicy.java
). Untuk informasi selengkapnya tentang izin untuk penangan default, lihat Izin yang hanya digunakan di penangan default . Dimungkinkan juga untuk memberikan izin terlebih dahulu menggunakan file konfigurasi default-permissions.xml
. Untuk detail tentang pembatasan terkait pemberian izin sebelumnya, lihat Bagian 9 dalam Dokumen Definisi Kompatibilitas Android (CDD) .
Penting. Dalam semua kasus, hanya VIA default yang telah diberikan izin ini sebelumnya. Jika sistem memiliki lebih dari satu VIA yang dimuat sebelumnya, VIA non-default harus secara eksplisit meminta izin kepada pengguna sebagai bagian dari pengaturannya atau selama penggunaan pertama.
Distribusi (pra-instal dan terapkan pembaruan)
VIA pra-instal harus berada di partisi dan folder /product/priv-apps
atau /vendor/priv-apps
(lihat lebih lanjut tentang partisi di Ikhtisar partisi dan Membangun partisi produk ).
Dalam kasus kedua, mengingat partisi vendor dapat diperbarui secara terpisah dari sistem, aplikasi yang dihosting di sini tidak akan dapat mengakses API sistem @hide. Tergantung pada lokasi aplikasi pra-instal, pembaruan dapat dilakukan sebagai OTA (lihat pembaruan OTA ) atau melalui pembaruan aplikasi dari toko aplikasi.
Kustomisasi
Seperti yang disebutkan dalam konsep khusus Otomotif , konsistensi dan penyesuaian UI/UX lebih penting dalam otomotif dibandingkan faktor bentuk lainnya. Untuk interoperabilitas maksimum, penggunaan perpustakaan AAOS Car UI sangat disarankan. Pustaka ini mencakup komponen dan sumber daya 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.