如何知道发声器何时停止播放

时间:2013-02-07 14:41:43

标签: android thread-sleep tone-generator

我跪下来知道我的音调发生器何时停止播放。

我想播放50毫秒的dtmf音,然后等待50播放下一个音。 我想使用这段代码。

private void playtones() {
    new Thread(new Runnable() {
        public void run() {
            for(int i=0 ; i<=19 ; i++){
                dtmftone.startTone(savetone.get(i) , 50);
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }   
            }
            }

        }
      ).start();

}

在音调停止播放之前,睡眠开始。 如何检查音调是否已停止播放? 或者有更好的方法来做到这一点吗?

请求帮助。

1 个答案:

答案 0 :(得分:1)

您应该使用ToneGenerator的方法wait(long millis)而不是Thread.sleep() 小心,该方法不会等待声音停止,因此您必须考虑到哔哔声的持续时间:

int BEEP_DURATION = 50;
int WAITING_DURATION = 50;

...

for (int i = 0; i <= 19; i++) {
    dtmftone.startTone(savetone.get(i), BEEP_DURATION);
    synchronized(dtmftone) {
        dtmftone.wait(BEEP_DURATION + WAITING_DURATION);
    }
...

而且我不确定你是否想在两次哔哔声之间等待50ms。如果不这样做,只需删除“+ WAITING_DURATION”

即可