ورودی میکروفون

هنگام ضبط صدا، Audio HAL یک تماس openInputStream دریافت می کند که شامل یک آرگومان AudioSource برای نشان دادن نحوه پردازش ورودی میکروفون است.

منبع VOICE_RECOGNITION انتظار یک جریان میکروفون استریو را دارد که دارای اثر لغو اکو باشد (در صورت وجود) اما پردازش دیگری برای آن اعمال نشود.

ورودی میکروفون چند کاناله

برای ضبط صدا از دستگاهی با بیش از دو کانال (استریو)، به جای ماسک نمایه موقعیتی (مانند CHANNEL_IN_LEFT ) از ماسک نمایه کانال استفاده کنید. مثلا:

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

هنگامی که هر دو setChannelMask و setChannelIndexMask تنظیم شده اند، AudioRecord فقط از مقدار تعیین شده توسط setChannelMask (حداکثر دو کانال) استفاده می کند.

ضبط همزمان

از اندروید 10، چارچوب اندروید از ضبط همزمان ورودی‌ها پشتیبانی می‌کند، اما با محدودیت‌هایی برای محافظت از حریم خصوصی کاربر. به‌عنوان بخشی از این محدودیت‌ها، منابع مجازی مانند AUDIO_SOURCE_FM_TUNER نادیده گرفته می‌شوند و اجازه دارند همزمان با یک ورودی معمولی (مانند میکروفون) ضبط شوند. HwAudioSource بخشی از محدودیت‌های ضبط همزمان در نظر گرفته نمی‌شود.

برنامه‌هایی که برای کار با دستگاه‌های AUDIO_DEVICE_IN_BUS یا دستگاه‌های AUDIO_DEVICE_IN_FM_TUNER ثانویه طراحی شده‌اند، باید به شناسایی صریح آن دستگاه‌ها و استفاده از AudioRecord.setPreferredDevice() برای دور زدن منطق انتخاب منبع پیش‌فرض Android تکیه کنند.