Android相机实时自动对焦的完美实现

https://zhidao.baidu.com/question/873328177698804372.html

Android相机实时自动对焦的完美实现 http://blog.csdn.net/huweigoodboy/article/details/51378751

如何实现Android手机摄像头的的自动对焦 http://www.open-open.com/lib/view/open1406536473812.html

android 前置摄像头可以autofocus方法:第一:最常见的实现---利用按键或拍照前一次性自动聚焦在Activity里申明变量privateAutoFocusCallback myAutoFocusCallback = null;然后自动聚焦变量回调

myAutoFocusCallback = new AutoFocusCallback(){

public void onAutoFocus(boolean success, Cameracamera) {

// TODO Auto-generated method stub

if(success)//success表示对焦成功

{

Log.i(tag, "myAutoFocusCallback:success...");

//myCamera.setOneShotPreviewCallback(null);

}

else

{

//未对焦成功

Log.i(tag, "myAutoFocusCallback: 失败了...");

}

}

};

在Camera.startPreview()之后,拍照Camera.takePicture()之前调用myCamera.autoFocus(myAutoFocusCallback)。

第二:通过TimerTask设置一个定时器来循环,每隔一定时间调用myCamera.autoFocus(myAutoFocusCallback)一次。结果是摄像头一直在自我聚焦,重复清晰--模糊----清晰---模糊的过程。

第三:通过Handler和Thread,开启一个线程进行自动聚焦。本质和第二种是一样的。后续我会写一个demo发上来。

第四:通过监听传感器来触发autoFocus。常用的是角度传感器加速度传感器,当监听的值超过一定阈值时触发。这也是国外程序员们常用的思路。

第五:设置聚焦方式为myParam.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);Continuous auto focus mode intended for videorecording. The camera continuously tries to focus. This is the bestchoice for video recording because the focus changes smoothly .Applications still can call takePicture(Camera.ShutterCallback,Camera.PictureCallback,Camera.PictureCallback) in this modebut the subject may not be in focus. Auto focus starts when theparameter is set.Since API level 14, applications cancall autoFocus(AutoFocusCallback) inthis mode. The focus callback will immediately return with aboolean that indicates whether the focus is sharp or not. The focusposition is locked after autoFocus call. If applications want toresume the continuous focus, cancelAutoFocus must be called.Restarting the preview will not resume the continuous autofocus. Tostop continuous focus, applications should change the focus mode toother modes.意思是在录像的时候调用这种聚焦方式好,在拍照情况下这种聚焦方式可能不成功。设置之后myParam.set("rotation",90); 这句话的设置不起作用。拍摄得到的照片和预览的方向是错90度的。需要得到Bitmap之后,利用Matrix自己旋转下。旋转示例:mBitmap = BitmapFactory.decodeByteArray(data, 0,data.length);//data是字节数据,将其解析成位图myCamera.stopPreview();isPreview = false;设置FOCUS_MODE_CONTINUOUS_VIDEO)之后,myParam.set("rotation",90)失效。图片竟然不能旋转了,故这里要旋转下Matrix matrix = new Matrix();matrix.postRotate((float)90.0);Bitmap rotaBitmap = Bitmap.createBitmap(mBitmap,0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix,false);设置成FOCUS_MODE_CONTINUOUS_VIDEO之后,再调用Camera.autoFocus()会聚焦失败。 

第六: 就是通过分析onPreviewFrame得到预览帧视频,分析亮度变化,来触Camera.autoFocus()。如果亮度变化,肯定是摄像头和被拍摄物体之间发生了相对运动,需要触发autoFocus()。某些手机里自带的拍照软件可能就是采用这种方式。
时间: 2024-12-24 18:18:09

Android相机实时自动对焦的完美实现的相关文章

Android相机开发详解(一)

Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android相机开发能够实现打开相机,前后摄像头切换,摄像预览,保存图片,浏览已拍照图片等相机功能. Android相机开发详解(一)主要实现打开相机,摄像预览,前后置摄像头切换,保存图片等四个功能. Android相机开发详解(二)主要实现翻页浏览相片,触控缩放浏览图片,删除图片,发送图片等四个功能. Andro

Android相机开发那些坑

