קלט מיקרופון

כשמבצעים הקלטה של אודיו, שכבת ה-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 לבחירת מקור.