Android MediaPlayer的状态错误

时间:2014-01-06 07:10:43

标签: android android-mediaplayer

我是Android编程的新手,我正在构建一个简单的应用程序,当您翻转手机时,使用SensorListener加速度计从本地文件播放声音。此外,还有一个带有咔嗒声监听器的图像,触摸时也会播放相同的声音。

我的代码有以下顺序:

onCreateonRestart - 为本地文件调用MediaPlayer.create()

onDestroy - 调用MediaPlayer.release并将引用设置为null。

我正在手机上调试应用程序,因为模拟器不支持加速度计。 当我点击图片时,我在Logcat中收到start called in state 64错误,当我翻转手机时,调用NullPointerException的{​​{1}}的应用FC会被调用。

我对MediaPlayer文档中的工作原理的理解是,您必须致电mp.start(),然后在启动或停止播放器之前调用create()。步骤顺序是否有问题?

我也尝试在prepare()发布媒体播放器,但无济于事。

我有加速度计的以下传感器监听器(mp是onStop对象) -

MediaPlayer

..以及按钮的以下点击监听器 -

    private final SensorEventListener accelerometerListener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent arg0) {

        float z_value = arg0.values[2];

        if (z_value < 0 && playerReady) {
            mp.start(); //  <-- NullPointerException thrown here.
        } else {
            mp.stop();
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
};

我还为媒体播放器写了一个 private final View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { if (playerReady) { mp.start(); } } }; (设置上面看到的onPreparedListener

playerReady

修改以下是 private final OnPreparedListener opl = new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { playerReady = true; } }; onCreate() -

onRestart()

0 个答案:

没有答案