Đầu vào micrô

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ả setChannelMasksetChannelIndexMask, 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.