2014-11-05 79 views
0

我正在使用CountDownTimer。我想在特定时间播放声音只是为了提供建议。那么这里是我的代码:CountDownTimer onTick

@Override 
     public void onTick(long l) { 


      if((TimeUnit.MILLISECONDS.toSeconds(l) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))) == 10){ 
       reproducirAviso(); 
      } 

      tiempo.setText(String.format("%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(l), 
        TimeUnit.MILLISECONDS.toSeconds(l) - 
          TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l)))); 

     } 

发生了什么事? “reproducirAviso()”方法被称为多次,声音播放起伏不定... 我能做些什么来解决这个问题? 非常感谢提前!

回答

0

如果您希望不再调用reproducirAviso(),请添加一个标志以检查是否已经运行了reproducirAviso()。

例如,某个地方设置一个静态布尔像

public static boolean reproducing = false; 

public void reproducirAviso() 
{ 
    // 
    // lots of your code 
    // 
    reproducing = false;  
} 

使你的代码变得

@Override 
public void onTick(long l) 
{ 
    if(!reproducing && (TimeUnit.MILLISECONDS.toSeconds(l) - 
      TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))) == 10){ 
     reproducirAviso(); 
    } 

    tiempo.setText(String.format("%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(l), 
      TimeUnit.MILLISECONDS.toSeconds(l) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l)))); 

} 
+0

的答案非常感谢,但我已经想到的,没有运气的解决方案! – oneme 2014-11-14 10:47:17

+0

好的。还有什么其他的解决方案来找你 – Willmore 2014-11-14 11:45:11

+0

首先我必须说我正在使用Genymotion,并且我发现有些声音播放不好。这就是我不能放弃你的选择的原因。我想尝试一下真实的设备,并检查问题是Genymotion。 – oneme 2014-11-14 21:06:20