Input mikrofon

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.