I have a call recording app that uses VOICE_CALL audio source. Although ASOP does not implement&#x2F;mandate it, most manufacturers have implemented VOICE_CALL and apps that use VOICE_CALL audio source worked fine on many devices. That is until Android 6.<p>Apparently Google changed this behavior with Android 6. Opening VOICE_CALL audio source now requires android.permission.CAPTURE_AUDIO_OUTPUT which is only granted to system applications.<p>Although Android 6 is almost 1 year old, there is no documentation about this. But, according to Eric Laurent &quot;This change was intentional in M.RECORD_AUDIO permission was too easy to acquire considering the privacy risk involved in allowing capture of voice call audio.
Also note that capturing from VOICE_CALL source is not supported consistently across the Android ecosystem and not mandated by the Android CDD. The SDK documentation should be updated accordingly.&quot;<p>This essentially stops call recording, or it should have. Well, it does for mine and 200+ other call recording apps apart from 3 who have found a way to get around this limitation on phones with Qualcomm chip-set such as most Sony Xperias and OnePlus1&#x2F;2<p>I have been trying those apps on many couple of phones with Android 6 and found out certain characteristics in the way they manage to record.<p>They all use Android AudioRecord class and open MIC audio source. I do too; but on my app, I only get audio from MIC, not the other party. What I&#x27;ve found out is telling me that they are issuing some sort of system call just after or before starting recording.<p>Have a look at the following log form one of the apps that successfully record VOICE_CALL, even though it uses MIC to record. It looks like it is some how managing to mix&#x2F;route&#x2F;stream&#x2F;merge VOICE_CALL audio source in to MIC.
Ask HN: Android AudioRecord forcing VOICE_CALL to MIC audio source