Entrée micro

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.