我试图使用AudioRecord与AudioSource.VOICE_DOWNLINK在Nexus 5X的Android 7.1(我自己的构建从AOSP).
我已经超过了权限阶段 - 将我的APK移动到特权应用程序,AudioRecord在Android源代码中进行了调整以停止抛出有关此源的异常.
现在我在通话期间得到空录音缓冲区.
我知道有很多通话录音应用程序,它们可以在其他设备上运行.我也看到某些应用程序可以对已植根的N5执行某些操作并使其正常工作.
我希望在Nexus 5X上实现同样的目标 - 任何调整对我来说都可以,包括更改Android版本,修改Qualcomm驱动程序,设备配置文件等等 - 基本上可以在自定义ROM中实现.
我已经尝试过使用平台代码 - 硬件/ qcom/audio/hal/voice.c,特别是功能voice_check_and_set_incall_rec_usecase,但到目前为止还没有意义.
还检查了device/lge/bullhead/mixer_paths.xml,发现有一个与呼叫记录相关的部分:
<!-- Incall Recording -->
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
Run Code Online (Sandbox Code Playgroud)
但我也无法理解它或它是如何得到帮助的.
android alsa android-mediarecorder android-audiorecord android-rom
有没有人有经验(使用OpenSL ES,ALSA等)在Android中重定向音频或创建新的声音路径?最终目标是创建一个虚拟麦克风来替换外部麦克风,在那里可以播放音频文件,就好像他们正在对着麦克风讲话一样.访问麦克风的应用程序AudioSource.MIC应使用此备用流.它没有必要使用语音呼叫,我相信实现这种功能更难,因为它都是在无线电中完成的.
关于从哪里开始的任何想法?我已经用OpenSL和ALSA做了一些研究,但看起来我需要打包新固件(ROM)才能定义自定义音频路径.如果可以避免,我想创建一个应用程序级解决方案.电话是"扎根"(有su二进制文件).目标设备是三星Galaxy S4谷歌版(GT-i9505G).具体来说,我正在寻找音频驱动程序配置/源代码或i9505G的任何参考.
提前致谢!
编辑 - 我已经检查了CyanogenMod 10.2源代码树,以及jfltexx驱动程序和内核.以下是kernel/samsung/jf/sound的内容:http://pastebin.com/7vK8THcZ.这记录在哪里?