2016-10-12 5 views
0

私は懐中電灯のアプリを作ったと今、私はモスクのコードを点滅を追加したい。これはそれのための私のコードですが、それは非常にうまく動作しません、それはあまりにも速く点滅するので、私はいくつかの種類の遅延が必要です誰も助けることができますか?SOSの懐中電灯 - どのように

public void sos(View v) { 
    String myString = "111000111"; 
    Handler handler = new Handler(); 


    for (int x = 0; x < myString.length(); x++) { 
     if (myString.charAt(x) == '1') { 
      handler.postDelayed(new Runnable() { 
       public void run() { 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(params); 
        camera.startPreview(); 
       } 
      }, 300); 


      handler.postDelayed(new Runnable() { 
       public void run() { 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
        camera.setParameters(params); 
       } 
      }, 300); 


      handler.postDelayed(new Runnable() { 
       public void run() { 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
        camera.setParameters(params); 
       } 
      }, 300); 

     } 

    } 
} 
+0

問題が何であるか分かっていれば、各ハンドラは300ミリ秒後に実行されています。それぞれの間に300ミリ秒の遅延はありません。それをしたいのであれば、別のスレッドの最後に別のスレッドを開始する必要があります –

+0

私のためにできますか?私はちょうどこれを学ぶようになったので、実際にはできません。 –

+0

あなたは 'Thread.sleep()'を使うこともできますが、それはアプリケーションのメインスレッドを停止させます –

答えて

1

注:私はアプリプログラマーではありませんが、ここにはThread.sleep()のサンプルがあります。がんばろう。

for (int x = 0; x < myString.length(); x++) { 
    if (myString.charAt(x) == '1') {     
      params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
      camera.setParameters(params); 
      camera.startPreview(); 
    }  
    Thread.sleep(300);  


    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
    camera.setParameters(params); 


} 
+0

これは、メインスレッドをスリープ状態にするとアプリがクラッシュする可能性が高いですが、それはどれも良いスタートです。 http://stackoverflow.com/a/3039718/2308683 –

+0

これを助けてくれてありがとう:D –

0

2番目です。

int delay=0; 
for (int x = 0; x < myString.length(); x++) { 
    if (myString.charAt(x) == '1') { 
     handler.postDelayed(new Runnable() { 
       public void run() { 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(params); 
        camera.startPreview(); 
       } 
      }, (delay+=300)); 


     handler.postDelayed(new Runnable() { 
       public void run() { 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
        camera.setParameters(params); 
       } 
      }, (delay+=300)); 




     } 

    } 
関連する問題