Sim*_*eng 5 audio android alsa phone-call
一段时间以来,我一直在研究MSM8960的这个主题.我从谷歌查看了ALSA硬件模块.迈克尔在帖子中的答案确实提到MSM8960支持"硬件和设备驱动程序"级别的呼叫上行链路音频注入.它是否涉及此ALSA模块的级别?
从手机上的ALSA配置文件来看,似乎通话中的语音播放完成/dev/snd/pcmC0D0p,或者至少符合ALSA范例.是否可以使用其中一个文件描述符来达到目的?我确实在libalsa-intf中看到了一些有趣的USE_CASE定义.
的MSM8960提供名为ALSA控制Incall_Music Audio Mixer,向其中可以连接CPU DAIS MultiMedia1和MultiMedia2(其将对应于ALSA设备pcmC0D0p和pcmC0D1p分别).(参见msm-pcm-routing源代码)
因此,如果您正在运行语音呼叫并希望在上行链路上播放某些音频,pcmC0D0p您可以通过adb shell(假设您已获得root访问权限)来执行此操作:
amix 'Incall_Music Audio Mixer MultiMedia1' 1
aplay -Dhw:0,0 mono_8khz_audio.wav
Run Code Online (Sandbox Code Playgroud)
更优雅的方式,那么,您可以在您的新修改器的启用序列添加门店音乐路由建立在设备的UCM文件(snd_soc_msm_blah_blah ..)一个新的用例:
'Incall_Music Audio Mixer MultiMedia1':1:1
Run Code Online (Sandbox Code Playgroud)
(记得在禁用序列中将其关闭).
要使应用程序能够在自定义ROM上使用此功能,您还必须在音频HAL和多媒体框架中进行一些其他更改,以便在呼叫处于活动状态时为所需的流类型选择新的UCM设置.
由于版权原因,我无法详细说明其余的实现,所以我会把它作为练习,让那些有兴趣自己解决的人.