0

「おそらく」異なるifステートメントを切り替えるボタンがありますが、正しく取得できません。ボタンは、さまざまなカメラのフラッシュ状態(ON / AUTO / OFF / TORCH)を通過することになっていますが、状態の1つだけを通過し、残りの状態は通過しません。ボタンは正しいですか?または別のトグルボタンがありますか?

   //Flash Button
    final Button flashButton = (Button) findViewById(id.camera_flash);
    flashButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Parameters p = mCamera.getParameters();

            // TODO Auto-generated method stub
            if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_ON){
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("Off");
                Log.e("Torch","MODE OFF");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_OFF){
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                mCamera.setParameters(p);
                mCamera.release();
                mCamera=null;
                flashButton.setText("TORCH");
                Log.e("Torch","MODE TORCH");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_AUTO){
                p.setFlashMode(Parameters.FLASH_MODE_ON);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("ON");
                Log.e("Torch","MODE ON");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_TORCH){
                p.setFlashMode(Parameters.FLASH_MODE_ON);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("AUTO");
                Log.e("Torch","MODE AUTO");

            }else{
                p.setFlashMode(Parameters.FLASH_MODE_AUTO);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("AUTO");
                Log.e("Torch","MODE AUTO");

            }           
        }

つまり、基本的には、に移動するだけでFLASH_MODE_AUTO、ボタンは機能しなくなります。私のifステートメントは正しいですか?前もって感謝します!

更新しました :

これは私のonCreate()内にあります。それが役立つかどうかわかりませんか?

4

2 に答える 2

2

それが役立つかどうかはわかりませんが、すべての条件で「==」の代わりに「equals(String)」を使用してみてください。

于 2012-05-12T20:11:59.310 に答える
0

あなたはあなたのテキストのいくつかを間違った方法で持っています。たとえば、FLASH_MODE_AUTOをテストしてから、Textを「ON」に設定します。FLASH_MODE_TORCHをテストしてから、テキストを「AUTO」に設定します。続行する前に、これをクリアすることをお勧めします。次に、実行時にプログラムをトレースします。

于 2012-05-12T08:47:48.000 に答える