打开相机时保持手电筒开启

Keep flashlight ON while camera is opened

我想构建一个应用程序,在拍照时保持前置 LED flash/torch 亮起。所以我有以下代码使用隐式意图打开相机:

val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, requestImageCapture)

以及phone的torch/flash开关的代码:

if(isLightOn) {
    val manager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
    val cameraId = manager.cameraIdList[0]
    manager.setTorchMode(cameraId, false)
    isLightOn = false
} else {
    val manager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
    val cameraId = manager.cameraIdList[0]
    manager.setTorchMode(cameraId, true)
    isLightOn = true
}

我已经设置了 2 个按钮的侦听器来执行这些操作。虽然它们自己工作得很好,但当有意​​打开相机时,torch/flash 不会保持打开状态。有什么方法可以实现这种行为吗?

手电筒代码有效,但仅适用于您的应用。 startActivityForResult(intent, requestImageCapture) 执行后,您不再在您的应用程序中。您正在使用您 select 的任何相机应用程序。您的应用失去了对相机的访问权限,相机应用获得了它。

相机应用程序现在可以控制闪光灯。相机应用程序可能有闪光灯控制。

如果您想启用闪光灯并拍照,您必须创建自己的相机应用程序。您可以按照 this guide or you can use a camera library like Fotoapparat or material-camera

从头开始