安卓相机闪光灯不起作用



摄像机闪烁并消失了,是否有兼容的措施?

  Camera c = null;
    try {
        c = Camera.open(0); // attempt to get a Camera instance
        Camera.Parameters p = c.getParameters();
        p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        c.setParameters(p);
        c.startPreview();
    } catch (Exception e) {
        // Camera is not available (in use or does not exist)
        Log.e(TAG,"exception e"+e.getMessage());
    }

1.检查闪光灯的权限

     c = Camera.open();  
     Camera.Parameters params=null;  
     params= c.getParameters();  
     List<String> supportedFlashModes = sParams.getSupportedFlashModes();
                if (supportedFlashModes != null) {
                    if (supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
                        sParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                    } else if (supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_ON)) {
                        sParams.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
                    } else c = null;

                } else Log.d(TAG, "Camera is null.");

                if (c != null) {
                    Log.d(TAG, "Flash disponibile (" + sParams.getFlashMode() + ")");
                    c.setParameters(sParams);
                    c.autoFocus(null);
                }

2.使用SurfaceView的某些特殊情况:

  public void surfaceCreated(SurfaceHolder holder) {  
  if(mCamera!=null){
            mCamera.release();
        }
        mCamera=Camera.open();
        mCamera.setParameters(PerviousParams);
        mCamera.startPreview();
}
  public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  if(mCamera!=null){
            mCamera.release();
        }
        mCamera=Camera.open();
        mCamera.setParameters(PerviousParams);
        mCamera.startPreview();
    }

最新更新