
在我的代码中,我打电话给以下说明
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 X07-12 10:17:50.564: DEBUG/QualcommCameraHarDWare(1223): autoFocus E07-12 10:17:50.564: DEBUG/QualcommCameraHarDWare(1223): autoFocus X07-12 10:17:50.564: DEBUG/QualcommCameraHarDWare(1223): runautoFocus E07-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 == 007-12 10:17:51.184: DEBUG/QualcommCameraHarDWare(1223): af done: 107-12 10:17:51.184: DEBUG/QualcommCameraHarDWare(1223): runautoFocus X07-12 10:17:51.184: DEBUG/QualcommCameraHarDWare(1223): takePicture(479)
但问题的运行就是这样
07-12 10:17:52.194: DEBUG/QualcommCameraHarDWare(1223): startPrevIEw X07-12 10:17:52.194: DEBUG/QualcommCameraHarDWare(1223): autoFocus E07-12 10:17:52.194: DEBUG/QualcommCameraHarDWare(1223): autoFocus X07-12 10:17:52.194: DEBUG/QualcommCameraHarDWare(1223): runautoFocus E07-12 10:17:52.194: DEBUG/QualcommCameraHarDWare(1223): af start (fd 49)
然后它挂起来
我想知道有没有人有任何关于这个问题的想法,或者如果你经历过类似的事情?
我只是在网上找到一个类似问题的线程,这里是http://groups.google.com/group/android-developers/browse_thread/thread/75ecb8db0ae02bdb
我的解决方案是滚动自己的自动对焦超时机制.我按照预定的未来做了,但是最佳的超时执行可能取决于你的具体用例.
final ScheduledFuture<?> focusTimeoutFuture = mscheduledexecutorservice.schedule(new Runnable() { @OverrIDe public voID run() { takePictureAndCancelautoFocus(); } },3,TimeUnit.SECONDS);// add a 3 second timeout to autofocusmCamera.autoFocus(new Camera.autoFocusCallback() { @OverrIDe public voID onautoFocus(boolean b,Camera camera) { // cancel the timeout future if it dIDn't run already boolean canceledFuture = focusTimeoutFuture.cancel(false); if(canceledFuture) { takePictureAndCancelautoFocus(); } }} 总结 以上是内存溢出为你收集整理的android – 相机自动对焦回调未发生全部内容,希望文章能够帮你解决android – 相机自动对焦回调未发生所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)