更新3:我与另一位开发人员合作,我们似乎find了一个能够为此花费大笔金钱的人。 他们给我们一个testingapk,它似乎工作。 我们将继续购买源代码。 我希望我们不会被骗。 一旦我发现,我会更新 更新2:仍然在努力。 经过更多痛苦的日子,我现在认为没有什么奇特的事情,但他们只是在本机端使用AudioFlinger( 请参阅链接 )来调用AudioFlinger :: setParameters 我现在正在寻找如何编写一个简单的JNI来调用AudioFlinger :: setParameters with audio_io_handle_t ioHandle,const String8&keyValuePair 我知道什么keyValuePairs可以但不是关于audio_io_handle_t的线索 更新:我现在相信其他应用程序可能正在使用与CAF的QCOMaudio。 请参阅链接 audio_extn_utils_send_audio_calibration 相同 和voice_get_incall_rec_snd_device在链接相同 我没有C / ++的知识。 我怎样才能知道是否可以从本地调用这些方法? 由于其他应用程序可以,一定有办法。 我一直在这个40多天的时间里挣扎,每天至less有5-6个小时。 我不确定这是否被允许,但我也乐意为正确的答案捐款。 我有一个使用VOICE_CALLaudio源的通话录音应用程序。 尽pipeASOP没有实施/强制执行,但大多数制造商已经实施了VOICE_CALL,使用VOICE_CALLaudio源的应用程序在许多设备上运行良好。 这是直到Android 6。 Google使用Android 6更改了此行为。现在打开VOICE_CALLaudio源需要android.permission.CAPTURE_AUDIO_OUTPUT,它只被授予系统应用程序。 这基本上停止了通话logging,或者它应该有。 那么,除了3个已经find解决这个限制的方法之外,它对我和其他200多个通话录音应用程序都有效。 我一直在用Android 6在许多不同的手机上试用这些应用程序,并发现了它们logging的某些特征。 他们都使用Android AudioRecord类并打开MICaudio源。 我也做; 但在我的应用程序中,我只从MIC获取audio,而不是另一方。 我发现,在开始录制之前或之后,他们正在发出某种系统调用。 查看下面的日志表单,即使使用MIClogging,也能成功loggingVOICE_CALL的应用程序之一。 它看起来像应用程序是如何pipe理混合/路由/stream/合并VOICE_CALLaudio源到MIC。 – D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=1;routing=-2147483644 – D/PermissionCache: […]