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

时间:2018-02-07 22:00:40

标签: java android kotlin android-camera android-camera2

我想构建一个应用程序,在拍照时保持前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个按钮的监听器来执行这些操作。虽然它们可以自行工作,但是当意图打开相机时,手电筒/闪光灯不会保持打开状态。有什么方法可以实现这种行为吗?

1 个答案:

答案 0 :(得分:0)

火炬的代码有效,但它仅适用于您的应用。执行startActivityForResult(intent, requestImageCapture)后,您将不再使用自己的应用。你在任何你选择的相机应用程序。您的应用无法访问相机,相机应用就可以获取相机。

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

如果你想启用闪光灯并拍照,你必须创建自己的相机应用程序。您可以在this指南后从头开始操作,也可以使用Fotoapparatmaterial-camera等相机库