我正在开发一款适用于相机的应用,但我收到了错误消息。 当相机处于活动状态时,相机会在手电筒打开时冻结或错误" E /相机:错误2" 。非常感谢。
public void FlashOn()
{
cam = Camera.open();
Camera.Parameters params = cam.getParameters();
if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON))
{
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
}
else
{
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
cam.setParameters(params);
cam.startPreview();
}
public void FlashOff()
{
Camera.Parameters params = cam.getParameters();
if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON))
{
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
}
else
{
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
cam.stopPreview();
cam.release();
}
答案 0 :(得分:0)
我不认为您必须再次使用startPreview
才能启用闪存。在一个较旧的项目中,我做了类似这样的事情来启用/禁用flash:
Camera.Parameters params = camera.getParameters();
if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON)) {
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
camera.setParameters(params);
此外,您可能希望使用AsyncTask
打开/关闭相机,因为它是一个UI阻止操作。
更新:这是您的方法看起来的方式
public void FlashOn() {
Camera.Parameters params = cam.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
cam.setParameters(params);
}
对于FlashOff
方法,事情会类似。