我的一个屏幕上有一个FrameLayout。我在我的代码中引用它:
preview = (FrameLayout)findViewById(R.id.preview);
我正在FrameLayout中嵌入一个CameraPreview对象(从ZBar SDK扩展SurfaceView,用于QR解析),如下所示:
scanner.setConfig(0, Config.Y_DENSITY, 3);
mPreview = new CameraPreview(this, mCamera, getPreviewCallback(), autoFocusCB);
if(preview.getChildCount()>=1)
preview.removeAllViews();
preview.addView(mPreview);
现在,当我在我的一款测试手机Samsung Galaxy 3(GT-I5801)上运行时,一切正常,QR分析正常。但是,如果我使用三星Galaxy S2或三星Ace扫描它,该应用程序最初以低分辨率或无法对焦的相机启动。如果我把它放在一个非常明亮的屏幕上,它也无法自动调整其白平衡。但是如果我从“相机”选项卡导航到应用程序中的另一个选项卡并返回,相机就会正常工作。
任何帮助解决这个问题都将非常感激。这与屏幕或相机分辨率有关吗?或者ZBar SDK中的任何内容,如果有人知道的话?或者几乎总是如此,我错过了什么?再次感谢你阅读这篇文章。
答案 0 :(得分:0)
我查看了源代码,似乎它试图启动连续自动对焦,这在任何地方都无效。我对Android摄像头的体验是,即使功能被广告宣传,也不意味着它可以工作并且可以使用(在分辨率设置上刻录一次)。在调整相机的同时,你必须尽可能地保持防御并准备好迎接问题。
我为JavaOCR项目开发了自己的相机管理,它看起来工作得很好(虽然IU不能承诺它到处工作,但你可能会举例):
http://javaocr.svn.sourceforge.net/viewvc/javaocr/trunk/demos/
(如果你不喜欢自己编译,这个应用程序是建立在这个库上的: