完美解决Android 2.3下相机startPreview failed错误

前几天拿老婆充话费送的天语小黄蜂T619来(Android2.3.5版的OS)测试《IP摄像头》,发现图像出不来,跟踪程序后发现是在startPreview时throw出startPreview failed错误,可在Android4.0以上版本没有,图像正常。谷歌了一番,网上也有很多类似的,说是Android2.3版本时要对SurfaceHolder调用setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);才行。自己弄了两天还是解决不了,还是会出现startPreview failed错误而没有图像。今晚把setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);调用放在了Activity的onCreate中,发现问题立马解决了!

部分代码如下:

surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
if(Build.VERSION.SDK_INT < 11)
	surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

这个语句在API level 11时被标注为了deprecated,所以加了一个判断,如果OS版本小于11才调用。
增加后《IP摄像头》在如此低端的大黄蜂上也跑起来了!如下图:

IMG_20140421_204719

最后发现《条码制作器》的摄像头扫描也有这个问题,添加上述代码后问题完美解决,在小黄蜂上也能扫条码了!两个APP将在下次更新中解决这个BUGS