我正在开发电池警报应用程序。并且我想使用 Timer 每隔一分钟使用媒体播放器播放音乐,并且还想在一分钟内重复播放2次音乐。
当 Timer调用 * 8playAlarm()方法**时,此方法第一次正常工作,但是在一分钟后,当 Timer 再次调用 playAlarm()时,此方法正常方法,它只能播放一次音乐。
@Override
public void onCreate() {
super.onCreate();
mStartTime=preferencesAlert.getInt("alert",0); // 0 == immediately
mInterval=preferencesInterval.getInt("interval",1); // 1==1 minute
mSongUri=preferencesSongUri.getString("uri","android.resource://"+getPackageName()+"/raw/celesta");
timer = new Timer();
TimerTask hourlyTask = new TimerTask() {
@Override
public void run () {
playAlarm();
}
};
// schedule the task to run starting now and then every time interval...
timer.schedule (hourlyTask,60000*mStartTime, 60000*mInterval);
}
playAlarm()方法
private void playAlarm(){
playerAlarm=MediaPlayer.create(getApplicationContext(),Uri.parse(mSongUri));
playerAlarm.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
repeatMax=preferencesRepeat.getInt("repeat",2);
if(repeatMin<=repeatMax){
repeatMin++;
if(playerAlarm!=null && !playerAlarm.isPlaying()) {
mp.seekTo(0);
mp.start();
}
}else {
mp.reset();
mp.release();
}
}
});
playerAlarm.start();
}
我想每分钟播放两次音乐,但只能播放一次
答案 0 :(得分:1)
第一次工作是因为您的repeatMin
仍然是它的第一个值,但是在代码中您没有再次将其设置为0之后
repeatMin = first int value; // you have to reinitialize your repeatMin somewhere when the sound
has been played for the second time
答案 1 :(得分:0)
我猜是因为您正在onCreate中执行仅调用一次的方法。也许您可以在某些后台服务中进行设置,并每分钟调用一次