【发布时间】: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