Khi ghi âm, HAL âm thanh sẽ nhận được lệnh gọi openInputStream
bao gồm một đối số AudioSource
để cho biết cách nhập đầu vào micrô
đã xử lý.
Nguồn VOICE_RECOGNITION
mong đợi một luồng micrô âm thanh nổi có
hiệu ứng loại bỏ tiếng vọng (nếu có) nhưng không có quá trình xử lý nào khác được áp dụng cho hiệu ứng đó.
Đầu vào micrô đa kênh
Để ghi âm từ một thiết bị có nhiều kênh (âm thanh nổi), hãy sử dụng
mặt nạ chỉ mục kênh thay vì mặt nạ chỉ mục vị trí (chẳng hạn như CHANNEL_IN_LEFT
).
Ví dụ:
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);
Khi bạn đặt cả setChannelMask
và setChannelIndexMask
, AudioRecord
sẽ sử dụng
chỉ giá trị do setChannelMask
đặt (tối đa hai kênh).
Chụp đồng thời
Kể từ Android 10, khung Android hỗ trợ
Thu thập đồng thời dữ liệu đầu vào, nhưng với
nhằm bảo vệ quyền riêng tư của người dùng. Là một phần của những hạn chế này,
các nguồn ảo như AUDIO_SOURCE_FM_TUNER
sẽ bị bỏ qua và được phép
được ghi đồng thời với đầu vào thông thường (chẳng hạn như micrô).
HwAudioSource
không được xem là một phần của các hạn chế chụp đồng thời.
Các ứng dụng được thiết kế để hoạt động với AUDIO_DEVICE_IN_BUS
thiết bị hoặc với phụ
AUDIO_DEVICE_IN_FM_TUNER
thiết bị phải dựa vào khả năng xác định rõ ràng
và sử dụng AudioRecord.setPreferredDevice()
để bỏ qua Android
logic lựa chọn nguồn mặc định.