打开相机时保持手电筒开启
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
从头开始
我想构建一个应用程序,在拍照时保持前置 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
从头开始