Android 10 meningkatkan pengalaman pengguna yang memerlukan lebih dari satu perekaman audio aktif untuk 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 dengan hak istimewa tertentu untuk merekam secara bersamaan dengan aplikasi reguler.
Kebijakan serentak diterapkan dengan membisukan audio yang direkam, bukan dengan mencegah aplikasi memulai perekaman. Hal ini memungkinkan framework secara dinamis mengatasi perubahan jumlah dan jenis kasus penggunaan perekaman aktif, tanpa mencegah aplikasi mulai merekam jika dapat memulihkan akses penuh ke mikrofon setelah aplikasi lain selesai merekam.
Konsekuensinya untuk HAL audio dan subsistem audio adalah 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 prapemrosesan.
Serentak dapat terjadi antara hal berikut:
- Beberapa aliran input dari prosesor aplikasi (AP)
- Streaming input dan panggilan suara
- Streaming input dan DSP audio yang menerapkan deteksi frasa pengaktif daya rendah
Aktivitas serentak aliran input AP
File konfigurasi kebijakan audio audio_policy_configuration.xml
digunakan oleh framework
audio untuk menentukan jumlah streaming input yang dapat dibuka dan aktif secara bersamaan.
Minimal, HAL audio harus mendukung setidaknya satu instance dari setiap profil
input (mixPort
dari peran sink
) yang tercantum dalam file konfigurasi
yang terbuka dan aktif.
Pemilihan perangkat
Saat beberapa klien aktif dilampirkan ke aliran input HAL yang sama, framework akan memilih perangkat yang sesuai untuk aliran input ini berdasarkan prioritas kasus penggunaan.
Jika beberapa stream input aktif, setiap stream dapat memiliki perangkat yang berbeda pilihan.
Jika teknologi tersebut kompatibel, sebaiknya HAL dan subsistem audio mengizinkan streaming yang berbeda untuk diambil dari perangkat yang berbeda, seperti headset Bluetooth dan mikrofon bawaan.
Jika ada inkompatibilitas (misalnya, dua perangkat memiliki antarmuka audio digital atau backend yang sama), HAL audio harus memilih streaming yang mengontrol pemilihan perangkat.
Dalam hal ini:
- Status yang dihasilkan harus konsisten dan menawarkan pilihan perangkat yang sama berulang.
- Saat status serentak berakhir, streaming aktif yang tersisa harus dirutekan ke perangkat yang awalnya diminta di streaming ini.
Jika urutan prioritas ditentukan oleh HAL audio di antara kasus penggunaan aktif, ikuti urutan yang sama seperti
yang ditemukan di source_priority()
di
frameworks/av/services/audiopolicy/common/include/policy.h
Pilihan prapemrosesan
Framework audio dapat meminta prapemrosesan pada aliran input menggunakan
metode HAL addEffect()
atau removeEffect()
.
Untuk prapemrosesan pada aliran input tertentu, framework audio hanya mengaktifkan konfigurasi yang sesuai dengan kasus penggunaan aktif prioritas tertinggi di aliran input. Namun, mungkin ada beberapa tumpang tindih selama aktivasi dan penonaktifan kasus penggunaan, menyebabkan dua proses aktif simultan (misalnya, dua instance echo canceller) untuk dijalankan pada stream input yang sama. Dalam hal ini, implementasi HAL memilih permintaan mana yang diterima; implementasi ini melacak permintaan yang aktif dan memulihkan status yang benar saat salah satu proses dinonaktifkan.
Saat beberapa aliran pengambilan aktif secara bersamaan, permintaan prapemrosesan yang berbeda mungkin berjalan di aliran yang berbeda.
Implementasi subsistem audio dan HAL harus memungkinkan prapemrosesan yang berbeda diterapkan ke streaming yang berbeda, meskipun keduanya menggunakan perangkat input yang sama. Yaitu, pra-pemrosesan harus diterapkan setelah demux streaming dari sumber tangkapan utama.
Jika tidak memungkinkan karena alasan teknis pada subsistem audio tertentu, HAL audio harus berlaku aturan prioritas yang serupa dengan yang tercantum dalam Pemilihan perangkat.
Panggilan suara dan perekaman serentak dari AP
Perekaman dari AP dapat dilakukan saat panggilan suara aktif. Ini ini bukanlah hal baru di Android 10 dan tidak terkait langsung dengan fitur pengambilan gambar yang serentak, tetapi Anda dapat menyebutkan panduan untuk skenario ini.
Dua jenis penangkapan 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 di profil input (mixPort
dari peran sink
)
dengan rute yang tersedia dari perangkat AudioDevice.IN_TELEPHONY_RX
.
Saat panggilan terhubung (mode audio adalah AudioMode.IN_CALL
), hal ini seharusnya dapat dilakukan
untuk memiliki setidaknya satu aliran pengambilan aktif dari perangkat AudioDevice.IN_TELEPHONY_RX
.
Mengambil foto dari perangkat input telepon aktif
Saat panggilan aktif (mode audio adalah AudioMode.IN_CALL
), Anda harus dapat
membuka dan mengaktifkan stream input dari AP sebagaimana ditentukan dalam bagian
Aktivitas aliran input AP secara serentak.
Namun, prioritas untuk pemilihan perangkat dan prapemrosesan harus selalu didorong oleh panggilan suara jika terjadi konflik dengan permintaan dari aliran input AP.
Pengambilan foto serentak dari DSP dan AP
Jika subsistem audio berisi DSP yang mendukung konteks audio berdaya rendah atau deteksi frasa pengaktif
fungsi otomatisnya, implementasinya harus mendukung perekaman serentak dari AP dan DSP audio.
Hal ini termasuk penangkapan oleh DSP selama fase deteksi awal dan penangkapan oleh AP
dengan AudioSource.HOTWORD
setelah deteksi dipicu oleh DSP.
Hal ini harus tercermin dalam panji penangkapan bersamaan yang dilaporkan oleh HAL pemicu suara melalui
deskripsi implementasi: ISoundTriggerHw.Properties.concurrentCapture = true
.
HAL audio juga harus mengekspos dan memasukkan profil yang khusus untuk tangkapan frasa pengaktif yang diidentifikasi oleh
tandai AudioInputFlag.HW_HOTWORD
. Implementasinya harus mendukung
pembukaan dan penerapan
mengaktifkan sejumlah aliran di profil ini setidaknya sama dengan jumlah model suara yang
dapat dimuat secara bersamaan oleh HAL pemicu suara.
Perekaman dari profil input ini dapat dilakukan saat profil input lainnya aktif.
Implikasi untuk penerapan Asisten
Persyaratan penggunaan data dan notifikasi pengguna
Karena penggunaan mikrofon serentak, jika disalahgunakan, dapat membocorkan data pribadi pengguna, kami memerlukan kondisi dan jaminan berikut untuk diterapkan ke aplikasi bawaan dengan hak 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 dipicu.
- Aplikasi yang mendengarkan secara serentak harus memberikan isyarat visual kepada pengguna setelah frasa pengaktif terdeteksi. Hal ini membantu pengguna memahami bahwa percakapan lebih lanjut akan melalui aplikasi lain, seperti Asisten.
- Pengguna harus dapat menonaktifkan mikrofon atau pemicu Asisten.
- Saat rekaman audio disimpan, pengguna harus dapat mengakses, meninjau, dan menghapus rekaman kapan saja.
Peningkatan fungsional untuk Android 10
Asisten tidak saling memblokir
Di Android 9 atau yang lebih lama, jika ada dua Asisten yang selalu aktif di perangkat, hanya satu di antaranya yang dapat memproses kata kuncinya. Oleh karena itu, ada kebutuhan untuk beralih antara kedua Asisten. Di Android 10, Asisten default dapat mendengarkan secara serentak 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 menahan mikrofon, Asisten default masih bisa mendengarkan untuk frasa pengaktif.
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 berupa yang ditemukan di AOSP.