我正在使用Android上的Camera API,并使我的代码在多个平台上运行,包括三星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