我应该写些什么来以编程方式将录制的音频文件发送为安卓麦克风输入?
示例:
用户录制“你好,世界”。
然后他可以在通话中播放录音。
我应该写些什么来以编程方式将录制的音频文件发送为安卓麦克风输入?
示例:
用户录制“你好,世界”。
然后他可以在通话中播放录音。
一旦您有了一个录制的文件,您可以将其作为InputStream或以任何其他方式打开。但是,如果您特别寻找像将音频注入正在运行的通话中这样的功能,那么这是不可能的。这是受到操作系统保护的。
除非您处理自定义ROM和修改过的内核,这并不是官方支持的。
这可能会帮助您找到正确的方向。
使用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)
}
}
};