【发布时间】:2016-05-24 18:53:04
【问题描述】:
我在 Android 6.1,sdk 23 上使用新的 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);
它似乎可以在一部手机(摩托罗拉 Moto G)上工作,但不能在另一部手机(Nexus 5 - 闪光灯根本没有打开)上工作。我知道 Nexus 的闪光灯可以工作,因为我可以使用其他相机应用程序触发它,所以我猜有些默认值我没有设置。
还有其他方法可以做到这一点/我可以设置更多标志吗?
谢谢!
编辑:
事实证明,我遇到的很多麻烦都源于使用仅支持
LIMITED 支持 camera2 的设备。仅仅因为您可以使用相机 2 访问相机并不意味着您可以控制所有功能。查看this答案了解更多信息
【问题讨论】:
-
也许你有一个例子?或者只是告诉我我应该在哪里包含这行代码?在
stillCapture()或onConfigurate()或unlockFocus()方法上?因为我找不到任何可以使我的代码工作的想法......
标签: android android-camera android-camera2