Android中级第六讲--相机对焦功能实现


                博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !  


        说起对焦功能,我们手机上的大多都是用手触屏,和拍照对焦两种方式,偶尔还会出现小方块;也有高级一点的,如利用传感器感知相机的移动,调用对焦功能;如利用runnable,实现几秒钟自动对焦一次。

       对焦:属于拍照前的操作,由于相机镜头和实物有一定的距离,不对焦,镜头拍摄不清楚;对焦后,镜头与实物之间距离适中,拍摄就清晰。就像初中我们用显微镜观察植物切片一样,用不同倍数的光圈,可以调出不一样的清晰度;相机也同样如此,需要硬件的支持,不过一般相机都有2x,4x,6x,8x,10x,分别是2倍、4倍、6倍、8倍、10倍光距,可以拍摄更远的照片。

       分辨率:即图像的像素点分布密度,当然像素越密,图片越清楚,一般像Samsung S2以上、iphone4S以上,都拥有800w以上的像素,看照片就十分清晰。

       自动对焦,需要理解一个知识点camera.takePicture(ShutterCallback,PictureCallback1,PictureCallback2);

     public class Camera360 implements AutoFocusCallback, PictureCallback,

		ShutterCallback {

	@Override
	public void onAutoFocus(boolean success, Camera camera) {
		// TODO Auto-generated method stub
		if (success) {
			// 有时候,拍照时光线阴暗,对焦可能就不容易成功;所以判断下,如果对焦成功,就保存图片
			// 停止预览
			camera.stopPreview();
			// 拍照
			camera.takePicture(this, null, this);
		}
	}

	@Override
	public void onPictureTaken(byte[] data, Camera camera) {
		// TODO Auto-generated method stub
		// 保存图片data得到的就是图片
		// 保存完图片,camera再start,继续拍照
	}

	@Override
	public void onShutter() {
		// TODO Auto-generated method stub
		// 作用于拍照瞬间,可以响声音,也可以振动,用做提示
		// 此时图片数据并未保存
	}

}

只要实现AutoFocusCallback接口即可,并在拍照时调用就行。如果要先对焦,再拍照,也可以实现一个onTouch方法,当用户点手触摸surface对象时,用事先声明的Camera对象来调用autoFocus方法就行。


  小知识点:ShutterCallback主要是快门按下瞬间会执行的回调,不重要;重要的是后面两个,PictureCallback1是保存未压缩的的图片,PictureCallback2是保存JEPG格式的图片。

留下一个疑问:知道为什么PictureCallback1里有时data会为空,而PictureCallback2里data不为空吗?



你可能感兴趣的:(Android中级第六讲--相机对焦功能实现)