android音频可视化

时间:2012-09-03 11:55:37

标签: android

我正在尝试开发具有音频输入可视化工具的应用程序。

我正在使用android.media.audiofx.Visualizer类。

但无法初始化Visualizer对象。

参考:https://github.com/felixpalmer/android-visualizer/blob/master/src/com/pheelicks/visualizer/VisualizerView.java

这是我的代码:

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

请帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

错误-4表示您已将错误值作为参数传递(http://developer.android.com/reference/android/media/audiofx/Visualizer.html#ERROR_BAD_VALUE)

  1. 你能检查Visualizer.getCaptureSizeRange()[1]是否真的是2的幂?它应该是,但如果不是,你将把捕获大小范围设置为一个不是2的幂的数字,这会导致这个错误。

  2. 您能查看mPlayer.getAudioSessionId()返回的内容吗?如果它是一个坏的值,例如如果mPlayer的初始化尚未完全完成,则可能导致错误。