从定时器启动 MediaPlayer
Starting MediaPlayer from Timer
我正在开发电池警报应用程序。我想使用 media-player 每隔一分钟使用 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();
}
我想每分钟播放两次音乐,但它只播放一次
我猜是因为您正在执行仅调用一次的 onCreate 方法。也许您可以在某些后台服务中创建它并每分钟调用一次
第一次成功是因为你的 repeatMin
仍然是它的第一个值,但是在你没有在你的代码中再次将它设置为 0 之后
repeatMin = first int value; // you have to reinitialize your repeatMin somewhere when the sound
has been played for the second time
我正在开发电池警报应用程序。我想使用 media-player 每隔一分钟使用 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();
}
我想每分钟播放两次音乐,但它只播放一次
我猜是因为您正在执行仅调用一次的 onCreate 方法。也许您可以在某些后台服务中创建它并每分钟调用一次
第一次成功是因为你的 repeatMin
仍然是它的第一个值,但是在你没有在你的代码中再次将它设置为 0 之后
repeatMin = first int value; // you have to reinitialize your repeatMin somewhere when the sound
has been played for the second time