Input mikrofon

Saat merekam audio, Audio HAL menerima panggilan openInputStream yang menyertakan argumen AudioSource untuk menunjukkan bagaimana input mikrofon harus diproses.

Sumber VOICE_RECOGNITION mengharapkan aliran mikrofon stereo yang memiliki efek pembatalan gema (jika tersedia) namun tidak ada pemrosesan lain yang diterapkan padanya.

Masukan mikrofon multi-saluran

Untuk menangkap audio dari perangkat dengan lebih dari dua saluran (stereo), gunakan masker indeks saluran, bukan masker 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 disetel, AudioRecord hanya menggunakan nilai yang disetel oleh setChannelMask (maksimum dua saluran).

Penangkapan secara bersamaan

Mulai Android 10, framework Android mendukung pengambilan input secara bersamaan , namun dengan batasan untuk melindungi privasi pengguna. Sebagai bagian dari pembatasan ini, sumber virtual seperti AUDIO_SOURCE_FM_TUNER diabaikan, dan diperbolehkan untuk diambil secara bersamaan bersama dengan input reguler (seperti mikrofon). HwAudioSource tidak dianggap sebagai bagian dari pembatasan pengambilan bersamaan.

Aplikasi yang dirancang untuk berfungsi dengan perangkat AUDIO_DEVICE_IN_BUS atau perangkat AUDIO_DEVICE_IN_FM_TUNER sekunder harus mengandalkan identifikasi perangkat tersebut secara eksplisit dan menggunakan AudioRecord.setPreferredDevice() untuk melewati logika pemilihan sumber default Android.