我试图通过Android上的电话发送音频流。
例如,创建一个应用程序,可播放一些自定义的保持音乐,或接听电话并播放录音/音频文件。我知道可以让应用程序自动接听电话,但是它可以向呼叫者发送音频吗?
如果可能,请告诉我哪些类/功能处理此问题。
我试图通过Android上的电话发送音频流。
例如,创建一个应用程序,可播放一些自定义的保持音乐,或接听电话并播放录音/音频文件。我知道可以让应用程序自动接听电话,但是它可以向呼叫者发送音频吗?
如果可能,请告诉我哪些类/功能处理此问题。
写入电话呼叫流 IS 可能,但不是来自股票(非根)手机上的应用程序级别。
当启动电话呼叫时,麦克风“通常”(实际上取决于特定电话)直接路由到基带,即完全跳过主处理器。
对于输出音频:mic-> codec-> baseband 对于传入音频:基带 - >编解码器 - >扬声器
如果总是路由:mic-> codec-> mainprocessor-> codec-> baseband
然后,如果Android API(框架)支持访问它,则流“可能”可用。
我说这是可能的原因是因为音频(现在几乎所有的智能手机)通过连接 SLIM总线 这允许动态改变音频路径。然而,它是通过编解码器驱动程序在内核中完成的 ALSA。
所以....你是如此激励,你可以获得手机的Linux内核的源代码并修改编解码器/ ALSA驱动程序,以允许你改变设置呼叫音频路径时发生的事情。
当然,你会在新路径上产生延迟,打破AT&T设置的呼叫/延迟标准(Audience帮助他们编写......),基带芯片可能拒绝你的音频,因为它不及时。
最后,您需要修改Android源代码(框架)以扩展API以支持将音频注入到该流中。 (你需要为mediaserver制作大型mod,尤其是audioflinger ...)
这很复杂,但有你的答案。干杯,:-)
捕获远程子混音音频需要CAPTURE_AUDIO_OUTPUT权限。此权限保留供系统组件使用,不可用于第三方应用程序:(
要获得音频数据是非常可能的,但要将音频写入上游通道,这是不可能的
抱歉,写入电话呼叫流是不可能的。