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中其他几句代码执行没有问题)

毫无疑问,我希望 ticExponFinish 方式播放。

对不起我的英语。谢谢。

您在 onFinish() 中的 ticExp.start(); 之后正在执行 ticExp.reset();,这意味着您实际上正在启动并且也在重置(使其空闲)。只需删除 onFinish().

中的 ticExp.reset();

对于 MediaPlayer 的完整状态,您可以 refer this

还有一件事,onTick 方法中的 else 条件永远不会执行。