1

トーンジェネレーターが再生を停止したことを知るためにひざまずきました。

dtmf トーンを 50 ミリ秒再生してから、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

Thread.sleep() の代わりに、ToneGeneratorのメソッドwait(long millis)を使用する必要があります。
このメソッドは音が止まるのを待たないので注意してください。したがって、ビープ音の長さを考慮する必要があります。

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

また、2 つのビープ音の間に 50 ミリ秒待機する必要があるかどうかもわかりません。そうでない場合は、「+ WAITING_DURATION」を削除してください

于 2013-03-04T18:10:29.030 に答える