我必须写什么才能以编程方式将录制的音频文件作为麦克风输入发送?
示例:
用户记录" hello world"。
然后他可以在通话中播放录音。
答案 0 :(得分:7)
一旦录制了文件,就可以将其作为InputStream或任何其他方式打开。 但如果您特意寻找将音频注入正在进行的通话之类的话,那么这是不可能的。它是受保护的操作系统级别。
除非您正在处理自定义ROM和修改后的内核。这不是官方的
答案 1 :(得分:0)
这可能会让你朝着正确的方向前进。
AudioManager.OnAudioFocusChangeListener使用此功能,您可以在下面的代码中获取audiomanager的状态" focusChange = AUDIOFOCUS_LOSS_TRANSIENT"(此状态调用音乐在后台播放任何来电时)此状态完全在开发人员手中是否播放或暂停音乐。根据您对问题的要求,您询问是否要在呼叫处于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中也可能有示例代码。