这个问题可能看起来类似于以下问题:
如何在Android上的语音通话中播放音频文件?
进行中的通话后台音频-是否可能?
这些问题的答案表明,在Android上无法播放预录制的音频文件。我想知道为什么不可能?有哪些限制(硬件/软件)?这确实是一种限制还是故意这样做的?我们能否更改Android的源代码使其成为可能?
这个问题可能看起来类似于以下问题:
这些问题的答案表明,在Android上无法播放预录制的音频文件。我想知道为什么不可能?有哪些限制(硬件/软件)?这确实是一种限制还是故意这样做的?我们能否更改Android的源代码使其成为可能?
我认为这是一种限制,出于安全原因在操作系统层面上受到了限制。
首先,让我们分析安全威胁。如果你能够向被叫方播放自定义音频文件,就会打开一个全新的缺口:你可以欺骗客户支持,你可以冒充别人,你可以给未经授权的购买确认等等。因此,Android和iOS都不允许这种功能存在。
在Android上,你无法以编程方式执行此操作,因为当前的API不允许您这样做。官方文档也指出了这一点,如此处所示。如果您深入挖掘源代码,可能可以通过在电话通话期间访问麦克风输出来启用此功能,但这需要运行您定制的Android版本。一个好的起点是AudioTrack
源代码,在这里可用。
编辑:一个很好的音频修改示例涉及将Nexus 5耳机扬声器作为第二个扬声器(需要root)。可以在此处找到。
这与安卓中音频路由的优先级设置有关。可以查看CallManager,在其中可以深入研究方法setAudioMode()
。在将音频模式设置为MODE_IN_COMMUNICATION
之后,会调用以下代码。
audioManager.requestAudioFocusForCall(AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);