年前,自己做的Android相机嵌入到一款火爆的游戏中去了,经过几次的修改升级,相机运行上报的错误也越来越少,
但是,前几天刚上线的最新相机,却老是在Android 2.3机器上出现startPreview failed的错误,不知为啥,后来,
在网络上搜索,很多人也出现了这个问题,解决的方法是,给holder添加SURFACE_TYPE_PUSH_BUFFERS标记,
可是我明明就已经添加了,却老是在startPreview时抛出异常。
Google 官方文档已经说了,在2.3版本及以下需要手动添加改标记,而以上版本会自动(auto)添加。参考链接:
http://developer.android.com/reference/android/view/SurfaceHolder.html#setType(int)
相关截图:
对比我以前最老的相机版本,它在2.3上跑的很正常,只是,给surfaceHolder添加标记时是在它初始化的时候添加的,
而新版本是在 surfaceHolder的回调函数surfaceCreated中设置的。
由此,才发现问题所在,我再surfaceHolder创建的时候调用该代码:
if(PhoneInfo.getSdkVersion() <= 10)
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);