我正在创建一个led小部件。我可以打开灯,但是当我关闭它时我得到一个错误:无法访问相机。我不确定为什么......
public static void setLightMode(Context context)
{
Log.i(TAG,"Opening Camera");
//cam = Camera.open();
Log.i(TAG,"in setLightMode");
if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
{
Log.i(TAG,"CAMERA EXISTS");
cam = Camera.open(); //cam is a global value set to null
if(cam != null)
{
Log.i(TAG,"CAMERA NOT NULL");
Parameters p = cam.getParameters();
if(!LIGHT_STATE)
{
Log.i(TAG,"TURNING LED ON");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
setLightState(true);
}
else
{
Log.i(TAG,"TURNING LED OFF");
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
cam.stopPreview();
setLightState(false);
}
}
}
}
因此它会打开,但当我尝试将其关闭时会遇到错误。
答案 0 :(得分:2)
根据the Camera
documentation中的第10项,完成相机后,您需要release()
您的相机。
如果不这样做,那么手机会认为相机仍在使用中,并且不允许其他进程(包括您自己的进程)再次open()
相机。