2013-06-13 68 views
4

我正在爲學校編寫應用程序,它具有要求相機拍照,剪裁,上傳到服務器的功能,之後用戶必須能夠打開手電筒(作爲我們正在做的一些跟蹤的一部分)。 以上所有功能都完美無缺 - 直到用戶關閉手電筒並想拍攝另一張照片。相機停止工作,在屏幕上顯示無法連接到相機的錯誤。關閉手電筒後無法使用相機

我知道有像命令重新連接:http://developer.android.com/reference/android/hardware/Camera.html#reconnect() 我一直在擺弄它,我不能爲我的生活得到它的工作。

使用相機的我使用的意圖:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

而且手電筒的代碼如下所示:

private void getCamera() { 
    if (camera == null) { 
     try { 
      camera = Camera.open(); 

      params = camera.getParameters(); 
     } catch (RuntimeException e) { 
      Log.e("Camera Error. Failed to Open. Error: ", e.getMessage()); 
     } 
    } 
} 

/* 
* Turning On flash 
*/ 
private void turnOnFlash() { 
    getCamera(); 
    if (!isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 

     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_TORCH); 

     camera.setParameters(params); 
     camera.startPreview(); 

     isFlashOn = true; 
    } 

} 

/* 
* Turning Off flash 
*/ 
private void turnOffFlash() { 
    if (isFlashOn) { 
     if (camera == null || params == null) { 
      return; 
     } 

     params = camera.getParameters(); 
     params.setFlashMode(Parameters.FLASH_MODE_OFF); 
     camera.setParameters(params); 
     isFlashOn = false; 
    } 
} 

是否有我可以使用的同一個實例任何方式照相機爲手電筒和相機(當它是一個意圖)?我發現,如果我釋放相機et變爲空,它無法再次instanciate它。

在此先感謝

+0

試試我的以下答案 –

回答

3

@Decoid你只需要對暫停方法添加的,我猜你沒有 如下:

@Override 
    protected void onPause() 
    { 
     super.onPause(); 
     if (!isFlashOn) { 
      camera.release(); 
      camera = null; 
    } 
} 
相關問題