我跪下来知道我的音调发生器何时停止播放。
我想播放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();
}
在音调停止播放之前,睡眠开始。 如何检查音调是否已停止播放? 或者有更好的方法来做到这一点吗?
请求帮助。
答案 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”
即可