Android,在指定的时间段内重复动作
问题描述:
从加速度计值和设备平坦时,我有以下“条件”,连续播放嘟嘟声。我无法弄清楚如何在指定的时间段内(例如:5秒)将此声音设置为重复。我尝试了很多方法,并始终保持声音始终播放或不遵循if条件。如果有人可以帮助我..提前感谢您..Android,在指定的时间段内重复动作
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();
}
}
答
为什么不在媒体播放器中播放新的异步任务在后台?创建您自己的异步任务实现,然后在其构造函数中传递一个时间值,然后在那里启动mediaplayer并继续检查它,以查看流逝的持续时间是否等于传递给它的值。我想,这可能帮助 - >
http://developer.android.com/reference/android/os/AsyncTask.html
答
您可以使用重复报警。
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);
那么你应该包括意图处理类(AlarmHandler.class在上面的代码)这样的方法中代码:
@Override
protected void onHandleIntent(Intent arg0) {
// your code here
}