2013-06-03 62 views
0

我使用的相機API和閃光模式作爲火炬,但在拍攝一張照片後,閃光燈熄滅。如何再次打開閃光燈。我使用的是Android 2.3,如何我用閃光模式作爲火炬作爲火炬的Android閃光燈模式不起作用

 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // <15> 
    camera = Camera.open(); 
    params = camera.getParameters(); 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    Camera.Size size = sizes.get(0); 
    params.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO); 
    params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); 
     params.setSceneMode(Camera.Parameters.SCENE_MODE_LANDSCAPE); 
     params.setFlashMode("torch"); 
    params.setJpegThumbnailQuality(100); 
    params.setExposureCompensation(0); 
    params.setJpegQuality(100); 
// params.setPreviewSize(PreviewSizeWidth,PreviewSizeHeight); 
    //now that you have the list of supported sizes, pick one and set it back to the parameters... 
    //int w=0,h=0; 
    for(int i=0;i<sizes.size();i++) 
    { 
     if(sizes.get(i).width > size.width) 
      size = sizes.get(i); 
    } 
    params.setPictureSize(size.width, size.height); 
    Toast.makeText(getContext(), size.width+"and"+size.height,Toast.LENGTH_SHORT).show(); 

    camera.setParameters(params); 

    if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
    { 
    params.set("orientation", "portrait"); 
    camera.setDisplayOrientation(90); 
    } 
    camera.startPreview(); 
    try 
    { 
    camera.setPreviewDisplay(holder); 
    } 
    catch (IOException exception) 
    { 
    camera.release(); 
    camera = null; 
    } 

    } 

}

回答

0

入住這

私人攝像頭攝像頭;

 if (camera == null) { 

     } else { 
      // Set the torch flash mode 
      Parameters param = camera.getParameters(); 
      param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
      try { 
       camera.setParameters(param); 
       camera.startPreview(); 

      } catch (Exception e) { 

      } 
     } 
+0

不工作:( – devian

+0

在哪個設備是你的工作,我在三星Nexus 3有問題,但它在LG的Nexus 4做工精細 – abi

0

你拿着它後對照片做什麼?你是否移動到不同的活動/片段,然後回到拍照片段?你是否僅僅存儲照片而不離開當前活動/片段?

如果你沒有離開活動/片段,我會建議在最後一次Camera.PictureCallback結束時重新啓動手電筒。請記住,相機預覽在拍攝照片後停止,因此您必須重新開始預覽。也許是這樣的:。

mPictureCallback = new Camera.PictureCallback(){ 
    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 

     // ... process your byte data ... 

     if(mCamera != null){ 

      Camera.Parameters params = mCamera.getParameters(); 
      params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
      mCamera.setParameters(params); 

      try{ 
       mCamera.startPreview(); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 
};