嗨,这里是一个code...the的想法是,它运行20秒,然后在5秒前0,它播放一个声音,然后在倒计时播放next...but,它只是播放结束,并跳过5秒标记…我已经尝试玩它,但不能让它工作。
有什么想法吗?
//Counter 2
final CountDownTimer counter2 = new CountDownTimer(20000 , 1000) {
public void onTick(long millisUntilFinished) {
mCounter2TextField.setText(" " + formatTime(millisUntilFinished));
long timeLeft = millisUntilFinished / 1000;
if (timeLeft == 5000)
playAlertSound(R.drawable.sound1);
}
public void onFinish() {
start();
playSound();
}
public void playSound() {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), (R.drawable.sound2));
mp.start();
}
};发布于 2012-02-17 03:57:09
因为你的:
playSound(...);和你的计时器在同一个“线程”里。你应该做一些像这样的事情:
if (timeLeft == 5000)
new Runnable(){
void Run(){
playAlertSound(R.drawable.sound1);
}
public void playSound() {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), (R.drawable.sound2));
mp.start();
}
}.run();或者类似的东西:D
因为你不能在降低计时器的同时播放声音!:)
发布于 2012-02-17 03:56:39
您在timeLeft中将millisUntilFinished转换为秒,然后告诉它只在还剩5000秒(而不是毫秒)时才播放。
在进行修改以修复此问题时,还应将比较结果更改为timeLeft <= 5,以便在还剩4999毫秒的情况下调用onTick时开始播放。当然,如果声音已经开始播放,您需要添加逻辑来不播放该声音。
https://stackoverflow.com/questions/9318103
复制相似问题