Mikrofoneingabe

Beim Aufzeichnen von Audio empfängt der Audio-HAL einen openInputStream-Aufruf, der enthält ein AudioSource-Argument, um anzugeben, wie die Mikrofoneingabe erfolgen soll. verarbeitet werden.

Die VOICE_RECOGNITION-Quelle erwartet einen Stereo-Mikrofonstream mit einem Echounterdrückungseffekt (falls verfügbar), aber keine andere Verarbeitung darauf angewendet.

Mehrkanal-Mikrofoneingang

Wenn Sie Audio von einem Gerät mit mehr als zwei Kanälen (Stereo) aufnehmen möchten, verwenden Sie einen Kanalindexmaske anstelle der Positionsindexmaske (z. B. CHANNEL_IN_LEFT). Hier einige Beispiele:

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);

Wenn sowohl setChannelMask als auch setChannelIndexMask festgelegt sind, verwendet AudioRecord nur der von setChannelMask festgelegte Wert (maximal zwei Kanäle)

Gleichzeitige Aufnahme

Ab Android 10 unterstützt das Android-Framework Gleichzeitige Erfassung von Eingaben, aber mit um die Privatsphäre der Nutzer zu schützen. Im Rahmen dieser Einschränkungen Virtuelle Quellen wie AUDIO_SOURCE_FM_TUNER werden ignoriert und dürfen gleichzeitig mit einer normalen Eingabe wie dem Mikrofon aufgenommen werden. HwAudioSource wird nicht als Teil der Einschränkungen für gleichzeitige Erfassung betrachtet.

Apps, die für die Verwendung mit AUDIO_DEVICE_IN_BUS-Geräten oder mit sekundären Geräten entwickelt wurden Bei AUDIO_DEVICE_IN_FM_TUNER-Geräten müssen diese explizit identifiziert werden und AudioRecord.setPreferredDevice() zur Umgehung der Android- Standardlogik für die Quellenauswahl.