Я использую Camera API на Android и получил свой код для работы на нескольких платформах, включая Samsung Galaxies и HTC Desire. Пока что я испытываю только проблему с HTC Desire Z, которая периодически.
в своем коде я вызываю следующие инструкции
camera.startPreview();
camera.autoFocus(autoFocusCallback);
где я уже создал требуемый класс autoFocusCallback. Я хотел бы еще раз подчеркнуть, что этот код работает на телефонах, в том числе и с теми, с которыми у меня проблемы, так что не занимайтесь анализом кода. :) После вызова обратного вызова мой код продолжает делать снимок, но эта часть на данный момент не имеет значения.
Периодическая проблема заключается в том, что для определенного случайного изображения (происходит один из 20-100 раз) обратного вызова не происходит. Своими собственными 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