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 RolesManager layanan sistem
  2. Dengan VoiceInteractionManagerService melalui AssistUtils API 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.

Pemicuan frasa pengaktif

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 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 melalui Bluetooth, dan terakhir ke aplikasi VIA lokal.

Sesi yang dimulai menggunakan alur ini diidentifikasi dengan SHOW_SOURCE_PUSH_TO_TALK.

Pemicuan PTT

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 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 mengikuti perubahan pada pemegang peran untuk ROLE_ASSISTANT. Contoh cara menerapkan pemicuan TTT dapat ditemukan di CarSystemUI, AssistantButton.

Pemicuan Ketuk untuk Berbicara

Gambar 4. Pemicuan Ketuk untuk Berbicara

Fitur Ketuk untuk Membaca (TTR) asisten suara

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 membacakan notifikasi 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 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.