Android,在指定的时间段内重复操作

Android,在指定的时间段内重复操作,android,repeat,audio,Android,Repeat,Audio,我有以下“如果条件”从加速度计的值,当设备是平的一个嘟嘟声正在不断播放。我不知道如何在指定的时间段(例如:5秒)内使此声音重复。我尝试了很多方法,但一直都在播放声音,或者不符合if条件。如果有人能帮我的话先谢谢你 if (x > -0.1 && x < 0.1 && y > -0.1 && y < 0.1) { try { AssetFileDescriptor afd = getAssets().openFd(

我有以下“如果条件”从加速度计的值,当设备是平的一个嘟嘟声正在不断播放。我不知道如何在指定的时间段(例如:5秒)内使此声音重复。我尝试了很多方法,但一直都在播放声音,或者不符合if条件。如果有人能帮我的话先谢谢你

if (x > -0.1 && x < 0.1 && y > -0.1 && y < 0.1) {
  try {
    AssetFileDescriptor afd = getAssets().openFd("beep.wav");
    mMediaplayer = new MediaPlayer();
    mMediaplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
    afd.close();
    mMediaplayer.prepare();
    mMediaplayer.start();
    mMediaplayer.setOnCompletionListener(new OnCompletionListener() {
      public void onCompletion(MediaPlayer mp) {
        //mp.setLooping(false);
        mp.stop();
        mp.release();
      }
    });
  } catch (Exception e) {
    e.printStackTrace();
  }
}
if(x>-0.1&&x<0.1&&y>-0.1&&y<0.1){
试一试{
AssetFileDescriptor afd=getAssets().openFd(“beep.wav”);
mMediaplayer=新媒体播放器();
mmediplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
afd.close();
mmediplayer.prepare();
mmediplayer.start();
mmediplayer.setOnCompletionListener(新的OnCompletionListener(){
完成时的公共作废(MediaPlayer mp){
//mp.设置循环(错误);
mp.stop();
mp.release();
}
});
}捕获(例外e){
e、 printStackTrace();
}
}

为什么不在后台新的异步任务中播放媒体播放器?创建您自己的异步任务实现,然后在其构造函数中传递一个时间值,然后在那里启动mediaplayer,并继续检查它,以查看所用的持续时间是否等于传递给它的值。我想这可能会有帮助-->


您可以使用重复报警

int secondsInterval = 5; // 5 seconds for example
long interval = secondsInterval * 1000;
long firstTime = Calendar.getInstance().getTimeInMillis();

Intent i = new Intent(ctx, AlarmHandler.class);
PendingIntent mAlarmSender = PendingIntent.getService(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) ctx.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, interval, mAlarmSender);
然后,您应该将代码包含在类似以下方法的Intent处理程序类(上述代码中的AlarmHandler.class)中:

@Override
protected void onHandleIntent(Intent arg0) {
    // your code here
}