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

כשמצלמים אודיו, ה-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, מסגרת Android תומכת בתיעוד בו-זמני של קלט, אבל עם הגבלות כדי להגן על פרטיות המשתמש. כחלק מההגבלות האלה, מקורות וירטואליים כמו AUDIO_SOURCE_FM_TUNER מתעלמים, ומותר לצלם אותם בו-זמנית עם קלט רגיל (כמו המיקרופון). HwAudioSource לא נחשב כחלק מההגבלות על צילום בו-זמנית.

אפליקציות שמיועדות לפעול עם מכשירי AUDIO_DEVICE_IN_BUS או עם מכשירי AUDIO_DEVICE_IN_FM_TUNER משניים חייבות להסתמך על זיהוי מפורש של המכשירים האלה ועל שימוש ב-AudioRecord.setPreferredDevice() כדי לעקוף את הלוגיקה של בחירת המקור שמוגדרת כברירת מחדל ב-Android.