2016-08-02 14 views
0

単純なアプリケーションを作成しようとすると、各ミリ秒ごとにビープ音が鳴ります。 Xを増減させる2つのボタンがあります(++はX、アップは-Xを行います)ビープ音が表示されたときに制御できません

サウンドの繰り返しの時間を設定しようとすると、Xをセットできません時間。

「スケジュール」を5秒間(5000ミリ秒)開始すると、常に1秒ごとにビープ音が鳴ります。間隔の時間を設定することはできません。

なぜ私は間隔の設定時間に失敗し続けますか?

コード:

private long _valueToDisplay = 5000; 
private Timer _timeTimeToBeep; 
private TimerTask _task; 
private Thread _thread; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    _timeTimeToBeep = new Timer(); 

    _task = new TimerTask() { 

     @Override 
     public void run() { 

      _thread = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        playSound(); 
       } 
      }); 

      _thread.start(); 
     } 
    }; 
} 


public void playSound(){ 
    final ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100); 
    toneGenerator.startTone(ToneGenerator.TONE_PROP_BEEP); 
} 


public void startPlayClickBtn(View view) throws InterruptedException { 
    //_timeTimeToBeep.schedule(_task, 3000, 3000); 
    _timeTimeToBeep.schedule(_task, 0, _valueToDisplay); 
} 

答えて

1
は、このようにコードを変更し

private long _valueToDisplay = 1000; 
private Timer _timeTimeToBeep; 
private TimerTask _task; 
private Thread _thread; 
final ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100); 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_eep); 
    _timeTimeToBeep = new Timer(); 

    _task = new TimerTask() { 

     @Override 
     public void run() { 

      _thread = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        playSound(); 
       } 
      }); 

      _thread.start(); 
     } 
    }; 
} 


public void playSound(){ 

    toneGenerator.startTone(ToneGenerator.TONE_PROP_BEEP); 
} 


public void startPlayClickBtn(View view) throws InterruptedException { 
    //_timeTimeToBeep.schedule(_task, 3000, 3000); 
    _timeTimeToBeep.schedule(_task, 0, _valueToDisplay); 
} 

私が行っているすべてを単一の定数ToneGeneratorオブジェクトを作成することです。あなたのコードでは、5秒ごとにToneGeneratorの新しいオブジェクトを作成していました。それはなぜあなたが間違っていたのですか?ここでは、単一のオブジェクトが作成され、プログラムを通じて使用されます。

関連する問題