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.