Android 10 meningkatkan pengalaman pengguna yang memerlukan lebih dari satu pengambilan audio aktif secara bersamaan, misalnya, jika pengguna ingin mengontrol panggilan VoIP atau perekam video dengan perintah suara yang disediakan oleh layanan aksesibilitas.
Kerangka kerja audio menerapkan kebijakan yang hanya mengizinkan aplikasi dengan hak istimewa tertentu untuk merekam secara bersamaan dengan aplikasi biasa.
Kebijakan konkurensi diterapkan dengan membungkam audio yang direkam, bukan dengan mencegah aplikasi mulai merekam. Hal ini memungkinkan framework untuk secara dinamis mengatasi perubahan jumlah dan jenis kasus penggunaan pengambilan aktif, tanpa mencegah aplikasi untuk mulai mengambil gambar jika aplikasi dapat memulihkan akses penuh ke mikrofon setelah aplikasi lain selesai mengambil gambar.
Konsekuensi untuk audio HAL dan subsistem audio adalah keduanya harus mendukung beberapa aliran input aktif secara bersamaan, meskipun dalam beberapa kasus, hanya satu aliran yang menyediakan audio non-senyap ke klien aktif.
Persyaratan CDD
Lihat CDD untuk persyaratan dukungan pengambilan bersamaan.
Tangkap situasi dari audio HAL
Skenario pengambilan bersamaan dapat menghasilkan situasi yang berbeda dalam hal jumlah aliran masukan aktif, pemilihan perangkat masukan, atau konfigurasi prapemrosesan.
Konkurensi dapat terjadi antara hal berikut:
- Beberapa aliran input dari prosesor aplikasi (AP)
- Masukkan aliran dan panggilan suara
- Aliran input dan DSP audio menerapkan deteksi kata cepat berdaya rendah
Aktivitas bersamaan dari aliran input AP
File konfigurasi kebijakan audio audio_policy_configuration.xml
digunakan oleh kerangka audio untuk menentukan berapa banyak aliran input yang dapat dibuka dan aktif secara bersamaan.
Minimal, audio HAL harus mendukung setidaknya satu instance dari setiap profil input ( mixPort
dari role sink
) yang tercantum dalam file konfigurasi yang terbuka dan aktif .
Pemilihan perangkat
Ketika beberapa klien aktif dilampirkan ke aliran masukan HAL yang sama, kerangka kerja memilih perangkat yang sesuai untuk aliran masukan ini berdasarkan prioritas kasus penggunaan.
Ketika beberapa aliran input aktif, setiap aliran dapat memiliki pilihan perangkat yang berbeda.
Jika teknologinya kompatibel, sebaiknya audio HAL dan subsistemnya memungkinkan pengambilan streaming berbeda dari perangkat berbeda, seperti headset Bluetooth dan mikrofon internal.
Jika ada ketidakcocokan (misalnya dua perangkat berbagi antarmuka audio digital atau back end yang sama) audio HAL harus memilih aliran mana yang mengontrol pemilihan perangkat.
Pada kasus ini:
- Status yang dihasilkan harus konsisten dan menawarkan pilihan perangkat yang sama ketika skenario yang sama diulang.
- Ketika status konkurensi berakhir, aliran aktif yang tersisa harus dirutekan ke perangkat yang diminta pertama kali pada aliran ini.
Jika urutan prioritas ditentukan oleh audio HAL di antara kasus penggunaan aktif, ikuti urutan yang sama seperti yang ditemukan di source_priority()
di frameworks/av/services/audiopolicy/common/include/policy.h
Seleksi pra-pemrosesan
Kerangka kerja audio dapat meminta prapemrosesan pada aliran masukan menggunakan metode HAL addEffect()
atau removeEffect()
.
Untuk prapemrosesan pada aliran masukan tertentu, kerangka audio hanya mengaktifkan konfigurasi yang sesuai dengan kasus penggunaan aktif dengan prioritas tertinggi pada aliran masukan. Namun, mungkin ada beberapa tumpang tindih selama aktivasi dan penonaktifan kasus penggunaan, menyebabkan dua proses aktif secara bersamaan (misalnya, dua contoh pembatalan gema) berjalan pada aliran input yang sama. Dalam hal ini, implementasi HAL memilih permintaan mana yang diterima; itu melacak permintaan aktif dan mengembalikan keadaan yang benar ketika salah satu proses dinonaktifkan.
Ketika beberapa aliran pengambilan aktif secara bersamaan, permintaan prapemrosesan yang berbeda mungkin dijalankan pada aliran yang berbeda.
Implementasi HAL dan subsistem audio harus memungkinkan pra-pemrosesan yang berbeda untuk diterapkan pada aliran yang berbeda, meskipun keduanya menggunakan perangkat input yang sama. Artinya, pra-pemrosesan harus diterapkan setelah demuxing aliran dari sumber penangkapan utama.
Jika hal ini 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 secara bersamaan dan pengambilan dari AP
Pengambilan gambar dari AP dapat terjadi saat panggilan suara aktif. Situasi ini bukanlah hal baru di Android 10 dan tidak terkait langsung dengan fitur pengambilan serentak, namun ada gunanya menyebutkan pedoman untuk skenario ini.
Dua jenis pengambilan berbeda dari Titik Akses diperlukan selama panggilan.
- Menangkap jalur panggilan RX dan TX
- Mengambil gambar dari perangkat input (misalnya, mikrofon internal)
Tangkap panggilan RX dan TX
Menangkap panggilan RX dan TX dipicu oleh penggunaan sumber audio AudioSource.VOICE_UPLINK
atau AudioSource.VOICE_DOWNLINK
, dan/atau perangkat AudioDevice.IN_TELEPHONY_RX
.
Audio HAL harus diekspos pada profil input ( mixPort
dari role sink
) dengan rute yang tersedia dari perangkat AudioDevice.IN_TELEPHONY_RX
.
Saat panggilan tersambung (mode audio adalah AudioMode.IN_CALL
), setidaknya ada satu aliran pengambilan aktif dari perangkat AudioDevice.IN_TELEPHONY_RX
.
Tangkap dari perangkat input saat panggilan aktif
Saat panggilan aktif (mode audio adalah AudioMode.IN_CALL
), panggilan tersebut seharusnya dapat membuka dan mengaktifkan aliran input dari Titik Akses seperti yang ditentukan di bagian Aktivitas serentak aliran input AP .
Namun, prioritas pemilihan perangkat dan pra-pemrosesan harus selalu ditentukan oleh panggilan suara jika terjadi konflik dengan permintaan dari aliran input Titik Akses.
Pengambilan bersamaan dari DSP dan AP
Jika subsistem audio berisi DSP yang mendukung konteks audio berdaya rendah atau fungsi deteksi kata cepat, penerapannya harus mendukung pengambilan bersamaan dari Titik Akses dan DSP audio. Hal ini mencakup penangkapan oleh DSP selama fase deteksi awal dan penangkapan oleh AP dengan AudioSource.HOTWORD
setelah deteksi dipicu oleh DSP.
Hal ini harus tercermin dari tanda pengambilan bersamaan yang dilaporkan oleh pemicu suara HAL melalui deskriptor implementasi: ISoundTriggerHw.Properties.concurrentCapture = true
.
Audio HAL juga harus mengekspos dan memasukkan profil khusus untuk pengambilan kata cepat yang diidentifikasi dengan tanda AudioInputFlag.HW_HOTWORD
. Implementasinya harus mendukung pembukaan dan pengaktifan sejumlah aliran pada profil ini setidaknya sama dengan jumlah model suara yang dapat dimuat secara bersamaan oleh pemicu suara HAL.
Pengambilan gambar dari profil masukan ini dapat dilakukan saat profil masukan lainnya aktif.
Implikasi untuk implementasi Asisten
Persyaratan penggunaan data dan notifikasi pengguna
Karena penggunaan mikrofon secara bersamaan, jika disalahgunakan, dapat membocorkan data pribadi pengguna, kami memerlukan ketentuan dan jaminan berikut untuk diterapkan pada aplikasi istimewa yang dimuat sebelumnya dan meminta untuk memegang peran Asisten.
- Data yang dikumpulkan melalui mikrofon tidak boleh keluar dari perangkat kecuali pengguna berinteraksi dengan Asisten. Misalnya, setelah kata cepat dipicu.
- Aplikasi yang mendengarkan secara bersamaan harus memberikan isyarat visual kepada pengguna setelah kata cepat terdeteksi. Hal ini membantu pengguna memahami bahwa percakapan selanjutnya akan dilakukan melalui aplikasi lain, seperti Asisten.
- Pengguna harus memiliki kemampuan untuk mematikan mikrofon atau pemicu Asisten.
- Saat rekaman audio disimpan, pengguna harus memiliki kemampuan untuk mengakses, meninjau, dan menghapus rekaman kapan saja.
Peningkatan fungsional untuk Android 10
Asisten tidak saling menghalangi
Di Android 9 atau lebih rendah, jika ada dua Asisten yang selalu aktif di perangkat, hanya satu Asisten yang dapat mendengarkan kata cepatnya. Oleh karena itu, ada kebutuhan untuk beralih di 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 menahan mikrofon tetap terbuka
Saat aplikasi seperti Shazam atau Waze membiarkan mikrofon tetap terbuka, Asisten default masih dapat mendengarkan kata cepat.
Untuk aplikasi Asisten non-default, tidak ada perubahan perilaku untuk Android 10.
Contoh implementasi audio HAL
Contoh implementasi audio HAL yang mematuhi pedoman dalam dokumen ini dapat ditemukan di AOSP .