如何在Android语音通话中播放音频文件

37

我正在开发一款Android应用程序,必须在通话过程中播放音频文件,而对方必须能够听到。

在Android系统中有没有这样的实现方法呢? 我已经搜索了最近2个月,但是没有头绪。如果有人遇到了同样的问题,请与我分享你的想法。


3
谢谢您的回复,但是我没有询问任何关于新呼叫事件的问题,我想在现有通话中播放音频文件,这是否可能? - Srinivas
21
这个问题被关闭了,理由是“范围过大”。这个问题哪里范围过大了?我觉得它很到位,而且非常具体。 - Peter V. Mørch
2
关闭原因是错误的。我刚刚搜索了这个确切的点,Google 返回了第一结果。我会是唯一一个认为因为今天不可能,明天就不可能吗? - qxotk
1
关闭原因是错误的,但如果在2018年今天没有任何变化,它将保持关闭状态。 - nimbus_debug
还有一个想法,通过通话发送DTMF音调?(似乎是发送按键)。如果注入的是音频,则任何拨号器都可以做到。我在XDA线程中写了我发现的内容。不多,但也许可以帮助人们继续研究?我会尝试在Google上搜索如何通过通话发送DTMF音调。我只尝试了“音频”一词,而不是DTMF。如果那是音频,可能会有所帮助,我想说。即使只能注入频率,也比没有好,我想(某些频率=哔声=已经很酷了哈哈)。 - Edw590
显示剩余4条评论
5个回答

35

虽然这是一个旧帖子,但我想分享一下我试过的经验。

简单地说,不行,但也有“一些”例外情况。但如果你想为公众构建一个应用程序... 这不适合你... 它只适合特定设备。

为什么我们不能在通话中播放音频

简单的事实是,在电话通话期间的麦克风/输入音频流无法被预处理或替换为任何形式的另一个流。

因此,尽管人们可能认为在通话期间使用媒体很容易,但由于Android系统处理音频的方式,这根本不可能。

那么人们是用什么方法做到的??

嗯,让我们从简单的开始...他们没有做到,他们成功地利用了漏洞或使用某个特定设备上的编程来实现此目的.. 不能一刀切

就我所看到和研究的这个主题而言,有通过使用adb或干扰编解码器内核等手段来实现。但是,我并没有深入研究这个问题,因为我理想地寻求的解决方案适用于所有设备,并且只受所使用的API限制。

为什么Android/Google/硬件要这样对我们???

嗯...你和我一样猜测,但人们可能认为这与可以利用的方式有关。有一个应用程序来掩盖你的声音,一个为你回答电话的粗暴应用程序等。尽管我自己可以看到许多不允许它的好理由,但真的希望它是被允许/可能的,因为任何技术都会让人们付出代价。

这的替代方法???

这是棘手的问题,如果你的核心需求是在通话中向另一方播放音频流,那么没有真正的替代方法...一些人会使用VoIP重定向和处理此问题或其他逻辑方法...

声音流式传输相关的应用程序有哪些?!?!

首先,下载一个应用程序并使用两部手机进行测试...声音是否真正与您的常规音频一起流式传输到它们,或者它是否只是出现微弱/中断或根本不在那里。

唯一真正已知适用于所有安卓设备的方法是使用扬声器..这也让我想知道为什么 Elias 因此被点踩,因为从技术上讲,这是唯一有效的方式,而不是人们简单地说“不可能”。

唯一真正使此功能正常运作的应用程序是针对特定设备的应用程序..他们将无法使用不知名品牌或通用的安卓设备。 阅读评论并自行了解

那么我们在此期间该怎么办 ...............希望这是可能的............


有没有任何关于如何使用adb的示例?例如,我的手机通过USB连接到Windows或Linux电脑,我想发送音乐或语音。这是否可以通过adb实现? - user924
我想编写一个应用程序,直接从手机本身发送传真,不需要额外的资源...看来这是不可能的。谢谢安卓! - Dan
什么是超级用户权限? - beppe9000
我不相信获取root权限会改变这一点,你需要修改一个Android发行版并使用它。Root访问只允许管理员权限,但核心仍然具有这种安全保护措施。 - Angry 84

23
注意:您只能将音频数据播放到标准输出设备上。目前,这是移动设备扬声器或蓝牙耳机。在通话期间无法播放对话音频中的声音文件。 来自官方文档

1
抱歉伙计 :/ 如果你真的需要这个功能,你可以自己制作一个安卓发行版并编写它。 - John Riselvato

18

在通话期间您可以将音频播放到扬声器上,此时麦克风会获取到这个音频。

但是显然,在手机开机的情况下无法播放音乐。

然而,如果您附近有一台电脑,可以从电脑声卡接口连接线路到麦克风插孔。我还没有尝试过,但我不认为这样做会有问题。


5
我已经点赞了这个回答,因为它在技术上是正确的。虽然没有软件方式...但这是唯一真正已知的方法...如果您不同意,请阅读我的答案并证明您的观点。 - Angry 84
2
你能举个例子吗? - Silvia H
1
如果需要从其他音频源寻找有线音频解决方案的示例,也许可以在电气工程SE上找到一些相关内容。 - qxotk

7
据我所记,这个问题已经在Android SDK邮件列表中讨论过了,答案是:没有办法在通话时向对方播放声音文件。

2
https://soundian.org/ 是如何工作的? - Konrad Morawski
问问他们吧。我猜想他们可能会从他们的系统中混入另一个调用。 - Michael Banzon

0

我认为这背后的根本原因是,20年前为了使智能手机通过监管审查,制造商将通话系统与计算系统隔离。很长一段时间里,在所有底层操作中,智能手机的计算机部分通过串行发送Hayes代码来建立呼叫。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接