我正在尝试开发具有音频输入可视化工具的应用程序。
我正在使用android.media.audiofx.Visualizer
类。
但无法初始化Visualizer对象。
这是我的代码:
private MediaPlayer mPlayer;
private byte[] mBytes;
private byte[] mFFTBytes;
private Visualizer mVisualizer;
mPlayer = MediaPlayer.create(this, R.raw.test);
mPlayer.setLooping(false);
mPlayer.start();
mVisualizer = new Visualizer(mPlayer.getAudioSessionId());
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
{
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate)
{
System.out.println("onWaveFormDataCapture");
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate)
{
System.out.println("onFftDataCapture");
}
};
mVisualizer.setDataCaptureListener(captureListener,
Visualizer.getMaxCaptureRate() / 2, true, false);
mVisualizer.setEnabled(true);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mediaPlayer)
{
mVisualizer.setEnabled(false);
}
});
请帮助我。
提前致谢。
答案 0 :(得分:0)
错误-4表示您已将错误值作为参数传递(http://developer.android.com/reference/android/media/audiofx/Visualizer.html#ERROR_BAD_VALUE)
你能检查Visualizer.getCaptureSizeRange()[1]
是否真的是2的幂?它应该是,但如果不是,你将把捕获大小范围设置为一个不是2的幂的数字,这会导致这个错误。
您能查看mPlayer.getAudioSessionId()
返回的内容吗?如果它是一个坏的值,例如如果mPlayer
的初始化尚未完全完成,则可能导致错误。