当前位置: 首页 > 知识库问答 >
问题:

Android camera2手动闪光灯并不总是起作用

胥玮
2023-03-14

我在Android 6.1,SDK23上使用新的camera2 api。

我有两个请求:预览和静态图像捕获请求。我想让它使闪光灯关闭每一个静态图像请求,但没有任何预闪光灯。现在,我的请求是这样的:

CaptureRequest.Builder requester = mCameraDevice.createCaptureRequest(mCameraDevice.TEMPLATE_STILL_CAPTURE);
        requester.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
        requester.set(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_STILL_CAPTURE);
        requester.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED);
        requester.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
        requester.addTarget(mCaptureBuffer.getSurface());

mCaptureSession.capture(requester.build(), null, null);

共有1个答案

尉迟默
2023-03-14

flash_modecontrol_ae_mode同时处于活动状态时有时会出现一些问题,因此我建议您将它们分开,不要关闭flash_mode以关闭并使用control_ae_mode控制Flash。因此,要设置不同的闪光灯模式,请使用如下所示:

int flashMode = yourDesireFlashModeKey;
        if (flashMode == CameraMetadata.FLASH_MODE_OFF) {
            builder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);

        } else if (flashMode == CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH) {
            builder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH);
            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);

        } else if (flashMode == CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH) {
            builder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);

        } else if (flashMode == CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE) {
            builder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE);
            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
        }
        else if (flashMode == CameraMetadata.FLASH_MODE_OFF || flashMode == CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH) {

            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
        }
        else if (flashMode == CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH) {

            builder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_SINGLE);
        }

对于flash_mode,始终将flash保持为单个,在使用ae_mode_flash模式时将其关闭。

你可以在下一个链接中阅读更多关于它的信息。

希望它能帮助你;)

 类似资料:
  • 我正在使用眨眼计划程序。这是我的 sql test_table是Kafka桌 我设置了表.exec.state.ttl=10000 并运行我的程序,然后我继续发送消息。 由于我将状态ttl和cep interval都设置为10s,当我启动它时,状态的大小在10秒后应该是一个固定的数字。 但事实是,该州至少持续增长15分钟。此外,jvm触发了两次完整的gc。 是否有我尚未配置的配置

  • 问题内容: 像手电筒应用程序一样,我只需要将闪光灯与API camera2(Android 5,API级别21)一起使用。但是我发现的所有示例都需要在视图中显示摄像机流 问题答案: https://github.com/pinguo- yuyidong/Camera2/blob/master/app/src/main/java/us/yydcdut/androidltest/otheractivi

  • 我正在尝试验证控制器中的值,并将闪存错误消息发送到Sailsjs框架中的EJS视图文件。 我收到以下错误消息: 我已经在config/policies.js中添加了闪存策略 这就是我重定向到错误视图的方式。 flash.js内容 帮助我解决此闪存不是视图文件中定义的错误。

  • 本文向大家介绍WPF实现背景灯光随鼠标闪动效果,包括了WPF实现背景灯光随鼠标闪动效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了WPF实现背景灯光随鼠标闪动的具体代码,供大家参考,具体内容如下 实现效果如下: 思路:将容器分割成组合三角形Path,鼠标移动时更新每个三角形的填充颜色。 步骤: 1、窗体xaml 只需放置一个Canvas。 2、交互逻辑 说明:当组合三角形过多时,

  • 问题内容: 我需要一种在录制视频的同时在Android设备上控制照相机闪光灯的方法。我正在制作频闪灯应用,使用频闪灯闪烁的视频拍摄视频将能够记录高速移动的物体,例如风扇叶片。 只能通过启动视频预览并在相机参数中设置FLASH_MODE_TORCH来启用闪光灯。看起来像这样: 预览开始后,我可以来回翻转该参数以打开和关闭灯光。在尝试录制视频之前,此方法效果很好。麻烦的是,为了将摄像机提供给Media

  • 本文向大家介绍IOS打开系统相机的闪光灯,包括了IOS打开系统相机的闪光灯的使用技巧和注意事项,需要的朋友参考一下 IOS有两种的拍照和视频的方式: 1.直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。 2.另一种是通过AVFoundation.framework框架完全自定义拍照的界面和选择图片库界面。我只做了第一种,就先给大家介绍