android 自定义照相机Camera…
2015-04-13 16:51
441 查看
对于一些手机,像HTC,当自定义Camera时,调用Camera.Parameters的parameters.setPreviewSize(width,
height)方法时,如果width和height为奇数情况下,则会出现黑屏现象,解决办法可参考SDK提供的ApiDemos中关于Camera的例子:
List 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 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;
}
height)方法时,如果width和height为奇数情况下,则会出现黑屏现象,解决办法可参考SDK提供的ApiDemos中关于Camera的例子:
List 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 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 自定义ViewGroup和对…
- Android自定义View&nbsp;控件
- 自定义 Android 日志类 分类: Android开发 2014-05-30 10:53 106人阅读 评论(0) 收藏
- Android中自定义照相机Camera详解
- android 自定义照相机Camera黑屏 (转至 http://blog.csdn.net/chuchu521/article/details/8089058)
- Android 自定义属性动画&Camera动画
- Android&nbsp;设置全屏及自定义标题栏
- 自定义android控件——TextView&nbsp;并添…
- android:&nbsp;源码模块自定义
- android使用自定义标题时提示“you cannot combine custom titles with other  ”
- Android自定义照相机Camera出现黑屏的解决方法
- android 自定义照相机Camera黑屏
- 【转】android 自定义progres…
- 自定义&nbsp;Android&nbsp;对话框&amp;…
- 自定义&nbsp;Android&nbsp;日志类
- 自定义android控件——TextView&nbsp;并添…
- Android 自定义类库打包jar!…
- Android Camera sensor…
- Drupal&nbsp;6&nbsp;自定义用户登陆、注册页…
- android&nbsp;apk文件导出(签名版)