【问题标题】:How to get mic data when other apps are using Mic?其他应用使用 Mic 时如何获取 mic 数据?
【发布时间】:2020-12-30 17:14:09
【问题描述】:

android中多个应用之间的麦克风音频输入共享

我在处理当前应用时遇到了这个问题,我想同时在两个(可以是多个)应用之间共享麦克风音频。

我尝试通过AudioRecord 类录制音频数据

audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC
, 44100, AudioFormat.CHANNEL_IN_STEREO
, AudioFormat.ENCODING_PCM_16BIT
,pcmBufferSize);
//for reading data 
private ByteBuffer buffer = ByteBuffer.allocateDirect(BUFFER_SIZE); //define at class level
.
.
.
buffer.rewind();
audioRecord.read(buffer, buffer.remaining());

问题在于,当任何其他应用开始使用麦克风时,我们会收到无声数据包。

根据official documentation

Android 10(API 级别 29)及更高版本实施了一种优先方案,可以在应用运行时在应用之间切换输入音频流。在大多数情况下,如果新应用获取音频输入,之前捕获的应用会继续运行,但会收到静音。在某些情况下,系统可以继续向两个应用程序传送音频。下面解释了各种共享场景。

但我已经看到许多应用程序共享音频输入没有任何问题。例如Zoom,当正在进行缩放呼叫时,我启动了一个录音机,然后两个应用程序都会收到音频。(尽管缩放音频的强度会降低)。

另一个例子是Omlet Arcade,即使麦克风访问权限被授予其他应用程序,他们也能够录制麦克风音频。示例:假设我正在通过 Omlet Arcade 播放一些大逃杀游戏,那么我的队友(在游戏中)以及正在观看我视频流的人都可以听到我的音频。

因此,如果 stackoverflow 社区可以指导我找到解决方案,那将非常有帮助。

【问题讨论】:

    标签: java android audio audio-streaming audiorecord


    【解决方案1】:

    不确定您是否看过您引用的文档的下方部分,但它在下一节中说明了为什么某些应用可以共享音频输入:

    有四种主要的[分享]场景:

    • 助手+普通应用
    • 无障碍服务+普通应用
    • 两个普通应用
    • 语音通话+普通APP

    语音通话+普通应用:
    如果AudioManager.getMode() 返回的音频模式为 MODE_IN_CALL 或 MODE_IN_COMMUNICATION,则语音通话处于活动状态。
    Android 根据以下规则共享输入音频:

    • 通话始终接收音频。
    • 如果该应用是具有 CAPTURE_AUDIO_OUTPUT 权限的特权(预安装)应用,则该应用可以捕获语音通话。
    • 如果应用是无障碍服务,则该应用可以捕获音频。

    要捕获语音呼叫的上行链路 (TX)、下行链路 (RX) 或两者,应用程序必须指定音频源 MediaRecorder.AudioSource.VOICE_UPLINKMediaRecorder.AudioSource.VOICE_DOWNLINK,和/或设备 AudioDeviceInfo.TYPE_TELEPHONY

    再往下,它指定了如何在 Android 11 中为录制的音频设置隐私敏感度级别,例如将其设置为“不敏感”允许与其他应用程序共享音频。希望这有助于了解从哪里开始

    【讨论】:

    • 我和@tkhurana96 来自同一个团队,我们不是在寻找通话记录器/语音通话特定的情况,而是寻找两个特定的普通应用程序。目前,如果您使用 Omlet Arcade(应用程序 1)进行流式传输并启动 PubG(应用程序 2),并且您在 PubG 中打开麦克风,然后说一些话,那么 PubG 和 Omlet Arcade 都会收到该音频(您的队友可以听到您的声音)在 PubG 中,您的流媒体可以在 youtube 上的流中或您使用 Omlet Arcade 流式传输到的任何平台上听到您的声音)。如何实现这个功能。
    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 2012-04-04
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多