Camera黑屏问题

对于一些手机,像HTC,当自定义Camera时,调用Camera.Parameters的 parameters.setPreviewSize(width, height)方法时,如果width和height为奇数情况下,则会出现黑屏现象,解决办法可参考SDK提供的ApiDemos中关于Camera的 例子:

List<Size> sizes = parameters.getSupportedPreviewSizes();

Size optimalSize = getOptimalPreviewSize(sizes, w, h); parameters.setPreviewSize(optimalSize.width, optimalSize.height);

同时,在HTC手机中,设置parameters.setPictureSize(width,height)属性,也会导致黑屏,而在三星手机上则没有问题。还有如果设置setPreviewSize属性的宽高错误的话,拍出的照片也会存在失真等Bug,所以遇到适配问题时,最好的办法就是不设置PreviewSize和PictureSize属性。

getOptimalPreviewSize方法

private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {   final double ASPECT_TOLERANCE = 0.05;   double targetRatio = (double) w / h;   if (sizes == null)    return null;

  Size optimalSize = null;   double minDiff = Double.MAX_VALUE;

  int targetHeight = h;

  // Try to find an size match aspect ratio and size   for (Size size : sizes) {    double ratio = (double) size.width / size.height;    if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)     continue;    if (Math.abs(size.height - targetHeight) < minDiff) {     optimalSize = size;     minDiff = Math.abs(size.height - targetHeight);    }   }

  // Cannot find the one match the aspect ratio, ignore the requirement   if (optimalSize == null) {    minDiff = Double.MAX_VALUE;    for (Size size : sizes) {     if (Math.abs(size.height - targetHeight) < minDiff) {      optimalSize = size;      minDiff = Math.abs(size.height - targetHeight);     }    }   }   return optimalSize; }

转载于:https://www.cnblogs.com/lyz459/p/3140248.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值