2013-06-27 144 views
0

我正在创建一个led小部件。我可以打开灯,但是当我关闭它时,出现错误:无法访问摄像头。我不知道为什么..Android导致错误

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

什么是错误? – ethrbunny

回答

2

根据the Camera documentation中的第10项,当您完成相机时,您需要使用release()

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

+0

是有道理的...感谢... lessoned学习阅读文档很重要。 –