Alur integrasi

Pemilihan VIA yang aktif dilakukan dengan ManageAssistActivity di CarSettings. Alur ini dipicu oleh aplikasi PackageInstaller, sebagai bagian 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. Melalui VoiceInteractionManagerService sampai AssistUtils 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.

Frasa pengaktif

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

Pemicu PTT

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.

Pemicu Ketuk untuk Bicara

Gambar 4. Pemicu Ketuk untuk Bicara

Ketuk-untuk-Baca (TTR) Asisten suara

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

Notifikasi

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.