1.1Android Camera源码路径及类简介

      Camera API是Android APP开发的主要方式,Android 9.0主要有1.0和2.0两个版本。目前Google在全面推API2,但是应用市场上的主流应用大部分依然使用的是1.0,如QQ、微信等;而一般手机自带的相机应用都是Camera API 2.

   本文及后续都将以API2为主,涉及代码部分将以Kotlin为主,Android源码部分以官方开源版本为准。

一.API源码路径

Camera SDK的主要代码都在/frameworks/base/core/java/android/hardware路径下。

其中../camera2目录下是API2的内容,Camera.java类是API1的主要功能类。在API2中,实际上分为公开的类和方法,以及非公开的类和方法。

对比图1和图2可以发现,图二多出了impl、legacy、marshel、utils三个文件夹,这三个文件夹就是非公开API。

图一

 

图二

二.主要类简介

在生产过程之中会涉及到很多类,其中大部分时辅助完成功能的类,涉及到流程的核心功能类类并不多,下面简单介绍一下这些核心类。

图三

通过图三中框红的五个类就可以完成相机从打开到预览到拍照的全部流程。

CameraManager类,官方的定义是A system service manager for detecting, characterizing, and connecting to CameraDevices.CameraManager类作为系统服务,是所有摄像头设备的管理者。
CameraDevice类,官方定义是The CameraDevice class is a representation of a single camera connected to an Android device, allowing for fine-grain control of image capture and post-processing at high frame rates.
一个CameraDevice对象就对应一个摄像头设备。
CameraDevice.StateCallback类,A callback objects for receiving updates about the state of a camera device.
这个类是device状态更新时的回调,如打开摄像头成功后的操作可以在这个回调中进行。
CameraCharacteristics类,官方定义是The properties describing a CameraDevice.类中包含了大量用于表示Camera属性的key值,例如支持的Size列表,最大Zoom值等。
CameraCaptureSession类,A configured capture session for a CameraDevice, used for capturing images from the camera or reprocessing images captured from the camera in the same session previously.系统和摄像头之间的会话,通过device创建。
CameraCaptureSession.StateCallback类,会话创建成功的回调,用于捕捉会话状态的更新。
CameraCaptureSession.CaptureCallback类,同样属于CameraCaptureSession的静态抽象回调,用于捕捉Capture过程中的状态,从开始Capture到完成,如果出错,会进入相应的failed方法而不是completed方法。
开发者将这五个类串起来的过程,就是一个简单的Camera APP开发的过程,后续笔者将以实现一个简单Camera Demo的方式串起Camera2完整流程,同时深入解析API的每个功能类。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章