摘要: 本文为作者原创,未经允许不得转载;原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/5802814.html

setMeteringArea()

android camera 类里的meteringArea可以用来设置自动白平衡和自动曝光补偿,自动对焦区域。

在此之前,我必须指出百度里关于setMeteringArea的一些错误的文章:

http://blog.csdn.net/candycat1992/article/details/21617741/

这里面的代码设计应该坑了不少人,毕竟拿来就能用,但是使用之后发现并不能准确的选择对焦区域,会跑偏。于是查阅了一下官方的说明文档。

首先,作为天朝的网民,不能用google真是个悲剧,连个官方文档都看不到,为此特意翻墙才能找到准确的说明文档:

https://developer.android.com/guide/topics/media/camera.html

有梯子的可以看一下,没有的可以看这篇,这个是国内有人翻译过来了:

http://blog.csdn.net/think_soft/article/details/7998478

getMeteringAreas注释

在Android的camera类里的getMeteringAreas函数的注释是这样的:

     * <p>Gets the current metering areas. Camera driver uses these areas to
* <p>Each metering area is a rectangle with specified weight. The
* direction is relative to the sensor orientation, that is, what the
* sensor sees. The direction is not affected by the rotation or
* mirroring of {@link #setDisplayOrientation(int)}. Coordinates of the
* rectangle range from -1000 to 1000. (-1000, -1000) is the upper left
* point. (1000, 1000) is the lower right point.

这里面只说到-1000,-1000对应视图的左上角,1000,1000对应右下角,但是没说到是映射还是从视图中点往左上1000个像素点。所以导致了第一个链接里那份错误的代码。按照那份代码的理解,是按照视图中点分别往四个方向的1000个像素点为对焦区,超过了就没有效了。但实际是映射关系,不管屏幕的分辨率是多少,竖屏还是横屏,这1000都是映射到图像预览图上的。这在area类里面有提到:

 	* <p>The Area class is used for choosing specific metering and focus areas for
* <p>Each Area consists of a rectangle specifying its bounds, and a weight
* that determines its importance. The bounds are relative to the camera's
* current field of view. The coordinates are mapped so that (-1000, -1000)
* is always the top-left corner of the current field of view, and (1000,
* 1000) is always the bottom-right corner of the current field of

实际上意思就是以下官方文档里面的图所示:

在此,我们知道点击位置后要转化成图像预览图里面的坐标再转化成1000的坐标值,再设置setMaertingArea才能正确,要不然,点击了一个亮的区域白平衡和曝光补偿没有正确调整,很大原因就是点击的坐标没有正确对应到预览图中,所以导致错误。由于预览图是不是正方形的,而设置的1000个坐标值是被拉伸了,如果要设置成正方形还要对设置的区域拉伸。





以上两个截图中红色方框中的区域是选择区域,事实证明这是对的。

android camera setMeteringArea详解的更多相关文章

  1. android:ToolBar详解

    android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...

  2. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  3. 【转】Android Canvas绘图详解(图文)

    转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...

  4. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

  5. Android GLSurfaceView用法详解(二)

    输入如何处理       若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTes ...

  6. Android编译过程详解(一)

    Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...

  7. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

  8. Android.mk文件详解(转)

    源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...

  9. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 在前面我介绍了插件开发的基本流程 [And ...

随机推荐

  1. Google Web Designer – 创建引人入胜的 HTML5 网站

    Google Web Designer 可以帮助你创建引人入胜,互动的基于 HTML5 的设计和动画,可以在任何设备上运行.如果你喜欢自己动手,设计背后的所有的代码都是可以手工编辑的. 虽然可视化工具 ...

  2. [js开源组件开发]模拟下拉选项框select

    模拟下拉选项框select 在css3流行的情况下,下拉框还是无法满足PD的需求,所以有了autosearch,有了模拟下拉框.效果如下图: select DEMO请案例点击这里查看.http://w ...

  3. 苹果浏览器和uc浏览器在移动端的坑(日常积累,随时更新)

    先mark 1 .  移动端uc浏览器不兼容css3 calc() 2 .  ie8下a标签没有内容给宽高也不能触发点击跳转 3 . safari输入框加上readOnly="ture&qu ...

  4. easyui1.3.2中使用1.3.6或1.4.x的calendar

    首先在1.3.2中calendar控件不支持日历某天的颜色进行改变,和自定义回调函数 Name Type Description Default width number The width of c ...

  5. js异步编程

    前言 以一个煮饭的例子开始,例如有三件事,A是买菜.B是买肉.C是洗米,最终的结果是为了煮一餐饭.为了最后一餐饭,可以三件事一起做,也可以轮流做,也可能C需要最后做(等A.B做完),这三件事是相关的, ...

  6. Android TextView走马灯效果

    布局: <TextView android:id="@+id/myTextView" android:layout_width="match_parent" ...

  7. 将自己写的库上传到cocoapods(2015)

    2015年以前上传到cocoapods的方式相较于现在比较麻烦,现在用不上在此也就不提了.现在上传到cocoapods只需要简单的几步即可. 1.首先你需要有一个自我感觉写的差不多的库. 2.注册tr ...

  8. android 图片加载库 Glide 的使用介绍

    一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...

  9. HDOJ1001-1005题解

    1001--Sum Problem(http://acm.hdu.edu.cn/showproblem.php?pid=1001) #include <stdio.h> int sum(i ...

  10. 关于插件管理器Alcatraz

    如何安装插件管理器Alcatraz:去github下载一个Alcatraz安装包,然后运行一下. 会弹出 记得选择左边的Load Bundle 退出Xcode 重新运行一下就OK 了. 然后就可以看到 ...