0

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

所以它会打开,但是当我尝试关闭它时会出错。

4

1 回答 1

2

根据文档中Camera第 10 项,完成后您需要使用release()相机。

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

于 2013-06-27T15:39:13.953 回答