2016-09-20 6 views
2

これは、点滅しているフラッシュライトを通してユーザ入力を送信するアプリケーションを作成しようとしています。固定ストリングmyString = "1010101"を使用すると、懐中電灯が点滅し、私のアプリは懐中電灯にアクセスできます。しかし、私はユーザーからの入力を取得し、String myStringで保存すると、私はボタンを押しても何も起こりません。今のところ私はバイナリ入力をしたいだけです。私を助けてください。Appはバイナリをユーザから受け取り、閃光を点滅Android Studioでボタンが押されたときに入力を送信する

EditText binData; 
Button blinkMode; 
boolean isFlashOn = false; 
Camera camera; 
String myString; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    camera = camera.open(); 

    binData = (EditText)findViewById(R.id.editText); 
    final Camera.Parameters params = camera.getParameters(); 
    blinkMode = (Button)findViewById(R.id.button); 

    myString = binData.getText().toString(); 

    blinkMode.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      long blinkDelay = 50; //Delay in ms 
      for(int i=0; i<myString.length(); i++){ 
       if(myString.charAt(i)=='1'){ 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
        camera.setParameters(params); 
        camera.startPreview(); 
        isFlashOn = true; 


       } else if(myString.charAt(i)=='0') { 

        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
        camera.setParameters(params); 
        camera.stopPreview(); 
        isFlashOn = false; 

       } 
       try { 
        Thread.sleep(blinkDelay); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 

      int length=myString.length(); 
      if(length == myString.length()) { 
       params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
       camera.setParameters(params); 
       camera.stopPreview(); 
       isFlashOn = false; 
      } 
     } 
    }); 
} 
+1

UIスレッドのThread.sleep?デビル –

答えて

1

移動このラインonClick()方法内側

myString = binData.getText().toString(); 

。それはあなたの問題を理想的に修正するはずです。ボタンをクリックする前に文字列にアクセスしています。私の推測では、これまで空の文字列が取られていたということです。

+0

ありがとう。それは助けになった! :) –

関連する問題