我想构建一个应用程序,在拍照时保持前LED闪光灯/手电筒开启。所以我有以下代码使用隐式意图打开相机:
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, requestImageCapture)
打开和关闭手机的手电筒/闪光灯的代码:
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个按钮的监听器来执行这些操作。虽然它们可以自行工作,但是当意图打开相机时,手电筒/闪光灯不会保持打开状态。有什么方法可以实现这种行为吗?
答案 0 :(得分:0)
火炬的代码有效,但它仅适用于您的应用。执行startActivityForResult(intent, requestImageCapture)
后,您将不再使用自己的应用。你在任何你选择的相机应用程序。您的应用无法访问相机,相机应用就可以获取相机。
现在可以为相机应用程序控制闪光灯。相机应用可能有闪光控制。
如果你想启用闪光灯并拍照,你必须创建自己的相机应用程序。您可以在this指南后从头开始操作,也可以使用Fotoapparat或material-camera等相机库