Android实现手机摄像头的自动对焦

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

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

时间: 2024-09-20 15:38:11

Android实现手机摄像头的自动对焦的相关文章

Android实现手机摄像头的自动对焦_Android

如何实现Android相机的自动对焦,而且是连续自动对焦的.当然直接调用系统相机就不用说了,那个很简单的.下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对焦. 代码如下: public class MainActivity extends Activity { private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean flag = false; private Strin

图像处理-android手机摄像头扫描处理图像

问题描述 android手机摄像头扫描处理图像 想用android手机的摄像头扫描不断提取图像,对图像进行处理,若处理完成则退出,无法处理则继续通过摄像头提取图像处理. 请问应该通过什么方法达到这种效果? 多谢多谢! 解决方案 可以用opencv处理图像.不知道你具体要做什么 解决方案二: 我觉得你可以下载一个识别二维码的DEMO程序看看,处理逻辑差不多. 解决方案三: 通过jni调用c代码来实现图像算法!也可以使用opengl来实现,最快的是opengl,最稳定的是c.

室内定位-Android手机摄像头接收LED光通信

问题描述 Android手机摄像头接收LED光通信 光通信范畴:用LED以不同频率闪烁(不影响正常照明),手机摄像头接收LED光,识别调制在光上的信息,实现室内定位.各位大神,有涉及过类似的东西么?有的话,希望您可以指点一二.谢谢! 解决方案 感觉智能实现方向,就是发光位置和你的位置的方向,但是发光位置与手机位置的距离应该判断不了.

[图] Android One 手机试玩 一个前景光明的开端

Android One项目是谷歌今年I/O大会上最引人关注的地方之一,在上个月,首批Android One智能手机也已经在印度正式发售.这些售价超低的智能手机品质如何?相信这是不少人所关心的问题.日前,科技网站Android Central就对其中的一款手机,Micromax Canvas A1进行了试玩体验. 什么是Android One? 虽 然Android One看上去似乎和Nexus项目(甚至是传闻中的Android Silver)很相似,但前者的目的和执行都非常不同.除了软件由谷歌把

图片-安卓手机摄像头识别颜色,谁有这方面的代码,给提供一下,谢谢了

问题描述 安卓手机摄像头识别颜色,谁有这方面的代码,给提供一下,谢谢了 用手机摄像头拍了一张红色图片,想把颜色识别出来,不知道代码应该怎么写? 解决方案 格式化一下代码的颜色,呵呵 解决方案二: 下面是用opencv搞的,android应该也用对应的api吧 result.create(image.rows, image.cols, CV_8U); cv::Mat_<cv::Vec3b>::const_iterator it = image.begin<cv::Vec3b>();

Android实现调用摄像头_Android

应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄像头的使用及其它相关的feature 1. 摄像头相关权限设置     <!--摄像头权限 --> <uses-permission android:name="android.permission.CAMERA" /> <

html5-HTML5 调用手机摄像头部分浏览器调不出来

问题描述 HTML5 调用手机摄像头部分浏览器调不出来 前端实现方式:<input type="file" accept="image/*,camera" capture="camera" id="btn1" style="width:0px;height:0px;position:absolute;top:0;left:0;"/> 怎样兼容哪些浏览器(极速浏览器),还有部分android机型只

首款联通Android定制手机正式上市

3月11日消息,中国联通终端运营公司联通华盛向摩托罗拉定制的全互联网3G 智能手机--智酷XT701正式上市,这是联通首款基于最新的Android 2.0版本的智能手机,带有WiFi和WAPI上网功能,也显示了联通定制手机的一个重大方向. 联通Android定制手机上市 这同时也是联通的又一明星3G机型.该款手机的售价为4299元. 正式上市后,用户不仅可在联通各地主要营业厅.各大中城市的苏宁.国美等全国连锁家电卖场及各手机卖场购买,也可在联通网上营业厅(www.10010.com)和联通华盛网

android华为手机读取本地文件夹图片获取path路径null,求指导

问题描述 android华为手机读取本地文件夹图片获取path路径null,求指导 android华为手机读取本地文件夹图片获取path路径null,求指导 解决方案 public String getImagePathFromURI(Uri uri) { Cursor cursor = getActivity().getContentResolver().query(uri null null null null); String path = null; if (cursor != null