Я использую 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