MSM8960 提供了一个名为 的 ALSA 控件Incall_Music Audio Mixer
,您可以将 CPU DAIMultiMedia1
和连接到该控件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
更优雅的方法是在设备的 UCM 文件 (snd_soc_msm_blah_blah..) 中创建一个新用例,在其中在新修改器的启用序列中添加 incall 音乐路由:
'Incall_Music Audio Mixer MultiMedia1':1:1
(记得在禁用序列中将其关闭)。
为了让应用程序能够在您的自定义 ROM 上使用此功能,您还必须在音频 HAL 和多媒体框架中进行一些其他更改,以便在呼叫处于活动状态时为所需的流类型选择新的 UCM 设置。
由于版权原因,我无法详细介绍其余的实现,所以我将把它作为练习留给有兴趣的人自己解决。