1

我跪下知道我的音源何时停止播放。

我想播放 dtmf 音 50 ms,然后等待 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();

}

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

感谢您的帮助。

4

1 回答 1

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);
    }
...

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

于 2013-03-04T18:10:29.030 回答