将录制的音频作为麦克风输入

我必须写什么来以编程方式将录制的音频文件作为麦克风输入发送?

例:

用户记录“hello world”。

然后他可以在通话中播放录音。

一旦录制了文件,就可以将其作为InputStream或任何其他方式打开。 但如果您特意寻找将音频注入正在运行的呼叫之类的内容 ,那么这是不可能的。 它是受保护的操作系统级别。

除非您正在处理自定义ROM和修改后的内核。 这不是官方的

这可能会让您朝着正确的方向前进。

AudioManager.OnAudioFocusChangeListener通过使用这个你可以在下面的代码“focusChange = AUDIOFOCUS_LOSS_TRANSIENT”中获取audiomanager的状态(这种状态在后台播放音乐时调用任何来电)此状态完全在开发人员手中是否播放或暂停音乐。 根据您对问题的要求,您询问是否要在呼叫处于OFFHOOK状态时播放音乐时不要暂停在OFFHOOK状态播放音乐。这仅在耳机被禁用时才有可能

AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() { public void onAudioFocusChange(int focusChange) { if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT // Pause playback (during incoming call) } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { // Resume playback (incoming call ends) } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { am.unregisterMediaButtonEventReceiver(RemoteControlReceiver); am.abandonAudioFocus(afChangeListener); // Stop playback (when any other app playing music in that situation current app stop the audio) } } }; 

使用音频驱动程序的概念(这适用于Windows,但它可能适用于Android)

正如有些打印机驱动程序根本不连接到打印机而是写入PDF文件一样,类似地,有可用的虚拟音频驱动程序根本不能连接到物理麦克风,而是可以管理来自其他来源(如文件)的输入或其他程序。

我希望我不会通过推荐免费软件来破坏任何规则,但VB-Audio Virtual Cable应该让你创建一对虚拟输入和输出音频设备。 然后,您可以将MP3播放到虚拟输出设备中,然后将虚拟输入设备设置为“麦克风”。 从理论上讲,我认为这应该有效。

如果所有其他方法都失败了,您可以随时滚动自己的虚拟音频驱动 Microsoft提供了一些示例代码,但不幸的是它不适用于较旧的Windows XP音频模型。 XP中也可能有示例代码。