【问题标题】:Call Audio Stream Modification in Android 4.0 ICSAndroid 4.0 ICS中调用音频流修改
【发布时间】:2012-05-19 16:11:07
【问题描述】:

我一直在从事一个可以极大地受益于呼叫流修改的项目。这已被反复提及/假设是无法实现的,因为大多数人认为通话中音频的硬件循环与设备的主 MCU 完全断开。

Stream audio to a phone call Android 之类的问题已收到表明无法访问音频的答案。我同意这从 Android API 绝对是不可能的,但完全不清楚硬件是否完全断开连接。

stackoverflow 用户“artsylar”表示,他们能够修改 Android 操作系统的“框架层”,将录制的音频注入到调用流中,这将是一个巨大的进步(参见 Play an audio clip onto an ongoing call,artsylar 对所选内容的评论)回答)。假设artsylar的成功是有效的,那么肯定有办法通过修改框架来控制通话流音频(我假设Android源码中的电话基础框架)。

基本上,我完全同意从应用程序层修改或控制呼叫流是不可能的。但是,我有兴趣在框架或无线电接口层中自定义 Android 操作系统; artsylar 似乎取得了成功,但公开文献中没有解释如何取得成功。鉴于 Android 技术的当前状态,任何人都可以澄清上述内容,以实际确定是否可以通过修改核心 Android 操作系统来控制通话音频,以及实现这一目标的良好途径?

我相信对这个问题的最终澄清对开源社区来说非常有价值。

谢谢!

【问题讨论】:

  • 您是否设法修改了呼叫流?
  • 您的研究现状如何?

标签: android audio native phone-call


【解决方案1】:

这样做非常困难,因为它涉及到在 Android 操作系统中处理 Linux 内核。

不仅没有API支持,而且安全问题也不允许这样做。

作为软件工程领域的专业人士,尤其是程序员,我们 在项目被测试之前,永远不要假设任何人的发明成功并且相关项目是有效的。

在通话期间流式传输音频也可能引发智能手机用户和电话服务提供商之间的隐私和安全问题

【讨论】:

  • Linux 内核?不。硬件支持也很重要,因为手机使用(麦克风 -> 基带处理器,麦克风 -> 操作系统)双链,而不是(麦克风 -> 操作系统 -> 基带,正如预期的那样)..
  • @kagali-san 如果你说它就像“麦克风 -> 基带处理器”,那么蓝牙耳机是如何工作的?所以我不认为你是对的,它更像是“mic -> OS -> baseband”。
  • @André,它的文档很少,但没有 - 蓝牙传输也可以通过片上传输工作。您可以谷歌一堆中国 MT6575、MT6589 和相应的无线电芯片 MT6627、MT6627 的数据表和框图/图表 - 我怀疑芯片之间的 MRGPCM 通道是音频传输路径。还有一种叫做 DAIBT 的东西,中国人在某些方案中使用它来指定声音处理部分。更要说的是,有些手机甚至没有镜像在通话中发送到基带的麦克风音频。
  • @André 蓝牙/RF 处理器中的 PCM 音频不会显示在 HCI/应用程序堆栈中,因为它是在芯片内处理的,以满足电源效率和低延迟要求。使用Bluegiga的WT11x等蓝牙原型模块,可以发现芯片内置了一个PCM处理单元;不需要在它之外进行复杂的处理。
  • @André 我个人很高兴知道有一种方法可以捕获非镜像音频流并对其进行修改:(
【解决方案2】:

在某些平台(例如,高通的 MSM8960 和 APQ8064)上,将音频注入语音呼叫上行链路在技术上是可行的。支持存在于硬件级别和设备驱动程序级别。但要使该功能可用于普通应用程序,您必须创建一个自定义 Android ROM,在其中您已在 Java 层和 Android 的本机层中添加了所有必要的用户空间部分。

所以简短的回答是:不,作为应用程序开发人员没有标准的方法(无论您使用 SDK 还是 NDK)。
如果您为 OEM 工作或通过其他方式能够构建和刷新自己的 Android ROM,您可能可以通过询问您的平台供应商获得所需的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2013-04-08
    • 2018-06-07
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多