Android Camera1开发系列连载:

Android Camera1详解

Android Camera1显示预览的四种方式

对焦模式

在使用特定的对焦模式的时候,必须确保相机支持该模式,相机支持的对焦模式可以通过Parameters#getFocusMode接口来获取:

常用的对焦模式为:

// 连续自动对焦caf,预览场景变化时会自动去对焦Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEOCamera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE// 单次自动对焦af,下发一次请求则对焦一次Camera.Parameters.FOCUS_MODE_AUTO

对焦区域

当对焦模式为caf或者af时,可以指定对焦区域,如果未设置,则驱动程序将会自己选择焦点目标,看一张来自官网描述对焦坐标系的图:

如图所示,无论屏幕是横屏还是竖屏,预览视图的中心点坐标都是(0,0),左上角为(-1000,-1000),右下角为(1000,1000)

在计算屏幕坐标系中的UI点击坐标(x,y)到sensor对焦坐标系对焦区域focusRect的时候,还需要考虑预览的旋转角和前置镜像,计算过程大致如下:

设置对焦区域的时候,需要先查询一下可设置对焦区域的最大个数:

// 返回0的时候表示不支持设置对焦区域,通常都是返回1// 当返回个数大于1的时候,可以设置对焦区域列表,// 每个对焦区域可以设置权重,权重范围为1~1000Parameters#getMaxNumFocusAreas

常见对焦模式的切换场景

单拍时,先对焦再拍照,拍照结束后切换到caf

连拍时,先对焦再拍照,连拍结束后切换到caf

触屏对焦TouchAF后,可以进行锁焦,预览场景变化时再转为caf;或者设置超时机制,3-5s后从af转为caf。不同手机的系统相机中选择的策略不同,主流策略大概就这两种

af切换到caf的时候,需要切换对焦模式和callback,从af切换到caf:

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);camera.setAutoFocusMoveCallback(cafCallback);

从caf切换到af:

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);camera.autoFocus(afCallback);

对焦画框逻辑

autoFocus流程:五种状态,三类UI

// 三类UI:正在对焦画白框,对焦成功画绿/黄框,失败画红框// 五种状态IDEL // focus is not activeFOCUSING // focus is in progressFOCUSING_SNAP_ON_FINISH // will take picture after focus finishSUCCESS  // focus finished and successFAIL     // focus finished and fails

autoFocusMoving流程:三种状态,两类UI

// 两类UI:moving的时候画白框,对焦成功画绿/黄框,超时直接清除UI// 三种状态MOVING_START // caf startMOVING_END  // caf endTIMEOUT     // time out

上面的显示策略对对焦状态的展示是很明晰的,不过现在的主流相机app都不会搞这么复杂,比如我手头的iPhone和小米手机的系统相机就没这么多颜色切换

测光

测光的坐标系和使用流程与对焦是一样的,就不具体描述了。

在TouchAF的时候,测光区域可以和对焦区域一样,也可以区域中心点相同,而框的大小不同,或者对焦区域和测光区域设置为不同区域,这种焦侧分离的功能一般都是在相机app中的专业模式中提供。考虑用户体验选择不同的策略即可

常见测光方式

注:Redmi k30 5G版 系统相机专业模式

点测光:对画面中较小的区域(占整体面积的1.5% - 3%)进行测光,不考虑周边环境亮度,测光点所侦测的画面非常小,结果比较精确。这种测光模式适合用于场景光线反差大,或者主体在画面中所占比例较小的时候使用;

中央重点测光:测光重点放在画面的中心约75%的区域。在光线色差反差较大的情况下,这种测光模式比矩阵测光更容易控制效果;

平均测光:又叫矩阵测光,对画面中整体区域的光线强弱和色彩等情况进行侦测分析后,得到一个平均比较科学的测光值。这种测光模式适合在场景中光线、色彩等反差 不大的情况下使用;

以下面这张照片为例,在逆光场景下展示花瓣的纹路,为了让花瓣显得通透一点,可以采用点测光模式进行拍摄

测光方式的选择依赖于芯片提供支持或者相机Turing实现,在标准api中是没有直接提供相关接口的

该功能多见于系统相机专业模式,一般在第三方的相机类app启动相机预览后,都是默认的中央重点测光。第三方相机要实现测光方式的选择,除了依赖于厂商提供支持外,其实也可以自己研究一套AE权重表然后利用OpenGL来实现

