Pemilihan VIA yang aktif dilakukan dengan
ManageAssistActivity
di CarSettings. Alur ini dipicu oleh aplikasi PackageInstaller
, sebagai bagian
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
RolesManager
layanan sistem - Melalui
VoiceInteractionManagerService
sampaiAssistUtils
API internal.
Daftar kandidat VIA dapat diperoleh menggunakan RolesManager
dengan nama peran android.app.role.ASSISTANT
.
Frasa pengaktif
Android menyediakan AlwaysOnHotwordDetector
sebagai abstraksi di atas DSP perangkat keras. Ini memberikan cara mudah untuk
mengaitkan VoiceInteractionService
ke model suara untuk energi yang selalu aktif rendah
pengenalan suara. Ini adalah alur interaksi yang paling umum
dan terkenal, di mana pengguna
permintaan untuk berinteraksi dengan Aplikasi Suara (VA) untuk memulai percakapan baru. Suara
sesi yang dimulai dengan cara ini diidentifikasi dengan SHOW_SOURCE_ASSIST_GESTURE flag
.
Gambar 2. Frasa pengaktif
Legenda. Layanan sistem ditampilkan dalam warna biru muda, komponen VIA berwarna hijau.
Pemicu PTT
Hal ini berlaku untuk penekanan tombol fisik yang lama atau singkat. Di AAOS, PTT ditangani oleh CarInputService. Dalam implementasi {i>default<i}, layanan ini menangani peristiwa input yang diterima melalui HAL Kendaraan, dan dalam kasus suara tertentu ini, tindakan ini menerapkan logika berikut ke peristiwa utama:
- Peristiwa PTT singkat (
KeyEvent.KEYCODE_VOICE_ASSIST
) ditujukan keVoiceInteractionManagerService
untuk memulai sesi suara baru. - Peristiwa PTT panjang diberikan pertama kali ke penerima proyeksi (misalnya, Android Auto atau CarPlay), lalu ke perangkat yang terhubung dengan Bluetooth, dan terakhir ke VIA lokal .
Sesi yang dimulai menggunakan alur ini diidentifikasi dengan SHOW_SOURCE_PUSH_TO_TALK
.
Gambar 3. Pemicu PTT
Untuk mengintegrasikan tombol kontrol suara hardware ke AAOS, lihat integrasi Automotive Key Input.
Pemicu Ketuk untuk Bicara (atau tombol software)
Memicu interaksi suara dari UI sistem dilakukan menggunakan AssistUtil. Ini adalah API sistem tersembunyi yang hanya bisa digunakan oleh paket aplikasi sistem seperti UI sistem yang memungkinkan:
- Berinteraksi dengan
VoiceInteractionManagerService
untuk memulai sesi kontrol suara. - Tentukan VIA yang saat ini dipilih.
Untuk menyajikan aplikasi VIA yang dipilih secara dinamis, UI sistem dapat menggunakan
RoleManager
dan ikuti perubahan pada pemegang peran untuk ROLE_ASSISTANT
.
Contoh cara menerapkan pemicu TTT dapat ditemukan di CarSystemUI, AssistantButton
.
Gambar 4. Pemicu Ketuk untuk Bicara
Ketuk-untuk-Baca (TTR) Asisten suara
Di Otomotif, notifikasi yang diposting ke Pusat Notifikasi diidentifikasi sebagai NotifikasiINBOX
atau INBOX_IN_GROUP
(misalnya, pesan SMS)
sertakan tombol tindakan Putar, yang memungkinkan pengguna membuat notifikasi dibacakan
oleh VIA yang dipilih dan, jika perlu, untuk membalas dengan suara.
Gambar 5. Notifikasi
Untuk informasi selengkapnya tentang cara mengimplementasikan alur ini, lihat Nama sebutan channel perintah pesan.
Luncurkan VIA dari peluncur mobil
Seperti aplikasi lainnya, VIA dapat menyertakan satu atau beberapa aktivitas peluncur di manifes mereka. Terserah developer aplikasi dan OEM untuk menyetujui melakukan pra-penginstalan aplikasi untuk menentukan apa yang akan dilakukan oleh aktivitas tersebut.
Penting. Di Otomotif, semua aktivitas, termasuk sistem
aktivitasnya, tunduk pada pembatasan UX saat mengemudi. Jika pengalaman yang Anda inginkan
untuk mengaktifkan dari ikon peluncur harus tersedia saat mengemudi, baik tambahkan ke
izinkan (jika Anda adalah OEM) atau berikan anotasi aktivitas dengan distractionOptimized
{i>metadata<i}. Untuk informasi selengkapnya, lihat
Panduan gangguan bagi pengemudi.
DSP dan HAL audio
Pastikan untuk meninjau pedoman terbaru terkait audio serentak yang selalu aktif perekaman, dan HAL audio di Perekaman serentak. Akses ke API ini mungkin memiliki dampak yang signifikan terhadap performa frasa pengaktif deteksi seperti yang dijelaskan di Merespons frasa pengaktif.
Izin
Memberikan izin dengan hak istimewa sistem
Karena izin hak istimewa tidak dapat diberikan oleh pengguna, jika VIA memerlukan OEM harus melakukan pramuat APK di image sistem mereka, dan memberikan izin tersebut secara eksplisit dalam build mereka. Lihat Minta izin akses.
Untuk melakukannya, tambahkan dependensi daftar hak istimewa ke project Anda:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Tambahkan file izin daftar hak istimewa sistem ke yourdata/etc/car
folder:
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
Minta
izin akses, VIA memerlukan izin pengguna untuk mengakses fungsi tertentu. Beberapa di antaranya
izin akses diberikan sebelumnya ke VoiceInteractionService
default (lihat
DefaultPermissionGrantPolicy.java
).
Untuk informasi selengkapnya tentang izin untuk pengendali default, lihat
Izin
hanya digunakan dalam pengendali default. Anda juga dapat memberikan izin terlebih dahulu menggunakan default-permissions.xml
file konfigurasi Anda. Untuk mengetahui detail tentang
mengenai pemberian izin terlebih dahulu, lihat Bagian 9 di
Compatibility Definition Document (CDD).
Penting. Dalam semua kasus, hanya VIA default yang memiliki izin akses yang telah diberikan sebelumnya ini. Jika sistem memiliki lebih dari satu VIA yang dimuat sebelumnya, VIA non-default harus secara eksplisit meminta izin akses kepada pengguna sebagai bagian dari pengaturannya atau selama penggunaan pertama.
Distribusi (update pra-penginstalan dan deploy)
VIA yang telah diinstal sebelumnya harus aktif di bawah /product/priv-apps
atau
/vendor/priv-apps
partisi dan folder (lihat selengkapnya tentang partisi di Ringkasan partisi dan
Membuat produk
partisi).
Dalam kasus kedua, mengingat bahwa partisi vendor dapat diperbarui secara terpisah dari sistem, aplikasi yang dihosting di sini tidak akan dapat mengakses @hide system API. Bergantung pada lokasi aplikasi bawaan, update dapat dilakukan sebagai OTA (lihat update OTA) atau melalui aplikasi pembaruan dari {i>app store<i}.
Penyesuaian
Seperti yang disebutkan dalam Konsep khusus otomotif, Konsistensi dan penyesuaian UI/UX lebih penting dalam otomotif daripada faktor bentuk lainnya. Untuk interoperabilitas yang maksimal, penggunaan AAOS Library UI Mobil sangat direkomendasikan. Library ini mencakup komponen dan referensi yang dapat diintegrasikan ke dalam aplikasi yang dirancang untuk disesuaikan oleh OEM. Dengan cara ini, satu APK dapat dibangun di dalam sedemikian rupa sehingga UI-nya dapat disesuaikan dengan desain setiap model mobil.