2

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

我正在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);
        }
    });

请帮我解决一下这个。

提前致谢。

4

1 回答 1

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尚未完全完成,则可能导致错误。

于 2012-09-03T12:52:25.470 回答