Android 10 meningkatkan pengalaman pengguna yang memerlukan lebih dari satu pengambilan audio aktif terjadi 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 istimewa tertentu untuk merekam secara bersamaan dengan aplikasi biasa.
Kebijakan konkurensi diterapkan dengan membungkam audio yang diambil alih-alih mencegah aplikasi mulai merekam. Hal ini memungkinkan kerangka kerja untuk secara dinamis mengatasi perubahan dalam jumlah dan jenis kasus penggunaan pengambilan aktif, tanpa mencegah aplikasi mulai merekam dalam kasus di mana ia dapat memulihkan akses penuh ke mikrofon setelah aplikasi lain selesai merekam.
Konsekuensi untuk audio HAL dan subsistem audio adalah bahwa mereka harus mendukung beberapa aliran input aktif secara bersamaan, bahkan jika dalam beberapa kasus, hanya satu aliran yang menyediakan audio non-diam ke klien aktif.
Persyaratan CDD
Lihat CDD untuk persyaratan dukungan pengambilan bersamaan.
Tangkap situasi dari audio HAL
Skenario penangkapan bersamaan dapat menghasilkan situasi yang berbeda dalam hal jumlah aliran input aktif, pemilihan perangkat input, atau konfigurasi prapemrosesan.
Konkurensi dapat terjadi antara yang berikut:
- Beberapa aliran input dari prosesor aplikasi (AP)
- Aliran input dan panggilan suara
- Aliran input dan DSP audio yang menerapkan deteksi kata cepat berdaya rendah
Aktivitas arus input AP secara bersamaan
File konfigurasi kebijakan audio audio_policy_configuration.xml
digunakan oleh kerangka kerja audio untuk menentukan berapa banyak aliran input yang dapat dibuka dan diaktifkan secara bersamaan.
Minimal, HAL audio harus mendukung setidaknya satu contoh dari setiap profil input ( mixPort
of role sink
) yang tercantum dalam file konfigurasi terbuka dan aktif .
Pemilihan perangkat
Ketika beberapa klien aktif dilampirkan ke aliran input HAL yang sama, kerangka kerja akan memilih perangkat yang sesuai untuk aliran input ini berdasarkan prioritas kasus penggunaan.
Saat beberapa aliran input aktif, setiap aliran dapat memiliki pilihan perangkat yang berbeda.
Jika teknologinya kompatibel, disarankan agar audio HAL dan subsistem memungkinkan aliran yang berbeda untuk menangkap dari perangkat yang 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 pemilihan perangkat yang sama ketika skenario yang sama diulang.
- Saat status konkurensi berakhir, aliran aktif yang tersisa harus dirutekan ke perangkat yang awalnya diminta pada aliran ini.
Jika urutan prioritas ditentukan oleh HAL audio 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 input menggunakan metode HAL addEffect()
atau removeEffect()
.
Untuk prapemrosesan pada aliran input yang diberikan, kerangka kerja 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, yang menyebabkan dua proses aktif simultan (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 status yang benar ketika salah satu proses dinonaktifkan.
Saat beberapa aliran pengambilan aktif secara bersamaan, permintaan prapemrosesan yang berbeda mungkin dijalankan pada aliran yang berbeda.
Implementasi subsistem HAL dan audio harus memungkinkan pra-pemrosesan yang berbeda untuk diterapkan ke aliran yang berbeda, bahkan jika mereka berbagi perangkat input yang sama. Artinya, pra-pemrosesan harus diterapkan setelah menghapus aliran dari sumber tangkapan utama.
Jika tidak memungkinkan karena alasan teknis pada subsistem audio tertentu, HAL audio harus menerapkan aturan prioritas yang serupa dengan yang tercantum di Pemilihan perangkat .
Panggilan suara serentak dan tangkap dari AP
Pengambilan dari AP dapat terjadi saat panggilan suara aktif. Situasi ini bukanlah hal baru di Android 10 dan tidak terkait langsung dengan fitur pengambilan bersamaan, tetapi ada baiknya menyebutkan panduan untuk skenario ini.
Dua jenis pengambilan yang berbeda dari AP diperlukan selama panggilan.
Menangkap 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 ditampilkan 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
), harus dimungkinkan untuk memiliki setidaknya satu aliran pengambilan aktif dari perangkat AudioDevice.IN_TELEPHONY_RX
.
Menangkap dari perangkat input saat panggilan aktif
Saat panggilan aktif (mode audio adalah AudioMode.IN_CALL
), itu harus memungkinkan untuk membuka dan mengaktifkan aliran input dari AP seperti yang ditentukan di bagian Aktivitas bersamaan 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.
Pengambilan serentak dari DSP dan AP
Ketika subsistem audio berisi DSP yang mendukung konteks audio berdaya rendah atau fungsi deteksi kata cepat, implementasinya harus mendukung pengambilan serentak dari AP dan DSP audio. Ini termasuk penangkapan oleh DSP selama fase deteksi awal dan penangkapan oleh AP dengan AudioSource.HOTWORD
setelah deteksi dipicu oleh DSP.
Ini harus dicerminkan oleh flag capture bersamaan yang dilaporkan oleh HAL pemicu suara melalui deskriptor implementasi: ISoundTriggerHw.Properties.concurrentCapture = true
.
Audio HAL juga harus mengekspos dan memasukkan profil khusus untuk penangkapan kata cepat yang diidentifikasi oleh 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 dari profil input ini harus dimungkinkan saat profil input 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 ke aplikasi pramuat istimewa yang 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. Ini membantu pengguna memahami bahwa percakapan lebih lanjut akan melalui aplikasi yang berbeda, 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 memblokir satu sama lain
Di Android 9 atau lebih rendah, ketika ada dua Asisten yang selalu aktif di perangkat, hanya satu dari mereka yang dapat mendengarkan kata cepatnya. Oleh karena itu, ada kebutuhan untuk beralih di antara dua Asisten. Di Android 10, Asisten default dapat mendengarkan secara bersamaan dengan Asisten lainnya. Ini menghasilkan pengalaman yang jauh lebih lancar bagi pengguna dengan kedua Asisten.
Aplikasi menahan mikrofon terbuka
Saat aplikasi seperti Shazam atau Waze menahan mikrofon agar tetap terbuka, Asisten default masih dapat mendengarkan kata cepatnya.
Untuk aplikasi Asisten non-default, tidak ada perubahan perilaku untuk Android 10.
Contoh implementasi HAL audio
Contoh implementasi audio HAL yang sesuai dengan pedoman dalam dokumen ini dapat ditemukan di AOSP .