2017-08-23 15 views
1

私はボタンクリックで瞬き機能を追加しようとしている懐中電灯アプリケーションを開発中です。私が見つけたコードは次のとおりです:ボタンで懐中電灯が点滅するandroidでクリック

String myString = "0101010101"; 
long blinkDelay 50; //Delay in ms 
for (int i = 0; i < myString.length(); i++) { 
    if (myString.charAt(i) == '0') { 
     params.setFlashMode(Parameters.FLASH_MODE_ON); 
    } else { 
     params.setFlashMode(Parameters.FLASH_MODE_OFF); 
    } 
    try { 
     Thread.sleep(blinkDelay); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

しかし、このコードは瞬きが少なくなった後に懐中電灯を消します。ボタンをクリックすると懐中電灯を点滅させ、もう一度クリックしない限り止めることはできますか?どんな助け?

+2

無限ループを使用し、ボタンをクリックするリスナーを追加し、ループを中断するフラグを追加して、中断した後に前回オフにします。 – Mena

+0

私は無限ループを試みましたが、アプリはフリーズしました。私はボタンクリックでループを壊すことができませんでした – Shaifu

+0

UIスレッドのthread.sleepを避けてください。 –

答えて

1
  • をクリックされたときは、UIの凍結を防ぐために別のスレッドを使用する必要がありますループを破るwhile条件のboolean。
  • スレッドにはが含まれ、ループには連続して点滅することができます。
  • ボタンクリック時にループを解除するには、while条件でブール変数を使用します。

希望します。

2

あなたの文字列の長さによって制御されるので、forループは、iのカウントが最後のインデックスより大きくなった後に壊れます。 フラッシュを連続して点滅させたい場合は、whileループを使用します。 ブール変数を1つ使用して、オンとオフを切り替えることができます。 ボタンが

+0

whileループを使うと言っていいですか? – Michael

+0

はいa whileループ –

関連する問題