VisualizerView可以通过链接的方式与文件一起工作,但对于MediaRecorder不是这样。MediaRecorder的getMaxAmplitude()函数只返回最高值,但我需要获得每个频率的字节数组。有没有办法做到这一点?
VisualizerView可以通过链接的方式与文件一起工作,但对于MediaRecorder不是这样。MediaRecorder的getMaxAmplitude()函数只返回最高值,但我需要获得每个频率的字节数组。有没有办法做到这一点?
最终我找到了一个解决方案,而且这并不难。有一种方法可以实时捕获FFT数据。以下是我的示例代码,
recordingThread = new VisualizerAudioRecordingThread(fileName, new VisualizerAudioRecordingHandler() {
//pass file name where to store the recorded audio
@Override
public void onFftDataCapture(final byte[] bytes) {
onActivity.runOnUiThread(new Runnable() {
public void run() {
if (Dialog.mVisualizerView != null) {
Dialog.mVisualizerView.updateVisualizerFFT(bytes); //update VisualizerView with new audio portion
}
}
});
}
@Override
public void onRecordSuccess() {
}
@Override
public void onRecordingError() {}
@Override
public void onRecordSaveError() {}
});
recordingThread.start();
}
VisualizerView连接的是MediaPlayer,而不是MediaRecorder。
您无法通过MediaRecorder实时访问AudioEncoder中发生的情况,只能接收可能发生的任何错误...
也许如果将音频保存到文件中,然后再进行处理,可以解决您的问题?
http://developer.android.com/guide/topics/media/audio-capture.html