Android-автофокус Обратный звонок в темноте - PullRequest
0 голосов
/ 16 ноября 2011

У меня возникли проблемы с обратным вызовом onAutoFocus API камеры Android.В конструкторе моего класса Preview я установил режим фокуса FOCUS_MODE_AUTO, а режим флеш-памяти FLASH_MODE_AUTO.К кнопке, которую я представляю пользователю, чтобы сделать снимок, прикреплена пользовательская анимация.Когда пользователь нажимает кнопку, запускается анимация и автофокус:

public void onAnimationStart(Animation animation) {
    isAutoFocusing = true;
    AutoFocusCallBackImpl autoFocusCallBack = new AutoFocusCallBackImpl();
    camera.autoFocus(autoFocusCallBack);
}

Затем в методе onAutoFocus я делаю снимок:

public void onAutoFocus(boolean success, Camera camera) {
    if (camera != null) {
        try {
            camera.takePicture(shutterCallback, rawCallback, jpegCallback);
        } catch(Exception e) {
             // If something went wrong, we return
            // the user to the dashboard.
            setResult(Constants.PICTURE_CAMERA_ERROR);
            finish();
        }
    }
}   

Это прекрасно работает, когда естьдостаточно света (так без вспышки).В темноте, однако, вспышка гаснет и снимок сделан, но кажется, что камера не сфокусировалась должным образом.Я знаю, что обратный вызов onAutoFocus вызывается немедленно, если камера не поддерживает автофокус, но это явно не тот случай.Автофокусировка невозможна в темноте (даже со вспышкой)?

1 Ответ

0 голосов
/ 20 мая 2012

Это, очевидно, аппаратная проблема: для автоматической фокусировки вашему устройству требуется изображение. Нет изображения (в темноте) -> нет автофокуса. Камера не может определить, является ли изображение четким, если изображение отсутствует, поэтому фокусировка в темноте не работает. Вот почему камеры (и я полагаю, некоторые устройства Android) имеют небольшой свет, который включается во время фокусировки. Но я думаю, что большинство телефонов не имеют этого фокуса: /

...