如何实现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;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

camerax 自动聚焦_Android实现手机摄像头的自动对焦相关推荐

  1. camerax 自动聚焦_Android Camera-CameraView和CameraX使用

    前面两篇介绍了Camera1和Camera2的使用,发现Camera API从1到2的变化非常大,Camera2的复杂度提升了不少,官方为了让我们更容易使用Camera,出了个一个官方的库camera ...

  2. android摄像头自动对焦原理,Android实现手机摄像头的自动对焦

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

  3. linux摄像头 自动对焦,如何实现Android手机摄像头的自动对焦

    发现好多人都在解决一个问题那就是,如何实现Android相机的自动对焦,而且是连续自动对焦的.当然直接调用系统相机就不用说了,那个很简单的.下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对 ...

  4. android自动对焦第一次对焦,实现Android手机摄像头的自动对焦详解

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

  5. camerax 自动聚焦_手机是如何实现自动对焦的?

    以下是科学长文,如果仅想了解自动聚焦原理的,第一二点够了啦~ 一.话不多说,我们首先来看看相机聚焦的原理是什么?然后再让它自动 这个图我们都熟悉,中学时候的凸透镜成像的原理 物距u跟像距v的共轭关系为 ...

  6. 旋转手机摄像头想法 -Camerax

    摄像头是手机的眼睛,没有了它,手机就没有了心灵的窗口! 一般的摄像头都只是有后面的用来拍摄图片和录像,而有前后摄像头的手机就更牛了,跨越了前者功能,还可以实现主人便捷的自拍和视频通话了,但是前后摄像头 ...

  7. 手机摄像头基础知识-1-缩写篇

    AE:auto exposure,自动曝光 AF:auto focus 自动对焦 BAM:bus access manager BOM:bill of materials,物料清单,是描述企业产品组成 ...

  8. 手机摄像头的相关知识

    决定手机摄像头性能的参数有哪些 1.光圈大小,如f2.2 .f2.4 .f2.6 f值越小,光圈越大,图像性能越好.暗光环境下,光圈大的镜头拍的清楚. 2.快门速度,这一点要自己体验 3.像素值其实没 ...

  9. 手机摄像头产业竞争格局趋势深度解读

    http://www.moqie.com/ArticleView_9658.aspx 标签:手机摄像头 产业  所属专题:行业热点 随着智能手机的兴起,国内厂商不论是上游零组件领域还是下游品牌厂商都得 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:小狗进圈
  2. 数博前沿 | 企业数据应用:聚焦场景,打通“最后一公里”
  3. C++ 复数类加减法运算重载为成员函数形式
  4. 初识Mongodb总结
  5. 软件设计原则(五)接口隔离原则 -Interface Segregation Principle
  6. mac下pip install 安装只能选择python2.7的问题
  7. 目录:关于【稳定性建设之道】大纲速览
  8. echarts同一页面四个图表切换的js数据交互
  9. centos7.5 安装配置supervisor管理python进程(也就是服务)
  10. 028-进阶(网络编程)
  11. 蓝厂为什么着急推出vivo X23?只因vivo NEX叫好不叫座
  12. JAVA Number与Math类
  13. [教程]教你如何制作彩色的3D打印Groot
  14. 如何使用启动盘PE桌面工具安装原版win7系统?
  15. PCAT 点云标注软件
  16. 1955年至2020年的国家GDP数据可视化-基于Pandas,Seaborn
  17. VoxCeleb2:深度说话人识别
  18. Python打印九九乘法口诀表
  19. 极智开发 | 华为云ECS本地开发环境搭建
  20. 又一个万亿级市场迎来新玩家?抖音内测网络拍卖功能

热门文章

  1. asp.net 添加成功弹出个div提示_Word双栏目录怎么做,这3个步骤早知道,让人眼前一亮...
  2. nginx增加php支持,Nginx启用php支持
  3. hurst代码 python_python数据类型—字符串
  4. java第一份工作_Java 学到什么程度可以找到第一份工作 ?
  5. 如何用 Markdown 来画图?
  6. Spring Cloud 2020.0.5 发布
  7. 字节又莫名其妙发奖金了!网友:突然到账五万,吓得我差点报警...
  8. 每日一皮:这一定是“宅”的极致了...
  9. 采集Nginx日志的几种方式
  10. 如何使用Mybatis的拦截器实现数据加密与解密