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程序设计有所帮助。

时间: 2024-09-20 05:20:45

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

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

本文实例讲述了Android自定义照相机Camera出现黑屏的解决方法.分享给大家供大家参考,具体如下: 对于一些手机,像HTC,当自定义Camera时,调用Camera.Parameters的 parameters.setPreviewSize(width, height)方法时,如果width和height为奇数情况下,则会出现黑屏现象,解决办法可参考SDK提供的ApiDemos中关于Camera的 例子: List<Size> sizes = parameters.getSupporte

Android界面切换出现短暂黑屏的解决方法_Android

这种问题一般是因为一个Activity启动之后在显示视图之间时间太长导致的. 1.优化方式可以通过精简layout文件.多线程处理数据载入等. 2.但是有些Activity的layout文件可能比较大,如果不能动态载入,在显示之前解析xml的时间可能耗时比较长比如500-1000ms. 这个时候Activity会先显示默认的黑色背景图,所以会出现黑屏的情况.对于这种情况我们可以在Application的Theme中添加 复制代码 代码如下:  <item name="android:win

Android界面切换出现短暂黑屏的解决方法

这种问题一般是因为一个Activity启动之后在显示视图之间时间太长导致的. 1.优化方式可以通过精简layout文件.多线程处理数据载入等. 2.但是有些Activity的layout文件可能比较大,如果不能动态载入,在显示之前解析xml的时间可能耗时比较长比如500-1000ms. 这个时候Activity会先显示默认的黑色背景图,所以会出现黑屏的情况.对于这种情况我们可以在Application的Theme中添加 复制代码 代码如下:  <item name="android:win

Android开发中Activity之间切换出现短暂黑屏的解决方法_Android

本文实例讲述了Android开发中Activity之间切换出现短暂黑屏的解决方法.分享给大家供大家参考,具体如下: 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等.同样,使用startActivity(inte -- 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初 始化列表数据.向服务器发送请求获取数据等等.同样,使用s

Android开发中Activity之间切换出现短暂黑屏的解决方法

本文实例讲述了Android开发中Activity之间切换出现短暂黑屏的解决方法.分享给大家供大家参考,具体如下: 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等.同样,使用startActivity(inte -- 在默认情况下,Android应用程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初 始化列表数据.向服务器发送请求获取数据等等.同样,使用s

分辨率过高导致xp系统黑屏的解决方法

  分辨率过高导致xp系统黑屏的解决方法           首先在开机的时候按F8进入windows高级选项菜单,选择启用VGA模式进入系统. 然后在显示属性中调整适合自己的电脑的屏幕分辨率即可.

电脑安装KeyShot软件后打开出现黑屏的解决方法

  电脑安装KeyShot软件后打开出现黑屏的解决方法          1.KeyShot软件的资源路径如果设置了中文路径,那么会导致KeyShot无法识别环境,无法加载,从而导致黑屏,这时需要依次点击编辑--首选项--文件夹,把对应的文件夹根据安装目录进行修改即可; 2.很多电脑是ATI显卡配置,而KeyShot默认设置了针对n卡的GPU加速,我们可以在编辑--首选项--高级里,取消勾选"图形特效",并重新打开软件即可.

Win8系统安装显卡驱动后造成系统黑屏的解决方法

  Win8系统虽然提升了不少性能,也获得了很多用户的喜爱.但是,依然避免不了一些不可测问题的发生.最近,就有一些Win8用户反映自己在安装完显卡驱动之后,系统却突然出现黑屏,有的时候黑屏是灯还是亮的,只是屏幕什么都没有,有的时候还会一闪一闪的.这是怎么回事呢?小编想可能是驱动不兼容的问题吧.那Win8黑屏为什么跟显卡驱动存在关系呢?接下来小编就向大家分享Win8系统装完显卡驱动后出现黑屏问题的处理方法.. Win8系统安装显卡驱动后造成系统黑屏的解决方法 具体方法 1.按桌面左下角的win键,

Win8电脑启动后黑屏的解决方法

  电脑黑屏的问题真是越来越严重了,最近有位win8系统的用户来和小编反映说,他家的win8系统开机经常遇到黑屏的现象,该如何解决呢?其实小编这里要告诉大家说,win8系统电脑开机出现黑屏有两种状况,一种是可以看到Windows的Logo,还有一种是直接黑屏完全没有图像,针对这两种状况的解决方法不同,下面小编就来教大家Win8电脑启动后黑屏的解决方法. 操作方法如下: 一.在电脑启动时刻能看到画面与Windows字样,但进入系统后黑屏 电脑系统设置的分辨率不正确,常见于笔记本重装系统后错误地设置