为什么在android中无法在语音通话中播放音频文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (98)

这些问题的答案表明,在android中的语音通话中不能播放预先录制的音频。我想知道为什么这是不可能的?什么是限制(硬件/软件)?这是否真的是一个限制或有目的地完成?我们可以改变android的源代码来使它成为可能吗?

提问于
用户回答回答于

经过深入研究后,我所知道的是,有多种限制/障碍才能实现。这些限制/障碍分为三个不同的级别。

首先限制在API级别,因为在Android官方文档中提到的通话期间没有高级API在通话期间播放对话音频中的声音文件。

第二个限制是在无线电接口层(RIL)。RIL将完全控制对Linux库的Radio Daemon(rild)的调用传递给它,然后将该控制权进一步传递给供应商RIL。这意味着我们无法在android源代码中操作语音通话。

即使我们能够消除这两个限制,我们仍然可能无法播放音频文件以进行正在进行的语音通话。因为还有第三个限制。每个供应商都有自己的RIL库,与Radio Daemon(rild)进行通信。这要求供应商RIL是开源的,而实际上并非如此。硬件厂商通常不会让他们的设备驱动程序代码可用。

用户回答回答于

在Android上,你将无法以编程方式进行操作,仅仅是因为当前的API不允许你这样做。它也在正式文件中说明。如果你深入了解源代码,你可以通过在通话期间访问麦克风输出来启用此功能,但这需要运行你的自定义版本的Android。一个很好的起点将是AudioTrack源。

编辑:音频模块的一个很好的例子涉及使Nexus 5听筒成为第二个扬声器(需要根音)。

扫码关注云+社区