1,相机对焦模式有以下几种:

auto  //自动
infinity //无穷远
macro //微距
continuous-picture //持续对焦
fixed //固定焦距
 

2,常见对焦模式切换场景

2.1,单拍时,会先对焦再拍照,再切换到CAF;

        有一个从 af 切换到 caf 过程

2.2,连拍时,会先对焦再拍照,连拍完成,再切换到 CAF;

        同样一个从 af 切换到 caf 过程

2.3,触屏对焦,过一段时间(2s-3s)会自动切换到CAF; (对焦锁定2s-3s)

        也是从af 切换到 caf 过程
 
这三个场景都涉及到从 af 切换到 caf 过程,这个切换过程有两个地方需要注意:
一是focus-mode 要切换过来,并且设置到底层
mParameters.setFocusMode("auto");
mParameters.setFocusMode("continuous-picture");
 
二是相应的回调也要切换过来,设置到底层
mActivity.getCameraDevices().autoFocus(mAutoFocusCallback);
mActivity.getCameraDevices().setAutoFocusCallBack(mAutoFocusMoveCallback);
这两个步骤缺一不可。
 

3,对焦画框逻辑

3.1, autoFocus 流程中会有三类图片,五种状态

三类图片很好理解,正在对焦画白框,对焦成功画绿框,对焦失败画红框
五种状态分别为:
    public static final int STATE_IDLE = 0; // Focus is not active.
    public static final int STATE_FOCUSING = 1; // Focus is in progress.
    // Focus is in progress and the camera should take a picture after focus finishes.
    public static final int STATE_FOCUSING_SNAP_ON_FINISH = 2;
    public static final int STATE_SUCCESS = 3; // Focus finishes and succeeds.
    public static final int STATE_FAIL = 4; // Focus finishes and fails.
 

3.2, autoFocusMoving 流程中只有两类图片,三种状态

autoFocusMoving 的回调中有一个参数即 moving 判断当前是否正在运动,若运动则该参数值为 true,否则为 false。正常流程即判断到在运动(切换场景)即开始对焦,画白框;稳定后(对焦成功),画绿框;还有一种状态即为对焦超时,此时会直接清除白框。
log会有类似这种显示:
     onAutoFocusMoving moving = true
     onAutoFocusMoving moving = false
     onAutoFocusMoving timeout
 

3.3, 对焦框 与 人脸框 是互斥的,会在代码中看到类似这种逻辑

        // Ignore if the camera has detected some faces.
        if (mFaceView != null && mFaceView.faceExists()) {
            mFocusIndicatorRotateLayout.clear();
          }
 

4,相机专业模式中是如何做到这几种对焦逻辑切换的

auto  //自动
infinity //无穷远
macro //微距
continuous-picture //持续对焦
手机所搭载的摄像头一般都是定焦的,只是各个焦段的特性不一样,即只有一个焦平面是可以合焦的。因此在无穷远和微距模式下都是通过事先写在驱动中的一些参数去设置的。auto和continuous-picture 是摄像头本身就支持的对焦模式,可以把 continuous-picture理解为程序在检测到场景变化时自动autoFocus。
 
转自:http://blog.csdn.net/fulinwsuafcie/article/details/49558001

Camera中对焦模式总结的更多相关文章

  1. camera中LENS和SENSOR的CRA是如何搭配的?

    camera中LENS和SENSOR的CRA是如何搭配的? camera中,lens和sensor的搭配是非常关键的问题.但这两者是如何搭配的呢? 一般在Sensor data sheet中会附有全视 ...

  2. android Camera 中添加一种场景模式

    转自:http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一 ...

  3. 【转】android Camera 中添加一种场景模式

    http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一篇文章 ...

  4. android Camera 中如何修改缩放变焦参数

    如何修改 zoomRatio   修改过程:   1, 先找到 gZoomRatio 数组序列的值   Location: V:\project_code\project_name\ALPS.JB.M ...

  5. Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 ? 1 2 3 4 5 6 try {      Intent cameraIntent = new In ...

  6. Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

    一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...

  7. Android 新老两代 Camera API 大起底

    https://blog.csdn.net/Byeweiyang/article/details/80515192 0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片.视频的噪点.色温.明暗 ...

  8. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  9. 摄像头(5)使用Camera2 替代过时的Camera API

    转自: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0428/2811.html 概要 从5.0开始(API Level 21 ...

随机推荐

  1. 【原】UIView实现点击着重效果的解决方案

    我们知道,在IOS中UIButton UIControl都有一个默认的选中效果,即点中后会图标会变暗,移开后又恢复正常.如何让UIView UIImageView等这些普通的view也实现同样的效果呢 ...

  2. C语言-04-函数

    函数 函数是一组一起执行任务的语句,函数是一个可执行C程序必不可少的条件(至少一个main()函数),函数的定义形式 returnType functionName() { bodyOf of the ...

  3. HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

    什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...

  4. js地理位置获取、显示、轨迹绘制

    JS新API标准 地理定位(navigator.geolocation) 基于 html5 geolocation来获取经纬度地址 Html5 Geolocation获取地理位置信息 HTML5获取地 ...

  5. java中使用split分割字符串一个有趣的现象

    最近在项目中,发现了一个bug,充分了展示了自己对java底层的认知有很多的不足和欠缺. 下面有段代码: String str="1#2#3"; String[] strs=str ...

  6. Requirejs2.0笔记

    API http://requirejs.org/ RequireJS 插件 http://requirejs.org/docs/api.html#plugins ①require.js脚本的异步加载 ...

  7. HBase 高性能加入数据 - 按批多“粮仓”式解决办法

    摘要:如何从HBase中的海量数据中,以很快的速度的获取大批量数据,这一议题已经在<HBase 高性能获取数据>(http://www.cnblogs.com/wgp13x/p/42451 ...

  8. linux下开启SSH,并且允许root用户远程登录,允许无密码登录

    参考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允许root用户远程登录 修改ssh服务配置文件 sudo vi /etc/ssh ...

  9. openssl c_rehash

    一.简介 c_rehash 为文件创建一个符号连接,并将此符号连接的名称设为文件的hash值,作用是让openssl在证书目录中能够找到证书. 二.语法 c_rehash [-old] [-h] [- ...

  10. docker基础命令详解

    Commands: attach    Attach to a running container build     Build an image from a Dockerfile commit  ...