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