إدخال الميكروفون

عند التقاط الصوت، يتلقّى طبقة تجريد الأجهزة (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 ومنطق تحديد المصدر الافتراضي.