头疼的相机问题setParameter failed、getParameter failed

最近在弄android的自定义相机,是在JCameraView的基础上改装的。还是有一些会报错:setParameter failed、getParameter failed。我们的用户大概在3000-4000,错误大概为一天十次左右,客服没有收到相关问题崩溃的回馈。查到的各种解决方法:
1.setParameters不要用以下几句:

parameters.setPreviewSize(100, 120);// 设置预览照片的大小
parameters.setPictureFormat(ImageFormat.JPEG);//设置图片格式
parameters.setPictureSize(100, 120);// 设置照片的大小

这里确实用了,问题是不用也不行啊,我的小米5x的手机不设置图片大小就会只显示中间的三分之一,预览部分则会变形,此处已经对支持的尺寸进行处理,保守治疗,这里先不改。

2.setParameters可能是首次对焦没有延时,相机还没准备好
这条还是可以改的,直接价格延时搞定

3.getParameters failed可能是因为释放后还用,或者多线程多个线程用
以下来源于stackoverview:
Probably the most common reason would be closing/releasing the camera while still using it afterward. This can be especially problematic if you are using the Camera object on multiple threads without synchronizing access to the Camera. Make sure you only ever have a single thread accessing the Camera at a time.
查了一下,确实有多线程,但是有同步,此处我不需要转摄像头,可以直接用在主线程,所以直接把camera扔主线程,同步方法相关synchronized关键字全删,只留了一个单例的双重所里的synchronized.

纯猜测改:
1.所有getParameters根据场景不同判断camera==null和isPreviewing,确保不用释放后的相机
2.所有setParameters都加try…catch…,非崩溃情况避免系统捕捉。

我知道这样改并不好,实际没有找到问题根源。可是公司的几十部测试手机都测过了,没有出现崩溃、卡顿等现象,只能这样改再通过用户实际使用的反馈结果判定了,期望能解决问题吧。

猜你喜欢

转载自blog.csdn.net/yu_duan_hun/article/details/80655492