קלט המיקרופון

בעת לכידת אודיו, ה- 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.