首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:当闪光灯打开时,相机就会结冰。

安卓:当闪光灯打开时,相机就会结冰。
EN

Stack Overflow用户
提问于 2017-12-21 07:05:18
回答 1查看 186关注 0票数 0

我正在开发一个应用程序,它可以与摄像头一起工作,但我得到了一个错误。当相机处于活动状态时,当手电筒打开或错误"E/ camera : Error 2"时,相机就会结冰。非常感谢。

代码语言:javascript
复制
 public void FlashOn()
    {
        cam = Camera.open();
        Camera.Parameters params = cam.getParameters();

        if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON)) 
        {                            
           params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
        } 
        else 
        {
           params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        }
        cam.setParameters(params);
        cam.startPreview();
    }

   public void FlashOff()
   {
       Camera.Parameters params = cam.getParameters();
       if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON))
       {
          params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
       }
       else
       {
          params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
       }
          cam.stopPreview();
          cam.release();
    }
EN

回答 1

Stack Overflow用户

发布于 2017-12-21 08:14:05

我不认为您必须再次使用startPreview才能启用闪存。在一个较旧的项目中,我这样做是为了启用/禁用闪存:

代码语言:javascript
复制
Camera.Parameters params = camera.getParameters();
if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON)) {
    params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
} else {
    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
camera.setParameters(params);

另外,您可能希望使用AsyncTask打开/关闭相机,因为它是UI阻塞操作。

更新:您的方法应该是这样的。

代码语言:javascript
复制
public void FlashOn() {
    Camera.Parameters params = cam.getParameters();
    params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
    cam.setParameters(params);
}

对于FlashOff方法,情况将是相似的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47919649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档