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

时间:2013-04-09 12:03:58

标签: android repeat audio

我从加速度计值得到以下“if condition”,当设备持平时,连续播放哔声。我无法弄清楚如何在指定的时间段内使声音重复(例如: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();
  }
}

2 个答案:

答案 0 :(得分:0)

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

http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

您可以使用重复闹铃。

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
}