Android 10 meningkatkan pengalaman pengguna yang memerlukan lebih dari satu perekaman audio aktif terjadi secara bersamaan, misalnya, jika pengguna ingin mengontrol panggilan VoIP atau perekam video dengan perintah suara yang disediakan oleh layanan aksesibilitas.
Framework audio menerapkan kebijakan yang hanya mengizinkan aplikasi istimewa tertentu untuk merekam secara bersamaan dengan aplikasi biasa.
Kebijakan konkurensi diterapkan dengan membisukan audio yang direkam, bukan dengan mencegah aplikasi mulai merekam. Hal ini memungkinkan framework menangani perubahan secara dinamis dalam jumlah dan jenis kasus penggunaan pengambilan gambar aktif, tanpa mencegah aplikasi memulai pengambilan gambar dalam kasus di mana aplikasi dapat memulihkan akses penuh ke mikrofon setelah aplikasi lain selesai mengambil gambar.
Konsekuensi untuk HAL audio dan subsistem audio adalah bahwa keduanya harus mendukung beberapa streaming input aktif secara bersamaan, meskipun dalam beberapa kasus, hanya satu streaming yang menyediakan audio non-senyap ke klien aktif.
Persyaratan CDD
Lihat CDD untuk mengetahui persyaratan dukungan pengambilan serentak.
Merekam situasi dari HAL audio
Skenario pengambilan serentak dapat menghasilkan situasi yang berbeda dalam hal jumlah streaming input aktif, pemilihan perangkat input, atau konfigurasi pra-pemrosesan.
Konkurensi dapat terjadi antara berikut ini:
- Beberapa aliran input dari prosesor aplikasi (AP)
- Aliran input dan panggilan suara
- Input streaming dan DSP audio yang menerapkan deteksi frasa pengaktif berdaya rendah
Aktivitas serentak aliran input AP
File konfigurasi kebijakan audio audio_policy_configuration.xml digunakan oleh framework audio untuk menentukan jumlah aliran input yang dapat dibuka dan aktif secara bersamaan.
Minimal, HAL audio harus mendukung setidaknya satu instance setiap profil
input (mixPort peran sink) yang tercantum dalam file konfigurasi terbuka
dan aktif.
Pemilihan perangkat
Jika beberapa klien aktif terhubung ke aliran input HAL yang sama, framework akan memilih perangkat yang sesuai untuk aliran input ini berdasarkan prioritas kasus penggunaan.
Jika beberapa aliran input aktif, setiap aliran dapat memiliki pilihan perangkat yang berbeda.
Jika kompatibel, sebaiknya HAL dan subsistem audio memungkinkan berbagai aliran data direkam dari perangkat yang berbeda, seperti headset Bluetooth dan mikrofon bawaan.
Jika ada ketidakcocokan (misalnya, dua perangkat berbagi antarmuka audio digital yang sama atau backend), HAL audio harus memilih aliran mana yang mengontrol pemilihan perangkat.
Dalam hal ini:
- Status yang dihasilkan harus konsisten dan menawarkan pilihan perangkat yang sama saat skenario yang sama diulang.
- Saat konkurensi berakhir, aliran aktif yang tersisa harus dirutekan ke perangkat yang awalnya diminta di aliran ini.
Jika urutan prioritas ditentukan oleh HAL audio di antara kasus penggunaan aktif, ikuti urutan yang sama seperti
yang ada di source_priority() dalam
frameworks/av/services/audiopolicy/common/include/policy.h
Pemilihan pra-pemrosesan
Framework audio dapat meminta praproses pada aliran input menggunakan
metode HAL addEffect() atau removeEffect().
Untuk pra-pemrosesan pada aliran input tertentu, framework audio hanya mengaktifkan konfigurasi yang sesuai dengan kasus penggunaan aktif dengan prioritas tertinggi pada aliran input. Namun, mungkin ada beberapa tumpang-tindih selama aktivasi dan penonaktifan kasus penggunaan, sehingga menyebabkan dua proses aktif simultan (misalnya, dua instance pembatal gema) berjalan pada aliran input yang sama. Dalam hal ini, implementasi HAL memilih permintaan mana yang diterima; HAL melacak permintaan aktif dan memulihkan status yang benar saat salah satu proses dinonaktifkan.
Jika beberapa aliran pengambilan aktif secara bersamaan, permintaan praproses yang berbeda mungkin dijalankan pada aliran yang berbeda.
Implementasi HAL dan subsistem audio harus memungkinkan penerapan pra-pemrosesan yang berbeda ke berbagai aliran, meskipun aliran tersebut menggunakan perangkat input yang sama. Artinya, pra-pemrosesan harus diterapkan setelah melakukan demuxing pada aliran dari sumber pengambilan primer.
Jika tidak memungkinkan karena alasan teknis pada subsistem audio tertentu, HAL audio harus menerapkan aturan prioritas yang serupa dengan yang tercantum dalam Pemilihan perangkat.
Panggilan suara dan pengambilan gambar serentak dari AP
Pengambilan gambar dari AP dapat terjadi saat panggilan suara aktif. Situasi ini bukan hal baru di Android 10 dan tidak terkait langsung dengan fitur pengambilan gambar serentak, tetapi berguna untuk menyebutkan panduan untuk skenario ini.
Dua jenis pengambilan yang berbeda dari AP diperlukan selama panggilan.
Merekam RX dan TX panggilan
Perekaman RX dan TX panggilan dipicu oleh penggunaan sumber audio
AudioSource.VOICE_UPLINK atau AudioSource.VOICE_DOWNLINK, dan/atau perangkat
AudioDevice.IN_TELEPHONY_RX.
HAL audio harus diekspos pada profil input (mixPort peran sink)
dengan rute yang tersedia dari perangkat AudioDevice.IN_TELEPHONY_RX.
Saat panggilan tersambung (mode audio adalah AudioMode.IN_CALL), setidaknya satu streaming pengambilan aktif dari perangkat AudioDevice.IN_TELEPHONY_RX harus tersedia.
Merekam dari perangkat input saat panggilan aktif
Saat panggilan aktif (mode audio adalah AudioMode.IN_CALL), Anda dapat membuka dan mengaktifkan aliran input dari AP seperti yang ditentukan di bagian Aktivitas serentak aliran input AP.
Namun, prioritas untuk pemilihan perangkat dan pra-pemrosesan harus selalu didorong oleh panggilan suara jika ada konflik dengan permintaan dari aliran input AP.
Perekaman serentak dari DSP dan AP
Jika subsistem audio berisi DSP yang mendukung fungsi deteksi hotword atau konteks audio berdaya rendah, penerapan harus mendukung pengambilan serentak dari AP dan DSP audio.
Hal ini mencakup pengambilan oleh DSP selama fase deteksi awal dan pengambilan oleh AP dengan AudioSource.HOTWORD setelah deteksi dipicu oleh DSP.
Hal ini harus tercermin dalam tanda pengambilan serentak yang dilaporkan oleh HAL pemicu suara melalui
deskriptor penerapan: ISoundTriggerHw.Properties.concurrentCapture = true.
HAL audio juga harus mengekspos dan memasukkan profil khusus untuk pengambilan hotword yang diidentifikasi oleh
flag AudioInputFlag.HW_HOTWORD. Implementasi harus mendukung pembukaan dan
pengaktifan sejumlah aliran pada profil ini yang setidaknya sama dengan jumlah model suara yang
dapat dimuat secara bersamaan oleh HAL pemicu suara.
Pengambilan dari profil input ini harus dapat dilakukan saat profil input lain aktif.
Implikasi untuk penerapan Asisten
Persyaratan terkait penggunaan data dan notifikasi pengguna
Karena penggunaan mikrofon serentak, jika disalahgunakan, dapat membocorkan data pribadi pengguna, kami memerlukan kondisi dan jaminan berikut untuk diterapkan pada aplikasi pra-muat istimewa yang meminta untuk memegang peran Asisten.
- Data yang dikumpulkan melalui mikrofon tidak boleh keluar dari perangkat kecuali jika pengguna berinteraksi dengan Asisten. Misalnya, setelah kata kunci diaktifkan.
- Aplikasi yang mendengarkan secara bersamaan harus memberikan isyarat visual kepada pengguna setelah kata aktif terdeteksi. Hal ini membantu pengguna memahami bahwa percakapan selanjutnya akan dilakukan melalui aplikasi lain, seperti Asisten.
- Pengguna harus dapat menonaktifkan mikrofon atau pemicu Asisten.
- Jika rekaman audio disimpan, pengguna harus dapat mengakses, meninjau, dan menghapus rekaman kapan saja.
Peningkatan fungsi untuk Android 10
Asisten tidak saling memblokir
Di Android 9 atau yang lebih lama, jika ada dua Asisten yang selalu aktif di perangkat, hanya salah satunya yang dapat mendengarkan kata aktivasinya. Oleh karena itu, perlu beralih antara kedua Asisten tersebut. Di Android 10, Asisten default dapat mendengarkan secara bersamaan dengan Asisten lainnya. Hal ini menghasilkan pengalaman yang jauh lebih lancar bagi pengguna dengan kedua Asisten.
Aplikasi yang membuat mikrofon tetap aktif
Saat aplikasi seperti Shazam atau Waze membuka mikrofon, Asisten default masih dapat mendengarkan kata pemicu.
Untuk aplikasi Asisten non-default, tidak ada perubahan perilaku untuk Android 10.
Contoh implementasi HAL audio
Contoh implementasi HAL audio yang mematuhi pedoman dalam dokumen ini dapat ditemukan di AOSP.