Android主导错误

时间:2013-06-27 15:31:24

标签: android led

我正在创建一个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);
            }
        }
    }
}

因此它会打开,但当我尝试将其关闭时会遇到错误。

1 个答案:

答案 0 :(得分:2)

根据the Camera documentation中的第10项,完成相机后,您需要release()您的相机。

如果不这样做,那么手机会认为相机仍在使用中,并且不允许其他进程(包括您自己的进程)再次open()相机。