В моем текущем приложении у меня есть класс, содержащий экземпляр объекта Camera и пытающийся сделать следующее:
1) Подождать определенное время, например. ничего (это делается через TimerTask) 2) Запрос на фокусировку через автофокус 3) В обратном вызове autoFocus запросите OneShotPreviewCallback 4) В обратном вызове предварительного просмотра сохраните изображение 5) Повторите
Хотя баланс белого работал нормально до первой автофокусировки, он останавливается после выполнения первой фокусировки. Ну, конечно, я посмотрел API, и в описании автофокуса есть одно интересное утверждение.
Но процедура автоматической фокусировки может временно остановить автоматическую экспозицию и автоматический баланс белого во время фокусировки.
Но кажется, что он не прекращается лишь временно, а постоянно. Забавно, что при последующем вызове автофокуса камера снова пытается настроить отбеливание, но правильное значение в основном только со вторым или третьим автофокусом.
Я также пытался установить баланс белого в коде, но это ничего не изменило.
setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
Кто-нибудь еще знает об этой проблеме, или я что-то упускаю? Я знаю, что могу постоянно вызывать автофокус для принудительной балансировки белого, но это не кажется мне оптимальным способом, потому что до первого вызова автофокуса он работает отлично.
P.S.: Тестирую на Samsung Galaxy S2 с Android 4.0.3.