java.lang.RuntimeException: setParameters failed

在使用相机的时候经常会遇到这种问题,尤其是自定义相机的,之前在三星上解决了好久,解决方案没有记录忘记怎么解决来着,此次专门做个记录,最进在最新的锤子手机上又复现了,总结出来的就是不支持设置的尺寸大小,报错的位置

camera.setParameters(p);

这是因为个别机型在SupportPreviewSizes里汇报了支持某种预览尺寸,但实际是不支持的

//寻找最佳预览尺寸
Camera.Size previewSize = findBestPreviewSize(p);
//设置预览大小
p.setPreviewSize(previewSize.width, previewSize.height);
//设置图片大小
p.setPictureSize(previewSize.width, previewSize.height);
try {
   camera.setParameters(p);
}catch (Exception e1)
{
   e1.printStackTrace();
}

以上是我的部分源码,在锤子手机上报错了,后来在其他源码看到人家是把p.setPreviewSize跟p.setPictureSize分开来
try catch的,这时候就知道是设置哪个参数报错了,以下是参照解决的源码
try {
    mCamera.setParameters(params);
} catch (Exception e) {
    //非常罕见的情况
    //个别机型在SupportPreviewSizes里汇报了支持某种预览尺寸,但实际是不支持的,设置进去就会抛出RuntimeException.
    e.printStackTrace();
    try {
        //遇到上面所说的情况,只能设置一个最小的预览尺寸
        params.setPreviewSize(1920, 1080);
        mCamera.setParameters(params);
    } catch (Exception e1) {
        //到这里还有问题,就是拍照尺寸的锅了,同样只能设置一个最小的拍照尺寸
        e1.printStackTrace();
        try {
            params.setPictureSize(1920, 1080);
            mCamera.setParameters(params);
        } catch (Exception ignored) {
        }
    }
}
我的报错是在p.setPreviewSize被捕获了,我把这两个分开try catch了还是报错,
原因是p.setPictureSize(previewSize.width, previewSize.height);这个尺寸不支持,
把p.setPictureSize改成固定的尺寸就可以了
 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值