我一直试图让我的应用程序录制来自麦克风的声音,然后(近似)实时播放,但是没有成功.
我分别使用AudioRecord和AudioTrack类进行录制和播放.我尝试了不同的方法,我试图记录传入的声音并将其写入文件,它工作正常.我也尝试使用AudioTrack播放该文件后的声音,它也可以正常工作.问题是当我尝试实时播放声音时,而不是在写完后读取文件.
这是代码:
//variables
private int audioSource = MediaRecorder.AudioSource.MIC;
private int samplingRate = 44100; /* in Hz*/
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
private int bufferSize = AudioRecord.getMinBufferSize(samplingRate, channelConfig, audioFormat);
private int sampleNumBits = 16;
private int numChannels = 1;
// …
AudioRecord recorder = new AudioRecord(audioSource, samplingRate, channelConfig, audioFormat, bufferSize);
recorder.startRecording();
isRecording = true;
AudioTrack audioPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);
if(audioPlayer.getPlayState() != AudioTrack.PLAYSTATE_PLAYING)
audioPlayer.play();
//capture data and record to file
int …Run Code Online (Sandbox Code Playgroud)