Alur integrasi

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

Aplikasi default di layar Setelan

Gambar 1. Aplikasi default di layar Setelan

VIA yang dipilih diekspos ke sistem dengan dua cara:

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

Daftar VIA kandidat dapat diperoleh menggunakan RolesManager dengan nama peran android.app.role.ASSISTANT.

Pemicu frasa pengaktif

Android menyediakan AlwaysOnHotwordDetector sebagai abstraksi di atas DSP hardware. Hal ini memberikan cara yang mudah untuk mengaitkan VoiceInteractionService ke model suara untuk pengenalan suara yang selalu aktif dan hemat energi. Ini adalah alur interaksi yang paling umum dan terkenal, saat 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 frasa pengaktif

Gambar 2. Pemicu frasa pengaktif

Legenda. Layanan sistem muncul dalam warna biru muda, komponen VIA dalam warna hijau.

Pemicu 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 HAL Kendaraan, dan dalam kasus interaksi suara tertentu, layanan ini menerapkan logika berikut ke peristiwa utama:

  • Peristiwa PTT singkat (KeyEvent.KEYCODE_VOICE_ASSIST) diarahkan ke VoiceInteractionManagerService untuk memulai sesi suara baru.
  • Peristiwa PTT panjang pertama kali diserahkan ke penerima proyeksi (misalnya, Android Auto atau CarPlay), lalu ke perangkat yang terhubung ke Bluetooth, dan terakhir ke aplikasi VIA lokal.

Sesi yang dimulai menggunakan alur ini diidentifikasi dengan SHOW_SOURCE_PUSH_TO_TALK.

Pemicu PTT

Gambar 3. Pemicu PTT

Untuk mengintegrasikan tombol kontrol suara hardware ke AAOS, lihat integrasi Input Kunci Otomotif.

Pemicu Ketuk untuk Bicara (atau tombol software)

Memicu interaksi suara dari UI sistem dilakukan menggunakan AssistUtil. Ini adalah API sistem tersembunyi yang hanya dapat digunakan oleh aplikasi sistem yang dipaketkan seperti UI sistem yang memungkinkan:

  • Berinteraksi dengan VoiceInteractionManagerService untuk memulai sesi kontrol suara.
  • Tentukan VIA yang saat ini dipilih.

Untuk menampilkan aplikasi VIA yang dipilih secara dinamis, UI sistem dapat menggunakan RoleManager dan mengikuti perubahan pada holder peran untuk ROLE_ASSISTANT. Contoh cara menerapkan pemicu TTT dapat ditemukan di CarSystemUI, AssistantButton.

Pemicu Ketuk untuk Bicara

Gambar 4. Pemicu Ketuk untuk Bicara

Ketuk untuk Membaca (TTR) asisten suara

Di Automotive, notifikasi yang diposting ke Pusat Notifikasi yang diidentifikasi sebagai notifikasi INBOX atau INBOX_IN_GROUP (misalnya, pesan SMS) menyertakan tombol tindakan Play, yang memungkinkan pengguna membacakan notifikasi dengan keras oleh VIA yang dipilih dan, secara opsional, membalas dengan suara.

Notifikasi

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 menyetujui pra-penginstalan aplikasi ini dapat memutuskan apa yang akan dilakukan aktivitas ini.

Penting. Di Automotive, semua aktivitas, termasuk aktivitas sistem, tunduk pada pembatasan UX saat mengemudi. Jika pengalaman yang ingin diaktifkan dari ikon peluncur harus tersedia saat mengemudi, tambahkan ke daftar yang diizinkan (jika Anda adalah OEM) atau anotasikan aktivitas dengan metadata distractionOptimized. Untuk informasi selengkapnya, lihat Panduan gangguan pengemudi.

DSP dan HAL audio

Pastikan untuk meninjau panduan yang diperbarui terkait perekaman audio yang selalu aktif dan HAL audio serentak di Perekaman serentak. Akses ke API ini dapat berdampak signifikan pada performa deteksi kata kunci panas seperti yang dijelaskan di Merespons kata kunci panas.

Izin

Memberikan izin hak istimewa sistem

Mengingat bahwa izin dengan hak istimewa tidak dapat diberikan oleh pengguna, jika VIA memerlukan salah satu izin tersebut, OEM harus memuat APK di image sistem mereka, dan memberikan izin tersebut secara eksplisit dalam build mereka. 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 informasi selengkapnya tentang izin untuk pengendali default, lihat Izin yang hanya digunakan dalam pengendali default. Anda juga dapat memberikan izin terlebih dahulu menggunakan file konfigurasi default-permissions.xml. Untuk mengetahui detail tentang batasan terkait pemberian izin sebelumnya, lihat Bagian 9 dalam Dokumen Definisi Kompatibilitas (CDD) Android.

Penting. Dalam semua kasus, hanya VIA default yang akan mendapatkan izin ini secara otomatis. Jika sistem memiliki lebih dari satu VIA yang dimuat sebelumnya, VIA non-default harus meminta izin secara eksplisit kepada pengguna sebagai bagian dari penyiapannya atau selama penggunaan pertama.

Distribusi (pra-penginstalan dan deployment update)

VIA yang diprainstal harus berada di partisi dan folder /product/priv-apps atau /vendor/priv-apps (lihat 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 @hide system API. Bergantung pada lokasi aplikasi bawaan, 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, penggunaan library UI Mobil AAOS sangat direkomendasikan. 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 di-build sedemikian rupa sehingga UI-nya dapat disesuaikan dengan desain setiap model mobil.