Đầu vào micrô

Khi thu âm thanh, Audio HAL sẽ nhận được lệnh gọi openInputStream bao gồm đối số AudioSource để cho biết cách xử lý đầu vào của micrô.

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ó quy trình xử lý nào khác được áp dụng cho luồng này.

Đầu vào của micrô đa kênh

Để thu âm thanh từ một thiết bị có hơn 2 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 cả setChannelMasksetChannelIndexMask đều được đặt, AudioRecord chỉ sử dụng giá trị do setChannelMask đặt (tối đa 2 kênh).

Thu đồng thời

Kể từ Android 10, khung Android hỗ trợ tính năng Thu đồng thời các đầu vào, nhưng có các hạn chế để bảo vệ quyền riêng tư của người dùng. Theo các hạn chế này, các nguồn ảo như AUDIO_SOURCE_FM_TUNER sẽ bị bỏ qua và được phép thu đồng thời cùng với một đầu vào thông thường (chẳng hạn như micrô). HwAudioSource không được coi là một phần của các hạn chế về tính năng thu đồng thời.

Các ứng dụng được thiết kế để hoạt động với thiết bị AUDIO_DEVICE_IN_BUS hoặc với thiết bị AUDIO_DEVICE_IN_FM_TUNER thứ cấp phải dựa vào việc xác định rõ ràng các thiết bị đó và sử dụng AudioRecord.setPreferredDevice() để bỏ qua logic chọn nguồn mặc định của Android.