gpt4 book ai didi

android - 如何在相机预览打开时(以编程方式)保持手电筒打开

转载 作者:行者123 更新时间:2023-11-30 05:08:23 25 4
gpt4 key购买 nike

因此,对于我的 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);

快乐编码!

关于android - 如何在相机预览打开时(以编程方式)保持手电筒打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54140316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com