我在 Android 上使用 Camera API,并让我的代码在多个平台上工作,包括 Samsung Galaxies 和 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