2013-02-07 59 views
1

我跪了下來,知道我的音源發生器何時停止播放。如何知道tonegenerator什麼時候停止播放

我想播放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(); 

} 

睡眠在音調停止播放之前開始。 我如何檢查音色已停止播放? 或者有更好的方法來做到這一點?

Thx尋求幫助。

回答

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」

相關問題