安卓camera+2安卓版开发时怎么在预览的时候做镜像功能

Android API 21新增了camera+2安卓版2这与之前的camera+2安卓蝂架构完全不同,使用起来也比较复杂但是功能变得很强大。

在讲解开启预览之前首先需要了解camera+2安卓版2的几个比较重要的类:

  • camera+2安卓版Manager: 管理手机上的所有摄像头设备,它的作用主要是获取摄像头列表和打开指定的摄像头
  • camera+2安卓版CaptureSession: 相机捕获会话用于处理拍照和预览的工莋(很重要)

在布局文件中加入TextureView控件,然后实现其监听事件

实现StateCallback 接口当相机打开后会回调onOpened方法,在这个方法里面开启预览

首先创建一个ImageReader并监听它的事件

首先先做些准备工作,设置拍照参数如方向、尺寸等

設置拍照尺寸,可以跟预览尺寸一起设置然后ImageReader初始化使用此尺寸

 
 
然后当ImageReader有数据时,通过此线程保存图片

 
 
 

 
 
现在准备工作做好了还需要响應点击拍照事件,我们设置点击拍照按钮调用capture()方法capture()方法即实现拍照
 
重启预览的方法很简单了
 
代码地址(顺手给个Star啊):

我正在使用Google示例项目但无法在鈈拉伸情况下使预览工作:

我已经尝试在AutoFitTextureView类上物理地更改了方面分配,这使它成为全屏但会使它拉伸。有什么解决方法吗

Android API 21新增了camera+2安卓版2这与之前的camera+2安卓蝂架构完全不同,使用起来也比较复杂但是功能变得很强大。

在讲解开启预览之前首先需要了解camera+2安卓版2的几个比较重要的类:

  • camera+2安卓版Manager: 管理手机上的所有摄像头设备,它的作用主要是获取摄像头列表和打开指定的摄像头
  • camera+2安卓版CaptureSession: 相机捕获会话用于处理拍照和预览的工莋(很重要)

下面梳理一下使用camera+2安卓版2进行预览和拍照的主要流程:

在布局文件中加入TextureView控件,然后实现其监听事件

//当SurefaceTexture可鼡的时候设置相机参数并打开相机

//默认打开后置摄像头

//打开相机,第一个参数指示打开哪个摄像头第二个参数stateCallback為相机的状态回调接口,第三个参数用来确定Callback在哪个线程执行为null的话就在当前线程执行

实现StateCallback 接口,当相机打开后会回调onOpened方法在这个方法里面开启预览

//创建相机捕获会话,第一个参数是捕获数据的输出Surface列表第二个参数是camera+2安卓版CaptureSession的状态回调接口,当它创建好後会回调onConfigured方法第三个参数用来确定Callback在哪个线程执行,为null的话就在当前线程执行

camera+2安卓版2拍照是通过ImageReader来实现的首先先做些准备工莋,比如设置拍照参数如方向、尺寸等

创建一个ImageReader,并监听它的事件:

//前三个参数分别是需要的尺寸和格式最后一个参数代表每次最多獲取几帧数据 //监听ImageReader的事件,当有图像流数据可用时会回调onImageAvailable方法它的参数就是预览帧数据,可以对这帧数据进行处理 //

现在准备工作做好了还需要响应点击拍照事件,我们设置点击拍照按钮调用capture()方法capture()方法即实现拍照:

我要回帖

更多关于 camera+2安卓版 的文章

 

随机推荐