【问题标题】:android camera application flash安卓相机应用闪光灯
【发布时间】:2016-01-01 06:24:51
【问题描述】:

我在自定义相机应用程序中遇到问题。开启闪光灯功能后,手机使用闪光灯拍摄第一张照片,但第二张照片不使用闪光灯。

  flashCameraButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isPressed) {
                flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.onflash));

                flashOnButton();
            } else if (isPressed) {
                flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.offflash));
                isPressed = !isPressed;
                flashOffButton();
            } else
                flashCameraButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.onflash));
            flashOnButton();
        }
    });

    private void flashOnButton() {
    if (camera != null) {
        try {
            Camera.Parameters param = camera.getParameters();
            param.setFlashMode(!flashmode ? Camera.Parameters.FLASH_MODE_ON
                    : Camera.Parameters.FLASH_MODE_ON);
            camera.setParameters(param);
            flashmode = !flashmode;
        } catch (Exception e) {
            // TODO: handle exception
        }

    }
}
   private void flashOffButton() {
    if (camera != null) {
        try {
            Camera.Parameters param = camera.getParameters();
            param.setFlashMode(!flashmode ? Camera.Parameters.FLASH_MODE_OFF
                    : Camera.Parameters.FLASH_MODE_OFF);
            camera.setParameters(param);
            flashmode = !flashmode;
        } catch (Exception e) {
            // TODO: handle exception
        }

    }
}

【问题讨论】:

  • 你在 if 和 else if 中检查相同的条件。
  • 好的,那我用这个 Anoop kanyan
  • 这段代码来自一些教程吗?

标签: android android-layout android-intent android-camera android-camera-intent


【解决方案1】:

看看下面的代码。你可以做类似的事情:

btnSwitch.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFlashOn) {
                // turn off flash
                //change the picture 
                turnOffFlash();
            } else {
                // turn on flash
                //change the picture
                turnOnFlash();
            }
        }
    });
}


// Get the camera
private void getCamera() {
    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        } catch (RuntimeException e) {
            Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
        }
    }
}


 // Turning On flash
private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }


        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;


    }

}


// Turning Off flash
private void turnOffFlash() {
    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }


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


    }
}

我们在这里做的是检查 Flash 是 ON 还是 OFF,如果是 ON,我们调用方法 turnOffFlash() 来关闭它,如果它是 OFF,我们调用方法 turnOnFlash() 来打开它.

【讨论】:

  • 好的,谢谢 Anoop Kanyan,我如何在这种方法中声明 (isFlashon)
  • 在所有方法之外声明它并初始设置为false。
  • 好的,谢谢,但我想当闪光灯打开时,它毫无疑问会单击第一个图像并打开闪光灯,第二次单击图像时会自动关闭闪光灯。我想如果闪光灯打开它应该打开,直到我改变闪光灯关闭模式
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多