【发布时间】: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());
问题在于,当任何其他应用开始使用麦克风时,我们会收到无声数据包。
Android 10(API 级别 29)及更高版本实施了一种优先方案,可以在应用运行时在应用之间切换输入音频流。在大多数情况下,如果新应用获取音频输入,之前捕获的应用会继续运行,但会收到静音。在某些情况下,系统可以继续向两个应用程序传送音频。下面解释了各种共享场景。
但我已经看到许多应用程序共享音频输入没有任何问题。例如Zoom,当正在进行缩放呼叫时,我启动了一个录音机,然后两个应用程序都会收到音频。(尽管缩放音频的强度会降低)。
另一个例子是Omlet Arcade,即使麦克风访问权限被授予其他应用程序,他们也能够录制麦克风音频。示例:假设我正在通过 Omlet Arcade 播放一些大逃杀游戏,那么我的队友(在游戏中)以及正在观看我视频流的人都可以听到我的音频。
因此,如果 stackoverflow 社区可以指导我找到解决方案,那将非常有帮助。
【问题讨论】:
标签: java android audio audio-streaming audiorecord