Android Camera: start preview failed; API10. Android 2.3 startPreview失败解决方法

代码中使用了开源项目(OSChina 客户端2.0)的源码,zxing做二维码扫描识别。搬过来之后在Android 2.3机器运行报错:
Unexpected error initializing camera java.lang.RuntimeException: startPreview failed

startPreview失败报错详细如下:

找到了一些文章,有的说Camera的open与startPreview不能多次调用,需要设置标记,查看OSChina的源码之后发现有标记,不是这个。

后来找到说低版本的SDK需要setType一下,设置成:SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS,尝试后依然没有解决问题。

最后是借鉴了这篇文章(不知道是不是原始链接)解决了问题,holderView要放在holder的allCallback前面,完整如下:

就是这两句:

if(Build.VERSION.SDK_INT<11)
scanPreview.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

scanPreview.getHolder().addCallback(this);

OSChina客户端的2.0支持的最低版本是15,已经不再支持API10,不能PullRequest一下了。

Leave a Reply

Your email address will not be published. Required fields are marked *

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。