Lors de la capture audio, le HAL audio reçoit un appel openInputStream
qui
inclut un argument AudioSource
pour indiquer comment l'entrée du micro doit être
traités.
La source VOICE_RECOGNITION
s'attend à un flux de micro stéréo dont le paramètre
effet d'annulation de l'écho (s'il est disponible), mais aucun autre traitement ne lui est appliqué.
Entrée micro multicanal
Pour enregistrer du contenu audio à partir d'un appareil disposant de plus de deux canaux (stéréo), utilisez un
masque d'index du canal au lieu du masque d'index positionnel (comme CHANNEL_IN_LEFT
).
Par exemple:
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);
Lorsque setChannelMask
et setChannelIndexMask
sont tous deux définis, AudioRecord
utilise
uniquement la valeur définie par setChannelMask
(deux canaux maximum).
Capture simultanée
À partir d'Android 10, le framework Android prend en charge
Capture simultanée des entrées, mais avec
des restrictions pour protéger
la vie privée de l’utilisateur. Dans le cadre de ces restrictions,
Les sources virtuelles telles que AUDIO_SOURCE_FM_TUNER
sont ignorées et sont autorisées à
être capturé simultanément avec une entrée standard (comme le micro).
HwAudioSource
n'est pas considéré comme faisant partie des restrictions de capture simultanée.
Applis conçues pour fonctionner avec des appareils AUDIO_DEVICE_IN_BUS
ou avec des appareils secondaires
Les appareils AUDIO_DEVICE_IN_FM_TUNER
doivent s'appuyer sur l'identification explicite de ceux-ci
appareils et en utilisant AudioRecord.setPreferredDevice()
pour contourner
logique de sélection de la source par défaut.