Arus Integrasi

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

Aplikasi default di layar Pengaturan

Gambar 1. Aplikasi default pada layar Pengaturan

VIA yang dipilih diekspos ke sistem dalam dua cara:

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

Daftar calon 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 yang nyaman untuk mengaitkan VoiceInteractionService ke model suara untuk pengenalan suara yang 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 panjang atau pendek. Di AAOS, PTT ditangani oleh CarInputService . Dalam implementasi default, layanan ini menangani peristiwa input yang diterima melalui HAL Kendaraan, dan dalam kasus tertentu dari 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), kemudian ke perangkat yang tersambung 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 perangkat keras ke AAOS, lihat Integrasi Input Kunci Otomotif .

Pemicu Ketuk-Untuk-Bicara (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 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 pemicu TTT dapat ditemukan di CarSystemUI, AssistantButton .

Pemicu Tap-To-Talk

Gambar 4. Pemicu Tap-To-Talk

Asisten Suara Ketuk untuk Membaca (TTR)

Di Otomotif, pemberitahuan yang diposting ke Pusat Pemberitahuan yang diidentifikasi sebagai pemberitahuan INBOX atau INBOX_IN_GROUP (misalnya, pesan SMS) akan menyertakan tombol tindakan Putar, yang memungkinkan pengguna untuk membuat pemberitahuan dibacakan oleh VIA yang dipilih dan, secara opsional, membalas dengan suara .

Notifikasi

Gambar 5. Pemberitahuan

Untuk informasi selengkapnya tentang cara menerapkan alur ini, lihat Menangani Perintah Pesan .

Luncurkan VIA dari Peluncur Mobil

Seperti aplikasi lainnya, VIA dapat menyertakan satu atau lebih aktivitas peluncur pada manifesnya. Terserah pengembang aplikasi dan OEM yang menerima pra-instalasi aplikasi ini untuk memutuskan apa yang akan dilakukan aktivitas ini.

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 ke daftar yang diizinkan (jika Anda OEM) atau beri keterangan aktivitas dengan metadata distractionOptimized yang dioptimalkan. Untuk informasi lebih lanjut, lihat Pedoman Pengalihan Pengemudi .

DSP dan Audio HAL

Pastikan untuk meninjau pedoman yang diperbarui terkait perekaman audio yang selalu aktif secara bersamaan dan HAL audio di Concurrent Capture . Akses ke API ini mungkin memiliki dampak yang signifikan pada kinerja deteksi kata cepat seperti yang dijelaskan di Menanggapi Kata Cepat .

Izin

Berikan Izin Istimewa Sistem

Mengingat bahwa izin istimewa tidak dapat diberikan oleh pengguna, jika VIA membutuhkan salah satu dari mereka, 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 dependensi daftar izin hak istimewa ke proyek Anda:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

Tambahkan file izin daftar 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 Berbahaya Pra-Hibah

Seperti yang ditunjukkan dalam Meminta Izin , VIA memerlukan persetujuan pengguna untuk mengakses fungsi tertentu. Beberapa izin ini diberikan sebelumnya ke VoiceInteractionService default (lihat DefaultPermissionGrantPolicy.java ). Untuk informasi selengkapnya tentang izin untuk penangan default, lihat Izin yang digunakan hanya di penangan default . Dimungkinkan juga untuk memberikan izin terlebih dahulu menggunakan file konfigurasi default-permissions.xml . Untuk detail tentang pembatasan terkait pra-pemberian izin, lihat Bagian 9 di Android Compatibility Definition Document (CDD) .

Penting. Dalam semua kasus, hanya VIA default yang memiliki 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-Pemasangan dan Penerapan Pembaruan)

VIA pra-instal harus berada di bawah /product/priv-apps atau /vendor/priv-apps partisi dan folder (lihat lebih lanjut tentang partisi di Partitions and Images and Building Product Partitions ).

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 Automotive-Specific Concepts , konsistensi dan kustomisasi UI/UX lebih penting dalam otomotif daripada faktor bentuk lainnya. Untuk interoperabilitas maksimum, penggunaan AAOS Car UI Library 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 dibangun sedemikian rupa sehingga UI-nya dapat disesuaikan dengan desain setiap model mobil.