Android自定义照相机Camera出现黑屏的解决方法

 更新时间:2016年08月15日 11:52:12   作者:llyofdream  
这篇文章主要介绍了Android自定义照相机Camera出现黑屏的解决方法,分析了黑屏出现的原因及参考解决方法,需要的朋友可以参考下

本文实例讲述了Android自定义照相机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;
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android拍照与图片处理技巧总结》、《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • Android自定义标尺滑动选择值效果

    Android自定义标尺滑动选择值效果

    这篇文章主要为大家详细介绍了Android自定义标尺滑动选择值效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Android重写View实现全新的控件

    Android重写View实现全新的控件

    这篇文章主要介绍了Android重写View来实现全新的控件,最难的一种自定义控件形式,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • android随机生成圆形云标签效果

    android随机生成圆形云标签效果

    这篇文章主要为大家详细介绍了android随机生成圆形云标签效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android实现倒计时方法汇总

    Android实现倒计时方法汇总

    这篇文章主要为大家详细总结了Android实现倒计时的3种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android RadioButton 图片位置与大小实例详解

    Android RadioButton 图片位置与大小实例详解

    这篇文章主要介绍了Android RadioButton 图片位置与大小实例详解的相关资料,这里提供实例代码及实现效果图,需要的朋友可以参考下
    2016-11-11
  • Android10 Binder原理概述深入解析

    Android10 Binder原理概述深入解析

    这篇文章主要为大家介绍了Android10 Binder原理概述深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Android开发升级AGP7.0后的一些适配方法技巧

    Android开发升级AGP7.0后的一些适配方法技巧

    这篇文章主要为大家介绍了升级AGP7.0后的一些适配方法技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android手机联系人带字母索引的快速查找

    Android手机联系人带字母索引的快速查找

    这篇文章主要为大家详细介绍了Android手机联系人带字母索引的快速查找实现方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Android实现串口通信

    Android实现串口通信

    这篇文章主要为大家详细介绍了Android实现串口通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Flutter状态管理Provider示例解析

    Flutter状态管理Provider示例解析

    这篇文章主要为大家介绍了Flutter状态管理Provider示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论