【问题标题】:Stream audio to a phone call Android将音频流式传输到电话 Android
【发布时间】:2011-03-11 04:32:02
【问题描述】:

我正在尝试在 Android 上通过电话发送音频流。

例如,创建一个可以播放一些自定义保留音乐或接听电话并播放录音/音频文件的应用。我知道可以让应用自动接听电话,但它可以向来电者发送音频吗?

如果可能的话,请告诉我哪些类/函数可以处理这个问题。

【问题讨论】:

    标签: android audio phone-call


    【解决方案1】:

    可以写入电话流,但不能从普通(非root)手机上的应用程序级别写入。

    当发起电话呼叫时,麦克风“通常”(实际上取决于特定的电话)直接路由到基带,即完全跳过主处理器。

    对于传出音频:mic->codec->baseband 对于传入的音频:基带->编解码器->扬声器

    如果总是路由:mic->codec->mainprocessor->codec->baseband

    如果 Android API(框架)支持访问该流,则该流“可能”可用。

    我之所以说这是可能的,是因为音频(现在几乎所有智能手机)都是通过SlimBus 连接的,这允许动态更改音频路径。然而,它是通过位于ALSA 中的编解码器驱动程序在内核中完成的。

    所以....如果您有这么大的动力,您可以获取电话的 Linux 内核源代码并修改编解码器/ALSA 驱动程序,以允许您更改设置呼叫音频路径时发生的情况。

    当然,新路径会导致延迟,打破 AT&T 设置的呼叫/延迟标准(Audience 帮助他们编写...),并且基带芯片可能会拒绝您的音频,因为它不及时。

    最后,您需要修改 Android 源代码(框架)以扩展 API 以支持将音频注入该流。 (您需要对 mediaserver 进行大型 mods,尤其是 audioflinger...)

    这很复杂,但有你的答案。干杯,:-)

    【讨论】:

    • 能否给我们一些示例代码,我们如何在通话或参考链接中实现此流式传输?
    • @FerozSiddiqui 你有没有找到同样的例子?如果是的话,你能分享一下吗...
    • 不,还不是一个可行的解决方案
    【解决方案2】:

    这一定是可能的,因为手机将允许蓝牙将音频作为麦克风发送。

    由于我需要解决这个问题,我的一个想法是本质上向自己发送一个蓝牙信号作为麦克风输入“隐形”。

    另一个想法(如果很糟糕,请道歉)是将扬声器反转为麦克风。由于扬声器似乎可以访问所需的硬件,因此可能有一种方法可以通过这种方式注入音频数据流。

    由于我对使用 SDK 在 Android 上进行编码完全不熟悉,请原谅本文最初的拙劣之处,我会在我/我们弄清楚这一点时进行更新。

    【讨论】:

    • 没有时间,但注意到 Google 现在这样做了
    • 蓝牙的想法很有趣
    【解决方案3】:

    我知道apps 已经将all 系统音频发送到手机的earpiece,甚至是您在没有root 或任何其他特殊权限的情况下在媒体播放器中播放的歌曲。

    经过一番研究,我发现可以使用Audio Manager 类来完成。例如

     AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
     audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
     audioManager.setSpeakerphoneOn(false);
    

    为什么不将默认输出扬声器设置为设备听筒,然后使用MediaPlayer 类播放音频?

    【讨论】:

      【解决方案4】:

      捕获远程子混音音频需要 CAPTURE_AUDIO_OUTPUT 权限。此权限仅供系统组件使用,第三方应用程序不可用:(

      【讨论】:

        【解决方案5】:

        获取音频数据是非常可能的,但是将音频写入上行通道,这是不可能的

        【讨论】:

          【解决方案6】:

          无法写入电话流,抱歉。

          【讨论】:

          • 没有什么是不可能的。
          猜你喜欢
          • 2014-08-12
          • 2012-01-24
          • 1970-01-01
          • 2012-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-12
          • 1970-01-01
          相关资源
          最近更新 更多