将录制的audio作为麦克风input

我必须写什么来发送一个录制的audio文件作为安卓编程的麦克风input?

例:

用户logging“hello world”。

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

Solutions Collecting From Web of "将录制的audio作为麦克风input"

一旦你有一个录制文件,你可以打开它作为一个InputStream,或任何其他方式。 但是如果你专门寻找诸如将audio注入正在运行的呼叫之类的东西 ,那么这是不可能的。 它是受保护的操作系统级别。

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

这可能会使您朝着正确的方向发展。

AudioManager.OnAudioFocusChangeListener通过使用这个你可以在下面的代码中获得audiomanager的状态“focusChange = AUDIOFOCUS_LOSS_TRANSIENT”(这个状态在后台播放音乐的时候会打来电话)这个状态完全是在开发者手里是播放还是暂停音乐。 根据您的要求,问您是否要在通话状态OFFHOOK STATE时播放​​音乐,而不要在OFFHOOK STATE中暂停播放音乐。并且只有当耳机被禁用时

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) } } }; 

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

正如打印机驱动程序根本不连接到打印机,而是写入PDF文件一样,也可以使用虚拟audio驱动程序,它们根本不连接到物理麦克风,而是可以从其他来源input文件,如文件或其他程序。

我希望我不会通过推荐免费软件来违反任何规则,但VBaudio虚拟电缆应该让您创build一对虚拟input和输出audio设备。 然后,您可以将MP3播放到虚拟输出设备,然后将虚拟input设备设置为“麦克风”。 理论上我认为应该起作用。

如果一切都失败了,你总是可以推出你自己的虚拟audio驱动程序。 Microsoft提供了一些示例代码,但不幸的是它不适用于较旧的Windows XPaudio模型。 XP也可能有示例代码。