chentao0707 / ZXingProject

精简ZXing项目后只保留扫描功能的代码,去除了ViewfinderView,使用XML布局
MIT License
357 stars 134 forks source link

2.3的机子中无法使用! #1

Closed Tanlet closed 9 years ago

Tanlet commented 9 years ago

在2.3的机子中报的java.io.IOException: setPreviewDisplay failed 错误在: CameraManager.openDriver { theCamera.setPreviewDisplay(holder); }

chentao0707 commented 9 years ago

尝试一下在theCamera.setPreviewDisplay(holder)之前添加holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);看看能不能解决

可以参考: http://stackoverflow.com/questions/1048739/camera-setpreviewdisplay-throws-exception?answertab=active#tab-top

Tanlet commented 9 years ago

这方法试过了!不可以。我换了旧版本的ViewfinderView,摄头正常工作,但是,又出现虽的情况。我怀疑是SurfaceView的问题。现在试一下换回原版的ViewfinderView,再试试

onewilk commented 9 years ago

真心觉得我们作为开发者,不应该为厂商的不作为和已濒临淘汰的落后系统买单背锅,我们天天抱怨为了做兼容花费太多时间,为什么就不从自己做起,用数据和事实告诉产品,PM或者自己,该放弃就放弃,旧版本的就让它们自生自灭去吧。。。别跟我说这样会损失用户,可也没见苹果每次升级换代都有机型被淘汰,不给升级,软件不给兼容,这么做了不也没有多少人不爽么。。。所以我现在都是直接支持14甚至15...

chentao0707 commented 9 years ago

2.3的市场份额的确少之又少,基本上没有。兼容一个4.0也就可以了

Tanlet commented 9 years ago

那是别人的老板。2.3的份额还是有30%左右的。兼容还是有必要的。

onewilk commented 9 years ago

@Tanlet 你那是几年前的数据了啊???看看最新数据吧... http://developer.android.com/about/dashboards/index.html 你们老板如果还以这种态度去看待android市场,奉劝你还是好好拿数据说服老板,不能总背锅了...14或者15真心可以作为最低版本号了...

Tanlet commented 9 years ago

问题找到了,不是兼容性的问题(虽然这也是个大问题)! 我通过比较旧的代码知道: 在theCamera.setPreviewDisplay(holder)之前添加holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);这样是没用的。 正确的做法是: CaptureActivity{ protected void onResume() { if (isHasSurface) { initCamera(surfaceHolder); } else { scanPreview.getHolder().addCallback(this); /*这样才对***/ surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } } } 这才有效。这意味着,我TMD花一个星期时间,才写了一行代码。希望别人不知道! 0.0

onewilk commented 9 years ago

@Tanlet 上面人才不会管你究竟写了多少代码,他们只要结果...我也因为搞ant脚本的时候一个理解错误,搞了两星期才追踪解决...