窃听(集中)音频流android

Posted

技术标签:

【中文标题】窃听(集中)音频流android【英文标题】:eavesdrop on (focussed) audio stream android 【发布时间】:2014-01-29 15:55:07 【问题描述】:

尽管我在 developer.android.com 和 *** 上阅读了所有内容,但我无法弄清楚如何做到这一点,尽管我真的认为这应该是可能的。

我正在尝试使用 OpenGL ES 2.0 制作一个通用的“可视化器”风格的应用程序。我希望能够窃听当前具有焦点的任何音频流,以便我可以响应音乐。该设备应该能够播放他们想要的任何应用程序中的音乐,然后打开我的应用程序并让它响应。

到目前为止,我已经找到了很多方法来播放、录制、流式传输等来自已知来源的音频。但是,我无法弄清楚如何窃听设备。在 Mac 上,这就像在硬件端插入音频单元一样简单。 android中是否有类似的东西?还是沙盒可以完全防止这种情况发生?

【问题讨论】:

Android 提供了一个Visualizer 类,可以从特定的音频会话中抓取(低质量版本的)音频;如果您指定 0 作为会话 ID,它将使用 OUTPUT_MIX 会话(全局音频输出)。但请注意,这样做并不能保证适用于 Android 版本和媒体应用的所有组合。 谢谢,迈克尔。我确实看到了,我也玩过一些。我只是希望从音频流中获得比 Visualizer 提供的更详细的信息。 【参考方案1】:

这是看待这个问题的另一种方式。假设操作系统允许您这样做。假设有一个 API 可以让你做

Audio.doEavesDrop(EavesDrop callback)

现在,想象一下一些负面后果可能是什么:

挂起音频流。该回调有时具有返回控制权,如果由于某种原因没有返回控制权怎么办?音频流会发生什么?

恶意窃听:您的雇主或敲诈者,或其他想要侵犯您隐私的人使用它来捕捉您手机输出的每一个声音

如果您正在设计平台,您将如何防范这些问题(这些只是我在几分钟内能想到的问题)。

你认为这应该是可能的吗?也许不是,并且有充分的理由。

【讨论】:

我不是系统架构专家,只是一个简单的爱好者应用程序编码员。我的问题不在于它是否应该可行,而在于它是否可行。我无法从你的回答中看出你是想轻率还是乐于助人。我推断您对我提出的问题的回答是:“不,这是不可能的。”对吗? 对不起,我不想轻率。我还假设你也是一个业余爱好者,所以我想尝试就在这样的平台上工作给出一些看法。重要的是要意识到任何操作系统都存在很多问题,而且我们的应用程序并不是唯一的问题。话虽如此,我怀疑这是可能的,这可能是有充分理由的。虽然 android 是开源的,但我相信你可以找到一个允许这样做的 ROM。 在这种情况下,谢谢!我将停止浪费时间尝试这样做并找出不同的方式(可能通过实现我自己的媒体播放器)。

以上是关于窃听(集中)音频流android的主要内容,如果未能解决你的问题,请参考以下文章

Spring Integration 窃听直接 MessageChannel 进行测试

存储来自自定义工作集的 Web 音频处理数据以转换为 wav 文件

直播文档汇总

直播文档汇总

OpenHarmony音频流管理开发

Android 高性能音频Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )(代码片