如何实现Android相机的自动对焦,而且是连续自动对焦的。当然直接调用系统相机就不用说了,那个很简单的。下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对焦。

代码如下:

public class MainActivity extends Activity {

private SurfaceView surfaceView;

private SurfaceHolder surfaceHolder;

private boolean flag = false;

private String fileUrl="";

Camera camera;

Camera.Parameters parameters;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);

Button button=(Button) findViewById(R.id.takepicture);

surfaceHolder = surfaceView.getHolder();

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

surfaceHolder.setKeepScreenOn(true);

surfaceView.setFocusable(true);

surfaceView.setBackgroundColor(TRIM_MEMORY_BACKGROUND);

surfaceHolder.addCallback(new Callback() {

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

camera.stopPreview();

camera.release();

camera=null;

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

// TODO Auto-generated method stub

if(null==camera){

camera=Camera.open();

try {

camera.setPreviewDisplay(surfaceHolder);

initCamera();

camera.startPreview();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){

//实现自动对焦

camera.autoFocus(new AutoFocusCallback() {

@Override

public void onAutoFocus(boolean success, Camera camera) {

if(success){

initCamera();//实现相机的参数初始化

camera.cancelAutoFocus();//只有加上了这一句,才会自动对焦。

}

}

});

}

});

}

//相机参数的初始化设置

private void initCamera()

{

parameters=camera.getParameters();

parameters.setPictureFormat(PixelFormat.JPEG);

//parameters.setPictureSize(surfaceView.getWidth(), surfaceView.getHeight()); // 部分定制手机,无法正常识别该方法。

parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1连续对焦

setDispaly(parameters,camera);

camera.setParameters(parameters);

camera.startPreview();

camera.cancelAutoFocus();// 2如果要实现连续的自动对焦,这一句必须加上

}

//控制图像的正确显示方向

private void setDispaly(Camera.Parameters parameters,Camera camera)

{

if (Integer.parseInt(Build.VERSION.SDK) >= 8){

setDisplayOrientation(camera,90);

}

else{

parameters.setRotation(90);

}

}

//实现的图像的正确显示

private void setDisplayOrientation(Camera camera, int i) {

Method downPolymorphic;

try{

downPolymorphic=camera.getClass().getMethod("setDisplayOrientation", new Class[]{int.class});

if(downPolymorphic!=null) {

downPolymorphic.invoke(camera, new Object[]{i});

}

}

catch(Exception e){

Log.e("Came_e", "图像出错");

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

android自动对焦第一次对焦,实现Android手机摄像头的自动对焦详解相关推荐

  1. android系统的手机文件夹目录详解

    android系统的手机文件夹目录详解 一.文件夹 1./acct/     系统回收站,删除的系统文件. 2./cache/     缓存 3. /data/      用户的所有程序相关数据   ...

  2. Android之手机文件夹目录详解

    android系统的手机文件夹目录详解 一.文件夹 1./acct/    系统回收站,删除的系统文件. 2./cache/    缓存 3./data/    用户的所有程序相关数据 app/    ...

  3. 红米3 android 版本,红米3四款手机有什么不同?红米3系列手机各版本区别详解

    近日,红米手机3的指纹识别升级版本通过工信部认证正式亮相.今天红米3系列产品再次亮相工信部.加上此前亮相的红米3指纹识别升级 版,如今工信部认证中共有4款红米3系列的手机.分别是2015810/201 ...

  4. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  5. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  6. Android基础入门教程——2.3.1 TextView(文本框)详解

    Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...

  7. Android studio 多渠道(多环境)打包grade配置详解

    Android studio 多渠道(多环境)打包grade配置详解 场景:开发app,我们需要两套环境或者两套环境以上的apk,每套环境的apk分两个版本debug版和release版. 公司有套平 ...

  8. Android Studio CPU profiler性能分析工具介绍和使用详解

    Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...

  9. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

最新文章

  1. 下载python步骤_下载及安装Python详细步骤
  2. 使用码云中文乱码问题解决
  3. PHP创建与解析 XML 1 (36)
  4. visitor设计模式记录
  5. CTO 离职、研发变动,百度外卖与饿了么组织架构融合公布
  6. 一天已不足24小时?一年不足365天?求每年元旦为周几的公式还能用吗?(标题党石锤了)
  7. 【2018徐州ICPC Gym-102012 M】Rikka with Illuminations【计算几何】
  8. Java获取打印机打印图片
  9. JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。
  10. 怎样用VR看分频视频?
  11. PS首战——拼贴海报
  12. 英文网页批量翻译导出本地教程
  13. Argox-PPLB函数调用说明
  14. 帆软报表设计器常用代码知识
  15. 图片按照原来比例进行缩放
  16. Python 小小爬虫练手,爬取自己的IP
  17. 数据库时代的终结(转)
  18. 基于STC89C51的交通信号灯控制程序
  19. Redis知识点总结归纳
  20. LPC24xx系列CAN波特率计算

热门文章

  1. 【Java基础】妙用Optional解决判断Null为空问题
  2. html多选框放在图片上,网页中图片格式问题地总结.doc
  3. ZwCreateFile报错0xC0000043,STATUS_SHARING_VIOLATION
  4. 小程序流量主开通技巧分享
  5. 视频教程-桫哥-GOlang-12数据库-Go语言
  6. 湖南学计算机专业单招学校排名,宁远计算机普招学校排名,IT专业单招学校
  7. java7夕_程序员的七夕节……
  8. 托马斯和朋友儿童智能健康牙刷今日发布
  9. 对象转字符串,字符串转对象
  10. Webview在RecyclerView中开启硬件加速闪屏问题解决