【问题标题】:androidx.camera.view.CameraView how to detect if camera has flash/torch?androidx.camera.view.CameraView 如何检测相机是否有闪光灯/手电筒?
【发布时间】:2019-12-21 00:32:12
【问题描述】:

我在我的项目中使用 androidx.camera:camera-view:1.0.0-alpha05 从手机的前后摄像头拍照。我不需要此处示例中的所有高级功能https://github.com/android/camera-samples/tree/master/CameraXBasic,目前这些示例已经过时并且不适用于最新的库。因此,androidx.camera:camera-view 中的所有功能都很好,除了我无法检测到前置或后置摄像头是否存在闪光灯/手电筒,并且无法从 CameraView 获取此信息。虽然有像 hasCameraWithLensFacing 这样的方法来检查指定的相机是否存在,也可以通过 CameraView 的 flash 属性设置 flash 模式。也没有办法获取在 androidx.camera:camera-core 的 android 文档中引用的 CameraInfo。

那么如何仅使用 androidx.camera:camera-view:1.0.0 (目前为 -alpha05)检测是否存在闪光灯?

【问题讨论】:

    标签: android android-camera androidx android-camera2 android-jetpack


    【解决方案1】:

    查看 Google 的“CameraX 入门”: https://codelabs.developers.google.com/codelabs/camerax-getting-started/#3

    他们使用 PreviewView,它需要更多的初始化工作,并且对相机本身的控制不如 CameraView 精细,但可以让您执行以下操作:

    • 检测相机是否有闪光灯

      _cameraHasFlashUnit = _camera.CameraInfo.HasFlashUnit;

    • 设置 FlashMode(通过简单的 int 值)

      _imageCapture.FlashMode = _flashMode;

      • 然而,int 值没有得到很好的记录,但我发现了这些:
        • 0 = 自动
        • 1 = 始终
        • 2 = 关闭
    • 将手电筒设置为打开或关闭

      _camera.CameraControl.EnableTorch(_torchIsActive);

    样本取自使用 androidx-beta01.1 的代码。

    我的代码示例是用 C# 编写的,因为我目前正在使用 Xamarin Native 进行开发,但如果需要,它们应该可以轻松转移到 Kotlin。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多