2

そのため、ユーザーがフラッシュのオン/オフ/自動を選択できるボタンを用意しようとしています。このボタンはカメラ プレビュー アクティビティ内にありますが、1 つのボタンで特定のパラメーターを確認する方法がわかりません。

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

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(mCamera != null){
                Parameters p = mCamera.getParameters();
                p.setFlashMode(Parameters.FLASH_MODE_AUTO);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("AUTO");
                Log.e("Torch","Torch On");
            }else{
                Parameters p = mCamera.getParameters();
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                mCamera.setParameters(p);
                mCamera.release();
                mCamera=null;
                flashButton.setText("OFF");

            }// maybe another one for ON



        }

今は設定ですmCamera!=nullが、フラッシュがAUTO、ON、OFFのいずれであるかを確認するにはどうすればよいですか?代わりにSWITCHがあるのではないかと考えていますか?これらの設定を 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");

            }



        }
4

2 に答える 2

9

次のように、フラッシュが AUTO、ON、または OFF であるかどうかを確認できます。

Camera.Parameters p= mCamera.getParameters();

if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_ON))
{
 //DO STUFF...
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_OFF))
{
//DO STUFF......
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
{
//DO STUFF......
}
else if(p.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
{
//DO STUFF......
}
else
{
//DO STUFF.....
}
于 2012-05-12T05:22:20.213 に答える
4

値は文字列であるため、「==」の代わりに equals() メソッドで値を比較する必要があります。

Camera.Parameters p= mCamera.getParameters();
String flashMode = p.getFlashMode();
if(flashMode == null) {
 //DO something, if it has no value
} else if(flashMode.equals(Camera.Parameters.FLASH_MODE_OFF)) {
  //DO STUFF......
} else if(flashMode.equals(Camera.Parameters.FLASH_MODE_TORCH)) {
//DO STUFF......
}
  :
  :
于 2012-05-25T11:55:05.990 に答える