عند التقاط الصوت، يتلقّى طبقة تجريد الأجهزة (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
(قناتان كحد أقصى).
التقاط متزامن
بدءًا من نظام التشغيل Android 10، سيدعم إطار العمل
الالتقاط المتزامن للمدخلات، ولكن مع
القيود لحماية خصوصية المستخدم. وفي إطار هذه القيود
يتم تجاهل المصادر الافتراضية مثل AUDIO_SOURCE_FM_TUNER
والسماح لها
التقاط صورة بالتزامن مع إدخال منتظم (مثل الميكروفون).
لا يُعتبَر HwAudioSource
جزءًا من قيود التسجيل المتزامن.
التطبيقات المصمَّمة للعمل على أجهزة AUDIO_DEVICE_IN_BUS
أو الأجهزة الثانوية
يجب أن يعتمد AUDIO_DEVICE_IN_FM_TUNER
جهاز على تحديد هذه الأجهزة
الأجهزة واستخدام AudioRecord.setPreferredDevice()
لتجاوز نظام التشغيل Android
ومنطق تحديد المصدر الافتراضي.