android 测光模式,Android Camera1中的对焦与测光相关推荐

  1. android触屏对焦_Android相机开发(五): 触摸对焦,触摸测光,二指手势缩放

    Android Camera Develop: touch to focus, touch to metering, double finger touch to zoom 概述 本篇在(四)的基础上 ...

  2. Android直播软件搭建中实用的录制编辑方案有哪些

    Android直播软件搭建中实用的录制编辑方案有哪些 经大量数据显示,直播已经发展成为一种全民参与.共享和生产的文化现象.它的火爆不仅丰富了大众的艺术审美水平和精神文化,而且也影响了一代人的世界观.人 ...

  3. Android相机开发: 触摸对焦,触摸测光,二指手势缩放

    转自此处 概述 本篇在(四)的基础上继续对相机APP的功能进行增强.触摸对焦,就是在屏幕上点击某个点,相机就以此点内容进行对焦,保证此点最清晰:触摸测光,就是在屏幕上点击某个点,相机调整曝光亮度,保证 ...

  4. 如何基于 Agora Android SDK 在应用中实现视频通话?

    在很多产品,实时视频通话已经不是新鲜的功能了,例如视频会议.社交应用.在线教育,甚至也可能出现在一些元宇宙的场景中. 本文将教你如何通过声网Agora 视频 SDK 在 Android 端实现一个视频 ...

  5. 【Android】Fragment官方中文文档

    以下内容来自Android官方文档. Fragment 表示 Activity 中的行为或用户界面部分.您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity ...

  6. android socket握手,HttpURLConnection抛出java.net.SocketTimeoutException:在Android 4.1.1中SSL握手超时...

    在Android 5.0及更高版本中运行时,我的代码运行正常.但是在Android 4.1.1中它会抛出java.net.SocketTimeoutException:SSL握手超时. URL url ...

  7. android 读取sd卡中的图片

    一.获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permissio ...

  8. android 实现自定义监听接口,Android在自定义类中实现自定义监听器方式

    Android在自定义类中实现自定义监听器方式 发布时间:2020-08-31 06:19:39 来源:脚本之家 阅读:203 作者:Simon_Qi 监听器可以说是Android开发中最常用的东西之 ...

  9. android如何获取listview中的任意行数据

    android如何获取listview中的任意行数据 @Override public void onItemClick(AdapterView<?> arg0, View arg1, i ...

最新文章

  1. Microsoft Dynamics CRM 2011 多客户端安装共用同一Sql Server 实例设置
  2. mysql 目录武沛齐_MySQL数据表中的数据操作
  3. 深度学习之常见tricks
  4. 全自动化虽然还早,但机器人劳力确实越来越便宜了
  5. 110+优秀作品、20+热门领域曝光, 高通如何玩转“AI 的夏天”!
  6. [转载] Java中的关键字含义以及介绍
  7. 出埃及记:摩西劈开红海
  8. SSCOM的模拟连接测试及服务器连接
  9. CentOS7详细安装教程--图文介绍超详细
  10. java谷歌翻译_Java 调用 google 翻译
  11. moments音标_moment是什么意思_moment的翻译_音标_读音_用法_例句_爱词霸在线词典...
  12. matlab 字符串 倒序,MATLAB tip
  13. She Will Be Loved
  14. 用Python计算现在距离春节还剩多长时间
  15. BandwagonHost 5个数据中心/机房Ping速度测试亲自体验
  16. 打造金融科技新生态,巨杉数据库与宇信科技完成产品兼容互认证
  17. 【2022 CCPC 桂林站 日志】部分题解
  18. 一个或多个数据库无法访问,因而不会在数据库访问选项卡中显示
  19. 区块链中的Merkle Tree
  20. Unity使用艺术字体

热门文章

  1. 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!
  2. docker-compose安装rabbitmq
  3. qt最大化和还原实现_研究进展 | 水生所关于细菌异化型硝酸盐还原成铵与反硝化脱氮两种途径抉择的分子调控机制研究取得进展...
  4. java list 字段去重_java list 根据对象一个字段去重
  5. python期末考试重点_如何应付大学的python考试而不至于挂科?
  6. java下载json需要的包_jenkins 获取插件,下载插件提速,配置国内镜像
  7. C语言 数组排序 – 冒泡法排序 - C语言零基础入门教程
  8. Linux java 生效不了,linux jdk 不生效怎么办
  9. mysql binlog 订阅_数据库binlog订阅和消费组件canal快速入门
  10. php启动 大量sess文件,关于PHP中Session文件过多的问题