Я использую camera2
API, основываясь на примере Google. Отлично работает на моем устройстве, но не работает на эмуляторе (и, возможно, на некоторых других устройствах).
Причина CaptureResult.CONTROL_AF_STATE
в состоянии CaptureResult.CONTROL_AF_STATE_INACTIVE
.
Часть кода ( идентично примеру Google)
case STATE_WAITING_LOCK: {
Integer afState = result.get(CaptureResult.CONTROL_AF_STATE);
if (afState == null) {
captureStillPicture();
} else if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState ||
CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) {
// CONTROL_AE_STATE can be null on some devices
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState == null ||
aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) {
mState = STATE_PICTURE_TAKEN;
captureStillPicture();
} else {
runPrecaptureSequence();
}
}
break;
}
Как мы видим, если состояние INACTIVE
, ничего не происходит. Боюсь, что это может произойти не только на эмуляторе, поэтому мой вопрос небезопасен для фотографирования, даже если AUTO FOCUS STATE INACTIVE
? и что с этим делать?