将音频流式传输到Android电话

问题描述 投票:13回答:5

我试图通过Android上的电话发送音频流。

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

如果可能,请告诉我哪些类/功能处理此问题。

android audio phone-call
5个回答
16
投票

可以写入电话呼叫流,但不能从股票(非根)电话上的应用级别写入。

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

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

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

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

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

所以....你是如此激励,你可以获得手机Linux内核的源代码并修改编解码器/ ALSA驱动程序,以允许你改变设置呼叫音频路径时发生的事情。

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

最后,您需要修改Android源代码(框架)以扩展API以支持将音频注入到该流中。 (你需要为mediaserver制作大型mod,特别是audioflinger ...)

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


0
投票

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


0
投票

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


0
投票

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

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

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

由于我完全不熟悉使用SDK对Androids进行编码,请原谅这篇文章的初始编辑,我会更新,因为我/我们想出来了。


-3
投票

对不起,写入电话呼叫流是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.