版权声明:本文由王梓原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/168 来源:腾云阁 https://www.qcloud.com/community 最近我负责开发了一个跟Android相机有关的需求,新功能允许用户使用手机摄像头,快速拍摄特定尺寸(1:1或3:4)的照片,并支持在拍摄出的照片上做贴纸相关的操作.由于之前没有接触过Android相机开发,所以在整个开发过程中踩了不少坑,费了不少时间和精力.这篇文章总

组长问我几天能开发一个人见人爱的百万量级Android相机,我是这样回答的...

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由QQ空间开发团队发表于云+社区专栏 最近我负责开发了一个跟Android相机有关的需求,新功能允许用户使用手机摄像头,快速拍摄特定尺寸(1:1或3:4)的照片,并支持在拍摄出的照片上做贴纸相关的操作.由于之前没有接触过Android相机开发,所以在整个开发过程中踩了不少坑,费了不少时间和精力.这篇文章总结了Android相机开发的相关知识.流程,以及容易遇到的坑,希望能帮助今后可能会接触Android相机开发的朋友快速上手,节省时

Android相机应用开发实例

在学习直接调用本地相机获取照片之前,我想最好还是根据Android给的相机API自己开发一个简单的相机,对于相机的运作过程有一个基本的了解. 第一步,建立SurfaceView显示预览(拍照之前) activity_main.xml文件定义FrameLayout布局,用一个button来实施拍照行为 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h

东拼西凑写的android 相机例子,包含一些遇到的坑

闲扯:最近开始学android开发,还好有些java基础,直接找了个android教程的视频,边学边写.本来我是很懒惰的.不打算写博客,但是在写这个自定义相机的时候,坑还真是不少.容我吐槽下,那些没事儿转载的,搜来搜去都是一样的内容,真是给跪了. 话入正题,本代码是跟着视频里写的,然后又完善的.首先说的一点,就是真的不难,但是很坑:相机写好后,调试了下,有个问题,就是相片很模糊.大小只有200kb,直接说原因,就是没有设置,parameters.setPictureSize(picSize.wi

Android Camera 实时滤镜(八)

一.Android Camera可以做哪些? 1.功能 拍摄相片 视频录制 取景器(扫描类应用,如人脸识别,名片识别,条形码识别) 2.根据Camera API实现自己的拍照程序,共7步 Created with Rapha?l 2.1.21.初始化 SurfaceHolder2.相机实例 SurfaceCreated3.回调 SurfaceChanged4.清理 SurfaceDestroyed5.布局 SurfaceView6.按钮 添加拍照按钮 二.Camera Preview是什么? 摄

开源分享二(Android相机开发实战)

开源分享二(Android相机开发实战) 开源分享 一(StickerCamera + 仿微信多图选择) 前言 上篇博文给大家分享了两个非常实用的项目功能模块,不知道大伙感觉如何?有木有一种臭袜子味扑鼻,酸爽的赶脚!!!贱笑贱笑了~ ~ OK!不扯淡了,言归正传.本文将主要为大家介绍Android中自定义相机的开发,做Android应用的童鞋应该都知道,在应用中使用相机功能有两种方式: 调用Camera API 自定义相机 调用系统相机 由于需求不同,所以选择的方案固然也不同,至于第二种调用系统

Android JIT实时编译器的设置

在Android  JIT实时编译是在Android 2.2之后才引入的,JIT编译器可以显著的提高机器的性能,经过测试,android 2.2的性能较android 2.1提高了 2-5倍.JIT提高机器性能的原因是: 1.JIT实时编译器将dalvik字节码转化为本地代码. 2.本地代码直接由CPU执行,而不必有dalvik虚拟机解释执行. 3.本地代码可以针对特定架构进行优化. 对于应用是否要启用dalvik可以在manifest文件中进行配置 Android 2.2及以后是默认开启的,可

Android端实时音视频开发指南

简介 yun2win-sdk-Android提供Android端实时音视频完整解决方案,方便客户快速集成实时音视频功能. SDK 提供的能力如下: 发起 加入 AVClient Channel AVMember yun2win官网:www.yun2win.com SDK下载地址:http://www.yun2win.com/h-col-107.html 开发准备 注册并创建应用 到 github下载yun2winSDK及demo 下载源码详解 app为主体显示Module uikit为公共服务M