Я установил режим фокусировки как FOCUS_MODE_AUTO.
camParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
cameraInstance.setParameters(camParameters);
Затем я начал предварительный просмотр.
cameraInstance.startPreview();
После этого я вызываю метод автофокуса.
List<String> focusModes = camParameters.getSupportedFocusModes();
if(focusModes != null && focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
Log.d(TAG, "Phone supports autofocus!");
cameraInstance.autoFocus(autoFocusCallback);
}
Вот мой обратный вызов с автофокусом.
private static android.hardware.Camera.AutoFocusCallback autoFocusCallback = new android.hardware.Camera.AutoFocusCallback() {
@Override
public void onAutoFocus (boolean success,
Camera camera) {
if(success) {
Log.d(TAG, "Sharp");
camera.cancelAutoFocus();
} else {
Log.d(TAG, "Not Sharp");
camera.autoFocus(autoFocusCallback);
}
}
};
Я обнаружил, что метод onAutoFocus не вызывается после просмотра предварительного просмотра камеры и заметил (в logcat), что постоянно появляется следующая ошибка.
01-01 08: 29: 07.135 765-10897 /? E / mm-камера: 5052: af_port_handle_set_focus_manual_pos_evt: не в режиме CAM_FOCUS_MODE_OFF (вручную), игнорировать настройки
01-01 08: 29: 07.316 765-10891 /? E / mm-camera: 739: af_process_update_fv_history: SW Статистика отсутствует! Начало ожидания