我有CountDownTimer
这样:
cuentaAtras = new CountDownTimer(mili, 1000) {
public void onTick(long millisUntilFinished) {
long seconds = millisUntilFinished / 1000;
if (seconds <= TIEMPO3){
if (tic1.isPlaying()){
tic1.stop();
tic2.start();
}
} else if (seconds <= TIEMPO && seconds > TIEMPO2 + 10){
tic1.start();
}
}
public void onFinish() {
if (tic2.isPlaying())
{
tic2.stop();
}
ticExp.start();
tic1.reset();
tic2.reset();
ticExp.reset();
}
}.start();
变量tic1
,tic2
y ticExp
类型为 MediaPlayer
:
tic1 = MediaPlayer.create(getApplicationContext(), R.raw.tic1);
tic1.setLooping(true);
tic2 = MediaPlayer.create(getApplicationContext(), R.raw.tic3);
tic2.setLooping(true);
ticExp = MediaPlayer.create(getApplicationContext(), R.raw.exp);
当我执行onFinish
方法时,应该播放MediaPlayer ticExp
,但这不会发生。
我在方法 ticExp.start()
中测试了写onTick
,这样可行,因此文件没有损坏或类似的东西。
我不知道为什么 onTick
方法有效,但在 onFinish
中没有。
(但onFinish
中的其他句子代码执行没有问题)
明确地说,我希望ticExp
方法能够播放onFinish
。
抱歉我的英文。感谢。
答案 0 :(得分:0)
ticExp.reset();
ticExp.start();
后onFinish()
正在ticExp.reset();
,这意味着您实际上正在启动并重置(使其闲置)。只需删除onFinish()
中的MediaPlayer
。
对于onTick
的完整状态,您可以refer this
还有一件事,datetime
方法中的其他条件永远不会执行。