CountDownTimer 完成后 MediaPlayer 不启动
MediaPlayer doesn't start when CountDownTimer is finished
我有一个 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
应该播放,但没有出现。
我在方法 onTick
中测试了写 ticExp.start()
并且这有效,所以文件没有损坏或类似的东西。
我不知道为什么 onTick
方法有效,但在 onFinish
中不行。
(但是onFinish
中其他几句代码执行没有问题)
毫无疑问,我希望 ticExp
以 onFinish
方式播放。
对不起我的英语。谢谢。
您在 onFinish()
中的 ticExp.start();
之后正在执行 ticExp.reset();
,这意味着您实际上正在启动并且也在重置(使其空闲)。只需删除 onFinish()
.
中的 ticExp.reset();
对于 MediaPlayer
的完整状态,您可以 refer this
还有一件事,onTick
方法中的 else 条件永远不会执行。
我有一个 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
应该播放,但没有出现。
我在方法 onTick
中测试了写 ticExp.start()
并且这有效,所以文件没有损坏或类似的东西。
我不知道为什么 onTick
方法有效,但在 onFinish
中不行。
(但是onFinish
中其他几句代码执行没有问题)
毫无疑问,我希望 ticExp
以 onFinish
方式播放。
对不起我的英语。谢谢。
您在 onFinish()
中的 ticExp.start();
之后正在执行 ticExp.reset();
,这意味着您实际上正在启动并且也在重置(使其空闲)。只需删除 onFinish()
.
ticExp.reset();
对于 MediaPlayer
的完整状态,您可以 refer this
还有一件事,onTick
方法中的 else 条件永远不会执行。