Arus integrasi

Pemilihan VIA yang aktif dilakukan dengan ManageAssistActivity di CarSettings. Alur ini dipicu oleh aplikasi PackageInstaller , sebagai bagian dari bagian Aplikasi default di layar Pengaturan.

Aplikasi default di layar Pengaturan

Gambar 1. Aplikasi default pada layar Pengaturan

VIA yang dipilih diekspos ke sistem dengan dua cara:

  1. Sebagai bagian dari layanan sistem RolesManager
  2. Oleh VoiceInteractionManagerService melalui API internal AssistUtils .

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 .

Pemicu kata cepat

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 ke VoiceInteractionManagerService 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 .

pemicu PTT

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 .

Pemicu Ketuk untuk Bicara

Gambar 4. Pemicu Tap-to-Talk

Asisten suara Ketuk untuk Membaca (TTR)

Di Otomotif, notifikasi yang diposting ke Pusat Notifikasi yang diidentifikasi sebagai notifikasi INBOX 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.

Pemberitahuan

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.