2
Android AudioRecord强制另一个流到MIC音频源
更新3:我已经与另一位开发人员建立了合作伙伴关系,我们似乎发现有人可以为此花很多钱。他们给我们发送了一个测试apk,它似乎有效。我们将继续购买源。我希望我们不会被骗。我一发现就会更新 更新2:仍在努力。经过更多痛苦的日子后,我现在认为没有什么幻想了,但他们只是在本机端使用AudioFlinger(请参阅链接)来调用AudioFlinger :: setParameters 我现在正在寻找如何编写一个简单的JNI来使用audio_io_handle_t ioHandle,const String8&keyValuePairs调用AudioFlinger :: setParameters 我知道keyValuePairs可以是什么,但不是关于audio_io_handle_t的线索 更新:我现在相信其他应用程序可能会在CAF中使用QCOM音频。见audio_extn_utils_send_audio_calibration在链接相同 和voice_get_incall_rec_snd_device在链接相同 我没有C / ++知识。如何确定是否可以从本机端调用这些方法?由于其他应用程序可以,因此必须有一种方法。 我每天至少要花5-6个小时来努力解决40余天。我不确定SO是否允许,但我也很乐意为正确答案捐款。 我有一个使用VOICE_CALL音频源的通话记录应用程序。尽管ASOP并未实现/授权它,但大多数制造商已经实现了VOICE_CALL,并且使用VOICE_CALL音频源的应用程序在许多设备上都能正常工作。直到Android 6。 Google使用Android 6更改了此行为。现在,打开VOICE_CALL音频源需要android.permission.CAPTURE_AUDIO_OUTPUT,该权限仅授予系统应用程序。 这实质上会停止通话录音,或者应该停止通话录音。好吧,它适用于我的和200多个其他通话记录应用程序,其中3个已经找到解决此限制的方法。 我一直在使用Android 6的许多不同手机上尝试这些应用程序,并发现它们在记录方式上的某些特征。 它们都使用Android AudioRecord类并打开MIC音频源。我也做; 但是在我的应用程序上,我只能从MIC而不是从对方获得音频。我发现告诉他们在开始录制之前或之后,他们正在发出某种系统调用。 查看以下日志表格,其中一个成功记录VOICE_CALL的应用程序之一,即使它使用MIC进行记录也是如此。看起来应用程序似乎是一些如何将VOICE_CALL音频源混入/路由/流/合并到MIC的方式。 - D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=1;routing=-2147483644 - D/PermissionCache: checking android.permission.MODIFY_AUDIO_SETTINGS for uid=10286 => granted (432 us) - D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=4;routing=-2147483584;format=1 - D/audio_hw_primary: select_devices: …