代码之家  ›  专栏  ›  技术社区  ›  Ashwin Gopi Krishna

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

  •  0
  • Ashwin Gopi Krishna  · 技术社区  · 6 年前

    我想构建一个应用程序,在拍照时保持前面的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
    }
    

    我已经设置了两个按钮的侦听器来执行这些操作。尽管它们自己工作得很好,但当相机打开时,手电筒/闪光灯不会一直亮着。有没有什么方法可以让我实现这种行为?

    1 回复  |  直到 6 年前
        1
  •  0
  •   LordRaydenMK    6 年前

    torch的代码可以工作,但它只适用于你的应用程序。在 startActivityForResult(intent, requestImageCapture) 已执行,您不再在应用程序中。你在任何你选择的相机应用程序中。你的应用程序失去了对摄像头的访问权限,而摄像头应用程序获得了该权限。

    现在可以控制摄像头应用程序的闪光灯。相机应用程序可能有闪光灯控件。

    如果你想启用闪光灯并拍照,你必须创建自己的相机应用程序。您可以按照以下步骤从头开始 this 指南或您可以使用以下相机库 Fotoapparat material-camera