Android自定义相机自定义相机Camera实现手动对焦的方法示例实现手动对焦的方法示例
主要介绍了Android自定义相机Camera实现手动对焦的方法示例,文中通过示例代码介绍的非常详细,对大家
的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言前言
我采用的是Camera来实现自定义相机的,如果你使用的是Camera2,那本文将不适用你。为了减少篇幅,本文主要讲解手动
对焦的实现方式,前提是你已经能实现自定义相机的预览等基础功能。
目录目录
手动对焦的方法解析
实现用户点击屏幕后,设置对焦区域和测光区域
一、手动对焦的方法一、手动对焦的方法
手动对焦的实现主要通过两个Camera方法来进行配置:
setFocusAreas 设置对焦的区域
setMeteringAreas 设置测光的区域
他们需要传入一个Camera.Area集合,Camera.Area如图:
/**
* Create an area with specified rectangle and weight.
*
* @param rect the bounds of the area.
* @param weight the weight of the area.
*/
public Area(Rect rect, int weight) {
this.rect = rect;
this.weight = weight;
}
第一个参数是对焦和测光的区域,范围在[-1000,-1000]到[1000,1000],第二个参数是权重,范围在0到1000,当传入多个
Area时,权重的大小决定着对焦或测光的优先级,如果每次只对焦一个区域,那第二个参数直接传入1000即可,大多数开发
中也是如此。
说到第一个参数的范围,请看下图,将更加清晰明了:
我们可以看到,和手机屏幕的分辨率不同,Area到屏幕的映射区域是从左上角的-1000,-1000到右下角的1000,1000,中心点
是0,0,我们点击屏幕后获取到的坐标,最终就需要转化为映射区域的坐标,这是手动对焦最为重要的环节,了解了这两个必
要的参数配置后,我们就可以开始手动对焦的实现了。
二、实现用户点击屏幕后,设置对焦区域和测光区域二、实现用户点击屏幕后,设置对焦区域和测光区域 获取点击预览画面的坐标值获取点击预览画面的坐标值
用户点击屏幕,实际是点击的预览画面的区域,拍照功能大家肯定都知道,这个就不多解释,那么我们直接通过
setOnTouchListener方法对View进行监听即可
surfaceView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e("MainActivity", "X坐标:" + event.getX()+",Y坐标:"+event.getY());
return false;
}
});
通过MotionEvent我们就可以获取到用户点击屏幕时,相对于View的坐标值了
将将View坐标值转化为坐标值转化为Area映射区域的坐标值映射区域的坐标值
评论0