我正在使用Android的Camera2 API,我目前希望相机在准备闪光时执行某项操作.
构建CaptureRequest时,以下行:
captureRequest.set(CaptureRequest.CONTROL_AE_MODE,CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
Run Code Online (Sandbox Code Playgroud)
允许相机在低光照条件下闪光.但是,我不知道如何检测相机是否准备闪光.似乎在线关于这一特定行动的文献非常稀少.
我在相机处理部分结果时尝试检查是否FLASH_STATE存在,但似乎关键不可用 - 它一直在返回.也许我不是在正确的地方检查?FLASH_STATE_READYCaptureCallbacknull
相机CaptureCallback如下所示(基于Google的Camera2Basic代码示例):
private CameraCaptureSession.CaptureCallback mCaptureCallback
= new CameraCaptureSession.CaptureCallback() {
private void process(CaptureResult result) {
switch(mState) {
case STATE_PREVIEW: break;
case STATE_WAITING_LOCK:
// checking if result.get(CaptureResult.FLASH_STATE) ==
// CaptureResult.FLASH_READY over here didn't work because
// null was returned
int afState = result.get(CaptureResult.CONTROL_AF_STATE);
if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState ||
CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) {
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState == null ||
aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) {
mState …Run Code Online (Sandbox Code Playgroud)