手动对焦&变焦
对于Camera,SDK提供触摸对焦和变焦功能 当然设备需要支持FLASH_MODE_AUTO和KEY_ZOOM_SUPPORTED
1. 说明
提供以下三个类来使用对焦和变焦功能:
- CameraTouchHelper:处理Camera的glsurfaceView的touch事件,提供对焦及变焦的支持
- ICNCameraHintView:显示变焦比例及焦点范围的view的接口类,您可以实现该接口类,自定义变焦显示view,也可以使用下面的类
- CameraHintView:实现了ICNCameraHintView
1.1 触摸对焦功能
可以通过单指触摸预览区实现针对该区域的对焦和测光。
注意:绝大部分手机是不支持前置摄像头的手动对焦的。
使用方法:
- 创建 CameraTouchHelper实例,并且为该实例设置CameraCapture,主要用来获取和设置Camera的参数
- 设置GLSurfaceView或TextureView的touch事件为CameraTouchHelper,此类拦截了GlSurfaceView的onTouch事件
- UI的xml中添加CameraHintView,并调用CameraTouchHelper的接口setCameraHintView,将实例设置给CameraHintView
- 调用CameraTouchHelper接口setEnableTouchFocus打开触摸对焦功能(该接口在推流过程中实时生效)
1.2 变焦功能
可以通过双指缩放手势来拉近、拉远摄像头预览区。 使用方法:
调用Streamer的接口setCameraCapture为该实例设置CameraCapture,主要用来获取和设置Camera的参数 设置GlSurfaceView的touch事件为mStreamer.getCameraTouchHelper,此类拦截了GlSurfaceView的onTouch事件 UI的xml中添加CameraHintView,Streamer的接口setCameraHintView,将实例设置给CameraHintView Streamer的接口setEnableZoom打开变焦功能(该接口在推流过程中实时生效) 1.3 参考代码:
//手动变焦
mStreamer.setCameraCapture(mStreamer.getCameraCapture());
mCameraPreviewView.setOnTouchListener(mStreamer.getCameraTouchHelper());
mStreamer.setCameraHintView(mCameraHintView);
mStreamer.setEnableTouchFocus(true);
mStreamer.setEnableZoom(true);
2.自定义camera 参数
SDK提供的CameraTouchHelper,是一种实现示例。开发者需要更进一步的操纵camera,请自行操作Camera的相关参数即可。 请参考 wiki