当前位置:首页 > 开发 > 移动开发 > 正文

让自己开发的照相软件也可以自动对焦

发表于: 2010-05-27   作者:dai_lm   来源:转载   浏览次数:
摘要: 拍照button按下时 mCamera.autoFocus(mAutoFocusCallBack); 自动对焦回调函数mAutoFocusCallBack private AutoFocusCallback mAutoFocusCallBack = new AutoFocusCallback() { @Override public void onAutoFocu
拍照button按下时
mCamera.autoFocus(mAutoFocusCallBack);


自动对焦回调函数mAutoFocusCallBack
private AutoFocusCallback mAutoFocusCallBack = new AutoFocusCallback() {

	@Override
	public void onAutoFocus(boolean success, Camera camera) {
			
		if (success) {

			mInProgress = true;

			// set parameters of camera
			Camera.Parameters Parameters = mCamera.getParameters();
			Parameters.setPreviewSize(IMG_PREVIEW_WIDTH, IMG_PREVIEW_HEIGHT);
			Parameters.setPictureSize(IMG_WIDTH, IMG_HEIGHT);
			mCamera.setParameters(Parameters);

			mCamera.takePicture(mShutterListener, null, mImageCaptureCallback);
		}
	}
};


设置Camera.Parameters好像有些问题,如果设置了相机(或者是SDK)不支持的分辨率就会报错,估计要添加判断。
目前的设置为
private static int IMG_PREVIEW_WIDTH = 480;
private static int IMG_PREVIEW_HEIGHT = 320;
private static int IMG_WIDTH = 1280;
private static int IMG_HEIGHT = 960;


监听事件mShutterListener
private Camera.ShutterCallback mShutterListener = new Camera.ShutterCallback() {
	public void onShutter() {
	}
};


拍照回调函数mImageCaptureCallback
这里使用了线程,因为考虑到保存图片时一般都会显示一个progress dialog,如果不用线程的话,dialog画面会定在那里,无法起到预期的效果。
当然不用线程也不会有错,适当修改一下就可以了。
private PictureCallback mImageCaptureCallback = new PictureCallback() {

	@Override
	public void onPictureTaken(final byte[] data, Camera camera) {

		new Thread(new Runnable() {

			@Override
			public void run() {

				// get path to save image file
				String filePath = "/sdcard/DCIM/Camera";

				// generate file name
				String name = "mytest.jpg";
				String fileName = filePath + name;

				FileOutputStream fos = null;
				try {
					// saving file
					fos = new FileOutputStream(fileName);
					fos.write(data);
					fos.close();

				} catch (Exception e) {

					// close file if error
					if (fos != null) {
						try {
							fos.close();
						} catch (IOException e1) {
							e1.printStackTrace();
						}
						try {
							throw e;
						} catch (Exception e1) {
							e1.printStackTrace();
						}
					}
					// close scene
					finish();
				}
			}
		}).start();
	}
};


最后提醒一下,别忘记在AndroidManifest.xml里增加
<uses-permission android:name="android.permission.CAMERA" />


好了,就写那么多吧,希望对大家有用。

让自己开发的照相软件也可以自动对焦

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
经EasyEDA老贺推荐,使用了以下EasyEDA的在线原理图PCB功能,感觉还不错,稍微熟悉一下界面,就可以
新进一个公司,应聘的是java开发职位,进公司后让我做个软件自动化的东西,这可是个新鲜事情,以前
最近跟一个工作5年的.NET开发人员一起开发一个非常小的软件功能模块,有些体会写下来分享给大家,我
最近跟一个工作5年的.NET开发人员一起开发一个非常小的软件功能模块,有些体会写下来分享给大家,我
主要方向是前端的我曾经也想过学学iOS的Object-C或者Android的Java。但是写习惯Javascript这种弱类
在这一月底二月初的时候,好多TX都在着手准备着个人简历,这时候一份WORD文档已经无法满足我们骚动的
2014年11月13日——犹他大学的计算机科学家开发了一款软件,不仅可以检测和彻底清除从未出现过的病
我们刚刚介绍了通过Chrome扩展在Gmail附件后面加上一个保存到Google Drive链接的方法,不过为这么一
TD学生助手——release版发布 1.设想和目标 1.我们的软件要解决的问题   TD学生助手的主要核心思
本案例分两个类Server类和Client类,其余的类为内部类。该案例纯属Java编程。 并且已经在Linux上测试
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号