【问题标题】:Android flash mode as torch doesnt worksAndroid flash 模式作为手电筒不起作用
【发布时间】:2018-11-22 17:35:23
【问题描述】:

我正在使用相机 API 和闪光灯模式作为手电筒,但拍完一张照片后闪光灯关闭。如何再次打开闪光灯。我使用的是 android 2.3,如何将闪光灯模式用作手电筒

      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;
  }

  }

}

【问题讨论】:

    标签: android android-camera


    【解决方案1】:

    检查一下

    私人相机摄像头;

            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) {
    
                }
            }
    

    【讨论】:

    • 你在哪个设备上工作,我在 samsung nexus 3 中遇到问题,但在 LG Nexus 4 中工作正常
    【解决方案2】:

    拍完照片后你会怎么处理?你是否移动到不同的活动/片段,然后回到拍照片段?您是否只是在不离开当前活动/片段的情况下存储照片?

    如果您不离开活动/片段,我建议您在最后一个 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();
                }
            }
        }
    };
    

    【讨论】:

      【解决方案3】:

      您需要在调用 mCamera.setParameters(params) 之前调用 mCamera.stopPreview();如下所示。

                      mCamera.stopPreview();
                      mCamera.setParameters(cameraParameters);
                      mCamera.startPreview();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多