2013-01-22 41 views
1

我正在使用相机手电筒项目。相机手电筒项目在点击时已停止

它在模拟器上加载,但是当我点击“On”按钮时,它意外停止。这里是猫日志https://dl.dropbox.com/u/15065300/logcat1.png

下面是代码:

public class FlashLight extends Activity { 


    private final static String LOG_TAG = "FlashLight"; 
    private Button mOnBtn; 
    private Camera mCamera;  
    private boolean isActive; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //this will be inside your onCreate... 
     mOnBtn = (Button) findViewById(R.id.on_btn); 
     mOnBtn.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       flipSwitch(); 
       processClick(); 

      } 
     }); 
    } 

    //these will be outside your onCreate 
    public void flipSwitch() { 
     isActive = !isActive; 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     try{ 
      mCamera = Camera.open(); 
      mCamera.startPreview(); 
      Toast.makeText(getApplicationContext(),"Camera is present", Toast.LENGTH_LONG).show(); 

     } catch(Exception e){ 
      Log.e(LOG_TAG, "Impossible d'ouvrir la camera"); 
     } 
    } 

    @Override 
    protected void onPause() { 
     if(mCamera != null){ 
      mCamera.release(); 
      mCamera = null; 
     } 
     super.onPause(); 
    } 

    public void processClick() { 
     if(isActive) { 
      Parameters params = mCamera.getParameters(); 
      params.set("flash-mode", "torch"); 
      mCamera.setParameters(params); 
      mCamera.startPreview(); 
     } 

     else { 

      Parameters params = mCamera.getParameters(); 
      params.set("flash-mode", "off"); 
      mCamera.setParameters(params); 
      mCamera.stopPreview(); 

     } 
    } 
} 
+0

你试过它作为'params.setFlashMode(Parameters.FLASH_MODE_ON); mCamera.setParameters(params);'? –

+0

是的,我已经尝试过,其次我尝试这种方式。 –

+0

什么是74号线? –

回答

0

你在你的代码对的Flashlight.java 74行NullPointerException

这可能是mCameraparams正在使用,而它的值为空。检查这些值的初始化/赋值。

+0

第74行是:**参数params = mCamera.getParameters(); **你能详细说明一下吗? –

+0

@AsimKrishnaDas因此,该行中唯一可以为null的是mCamera。查看调试器中的代码,看看为什么它是空的。在这种情况下,只有一个地方你实例化mCamera,它是mCamera = Camera.open();你有没有向清单中添加权限?您还应该在代码中假设Camera.open()会失败(另一个应用程序可能正在使用它)。实际上,您应该始终假定应用程序外的任何资源都不可用,并检查null,然后采取适当的措施。 – Simon

+0

@Simon如果我关联了两个按钮(一个用于打开,另一个用于关闭),它显示没有错误,但是当我关联一个按钮时,它显示错误!请[看到这个我怎么试过这[[http://stackoverflow.com/questions/14444410/changing-two-button-into-a-toggle-button) –