【问题标题】:Force android media player to complete playback before start again强制 android 媒体播放器在重新开始之前完成播放
【发布时间】:2016-09-22 20:03:35
【问题描述】:

我正在制作一个使用加速度计的应用程序,当它检测到抖动运动时,它会播放原始文件夹中的声音。我的问题是,如果声音没有完成并且我检测到新的震动动作,它将再次触发声音,而前一个声音将被取消。我希望在播放新的声音文件之前完成之前的声音文件。我怎样才能做到这一点?应该在传感器还是游戏课中完成? 这是一个接受一个resid然后启动媒体播放器的类。

public void Play(final int resid) {

    Log.d(TAG, "i Play(med resid)");
    if (mp != null && mp.isPlaying()) { //ta bort isplaying
        Log.v(TAG, "Reset");
        mp.reset();
        Log.v(TAG, "Release");
        mp.release();
    }
    if (resid == 0) {
        Toast.makeText(this, "Choose an instrument", Toast.LENGTH_SHORT).show();

    } else {

        Log.d(TAG,"Now playing!");
        mp = MediaPlayer.create(getApplicationContext(), resid);
        mp.start();
        int duration = mp.getDuration();
        Log.v(TAG, "Length: " + duration);
    }

}

这是传感器之一

  public void TiltingSensor(SensorEvent event, int resid) {
    Sensor mSensor = event.sensor;
    if (mSensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        float x_axis = event.values[0];
        float y_axis = event.values[1];

        if ((x_axis < 9.80 && x_axis > 0.50) && (y_axis > -9 && y_axis < 0 )){
            //Log.d("Angles", Float.toString(x_axis) + "   Y:  " + Float.toString(y_axis));
            Play(resid);
        }
    }
}

【问题讨论】:

    标签: java android android-mediaplayer android-sensors


    【解决方案1】:

    是你重启播放器:

    if (mp != null && mp.isPlaying()) { //ta bort isplaying
        Log.v(TAG, "Reset");
        mp.reset();
        Log.v(TAG, "Release");
        mp.release();
    }
    

    尝试将代码更改为:

    if (mp != null && mp.isPlaying()) {
        Log.v(TAG, "Already playing");
        return;
    } else if (mp != null) { // it's better to release player
        Log.v(TAG, "Release");
        mp.release();
    }
    

    【讨论】:

      【解决方案2】:

      如果您想在第一次播放时检测到运动时第二次开始播放音乐,那么如果媒体播放器为 isPlaying() 返回 true,则在返回之前使用 Play() 中的增量引用计数。 然后在 oncompletionListener() 中,减少引用计数并发布消息以再次调用 Play()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多