Saat merekam audio, Audio HAL menerima panggilan openInputStream
yang mencakup argumen AudioSource
untuk menunjukkan cara pemrosesan input mikrofon.
Sumber VOICE_RECOGNITION
mengharapkan streaming mikrofon stereo yang memiliki efek pembatalan gema (jika tersedia), tetapi tidak ada pemrosesan lain yang diterapkan padanya.
Input mikrofon multi-saluran
Untuk merekam audio dari perangkat dengan lebih dari dua channel (stereo), gunakan mask indeks channel, bukan mask indeks posisi (seperti CHANNEL_IN_LEFT
).
Misalnya:
final AudioFormat audioFormat = new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(44100)
.setChannelIndexMask(0xf /* 4 channels, 0..3 */)
.build();
final AudioRecord audioRecord = new AudioRecord.Builder()
.setAudioFormat(audioFormat)
.build();
audioRecord.setPreferredDevice(someAudioDeviceInfo);
Jika setChannelMask
dan setChannelIndexMask
ditetapkan, AudioRecord
hanya menggunakan
nilai yang ditetapkan oleh setChannelMask
(maksimum dua saluran).
Perekaman serentak
Mulai Android 10, framework Android mendukung
Pengambilan serentak input, tetapi dengan
batasan untuk melindungi privasi pengguna. Sebagai bagian dari batasan ini, sumber virtual seperti AUDIO_SOURCE_FM_TUNER
diabaikan, dan diizinkan untuk direkam secara bersamaan dengan input reguler (seperti mikrofon).
HwAudioSource
tidak dianggap sebagai bagian dari batasan pengambilan gambar serentak.
Aplikasi yang didesain untuk berfungsi dengan perangkat AUDIO_DEVICE_IN_BUS
atau dengan perangkat
AUDIO_DEVICE_IN_FM_TUNER
sekunder harus mengandalkan identifikasi eksplisit perangkat tersebut dan menggunakan AudioRecord.setPreferredDevice()
untuk melewati logika pemilihan sumber default Android.