Я использую Camera API на Android и заставил свой код работать на нескольких платформах, включая Samsung Galaxy и HTC Desire. Пока я испытываю проблему только на HTC Desire Z, которая носит периодический характер.
в моем коде я вызываю следующие инструкции
camera.startPreview();
camera.autoFocus(autoFocusCallback);
где я уже создал необходимый класс autoFocusCallback. Хочу еще раз подчеркнуть, что этот код работает на телефонах, в том числе и на том, с которым у меня проблемы, так что не лезьте в код. :) После вызова обратного вызова мой код делает снимок, но эта часть пока не имеет значения.
Периодическая проблема в том, что для определенной случайной картинки (происходит один раз из 20-100) callback не происходит. Я проверил с помощью своих собственных Log.i(), что это последняя выполненная команда (т.е. код не попадает в обратный вызов). Отладка также показывает, что об ошибках не сообщается.
Просто чтобы успокоиться, мой обратный вызов выглядит примерно так
AutoFocusCallback autoFocusCallback = new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
Log.i("tag","this ran");
...
...
}
};
Результаты Logcat для успешного запуска выглядят примерно так
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): startPreview X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): runAutoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): af start (fd 49)
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): native_set_afmode: ctrlCmd.status == 0
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): af done: 1
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): runAutoFocus X
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): takePicture(479)
Но проблемный запуск такой
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): startPreview X
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): autoFocus E
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): autoFocus X
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): runAutoFocus E
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): af start (fd 49)
а потом зависает.
Я хотел бы знать, есть ли у кого-нибудь какие-либо идеи по поводу этой проблемы, или если вы испытали что-то подобное? Мне удалось найти в сети только одну тему с похожими проблемами, вот она http://groups.google.com/group/android-developers/browse_thread/thread/75ecb8db0ae02bdb