相机预览开启时如何(以编程方式)保持手电筒开着

Dibzmania

因此,对于我的Android应用,我创建了一个SurfaceView并将其分配为相机预览,并使用必要的API启动相机预览。但是现在我想在预览工作时打开手电筒(有点像火炬)。

请注意,我在网上看到了很多有关如何打开手电筒的示例,只要不调用开放式相机API,它就可以工作。下面是代码-

try
{
    CameraManager cameraManager = (CameraManager)context.GetSystemService(Context.CameraService);
    if (cameraManager != null)
    {
        //for the sake of brevity, hardcoded the camera id. 0 is mostly back camera
        cameraManager.SetTorchMode(0, true); 
    }
}
catch (CameraAccessException e)
{
   LogUtil.Error("CameraInput", e.ToString());
} 

请注意,我正在Android N上进行测试,因此上面的代码可以完美地工作。但是,只要我在下面的代码行中调用,闪光灯就会关闭。

Camera camera = Camera.Open(0);
// ...... some code  ....//
camera.StartPreview();

当执行以上两行时,闪光灯熄灭。这是一种已知的行为吗,例如相机在哪里独占锁定了闪存硬件并将其值重置为默认值。

我尝试逆转以上代码,即先调用Camera Open API,然后再设置闪光灯。我得到的是CameraAccessException,相机已在使用中。

我想念什么?

汉萨拉

在预览时尝试此操作 SurfaceView

params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(params);

请记住,如果要将其用作手电筒,可以执行以下操作:

parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

如果没有,要打开闪光灯以在拍摄照片时将其熄灭,请使用:

parameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);

编码愉快!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章