当前位置: 代码迷 >> 综合 >> Android camera API2 类简介
  详细解决方案

Android camera API2 类简介

热度:58   发布时间:2023-12-29 09:18:13.0

Camera 中主要的API2类

CameraManager类 :

frameworks\base\core\java\android\hardware\camera2\CameraManager.java

摄像头管理类,用于检测、打开系统摄像头,通过 getCameraCharacteristics(cameraId)  可以获取摄像头特征。

CameraCharacteristics类:

frameworks\base\core\java\android\hardware\camera2\CameraCharacteristics.java

相机特性类,获取摄像头的特征信息。例如:相机光圈值,是否支持自动调焦,是否支持 zoom,是否支持闪光灯一系列特征

CameraDevice类:

frameworks\base\core\java\android\hardware\camera2\CameraDevice.java

相机设备,类似早期的camera类。

CameraCaptureSession类:

frameworks\base\core\java\android\hardware\camera2\CameraCaptureSession.java

用于创建预览、拍照的Session类。通过它的setRepeatingRequest()方法控制预览界面 , 通过它的capture()方法控制拍照动作或者录像动作。

CaptureRequest.Builder 类vendor\mediatek\proprietary\hardware\mtkcam\middleware\v1\adapter\Scenario\flowControl\stereo\shot\CaptureRequestBuilder.cpp

实例化 CaptureRequest,置一些列的参数,用于控制预览和拍照参数,例如:对焦模式,曝光模式,zoom参数等。

CaptureRequest类:

frameworks\base\core\java\android\hardware\camera2\CaptureRequest.java

捕获的请求。 

ImageReader类:

frameworks\base\media\java\android\media\ImageReader.java

ImageReader 和 Camera API2 配合缓存拍照图片的数据和 YUV 数据。

 

 Camera API2类的关系

  1. 获取系统服务 CameraManager 实例
  2. 调用 CameraManager.getCameraCharacteristics() 方法获取 CameraCharacteristics 实例
  3. 调用 CameraManager.openCamera() 方法的传入 CameraDevice.StateCallback 方法中获取 CameraDevice 实例
  4. 调用 CameraDevice.createCaptureRequest() 方法创建请求会话实例 CaptureRequest.Builder , TEMPLATE_PREVIEW(预览请求), TEMPLATE_STILL_CAPTURE(拍照请求)
  5. 调用 CaptureRequest.Builder.addTarget(Surface) 设置 camera2 图像数据的目标 Surface
  6. 调用 CameraDevice.createCaptureSession() 创建相机捕获会话,传入 CameraCaptureSession.StateCallback 方法用于拍照或预览
  7. 在 CameraCaptureSession.StateCallback 中调用 CaptureRequest.Builder.build() 获取请求会话和 CameraCaptureSession 捕获会话
  8. 在 CameraCaptureSession.CaptureCallback 中实现两个抽象方法, onCaptureProgressed(捕获处理)和 onCaptureCompleted(捕获完成)
  9. 调用 CameraCaptureSession 发送 CaptureRequest 请求, capture:表示只发一次请求(拍照), setRepeatingRequest:表示不断发送请求(预览)
  10. 在 ImageReader.OnImageAvailableListener 监听中回调获取拍照/预览数据

 

Camera API2 Demo : android-Camera2Basic

Google 相机: https://source.android.com/devices/camera/

 

导图如下:

 

  相关解决方案