对于智能手机来说相机是非常重要的一个功能,它是影像的生产者,是新时代社交(图片,视频)内容的基础。后面我们将重点学习 一下安卓平台的Camera app开发。
Camera 2 API
学习如何使用新的API,以实例的方式来学习新一套API如何使用,最终成果将会是一个简单的,具有基础功能的Camera App。
有以下文档可供参考:
同时谷歌也有一些官方的样例可供参考:
AOSP源码中的Camera2也是值得学习和参考 的。
Frameworks
在学习完API如何使用以后,还需要深入学习一下API下面的框架层。正所谓知其然,更要知其所以然,看了Demo以及文档后谁都会有API,要想加深理解,就必须继续深挖。
这部分没有什么捷径,只能去啃AOSP的源码了。
CameraService
这是Frameworks层的最后一环,它连接着Java层和HAL层,主要负责camera device的管理,如权限,打开与关闭的管理,在Android M之前并不是独立的进程,是放在media.server一起的,后来独立成为一个单独的系统级别的进程cameraserver,在ServiceManager中的名字是media.camera,可以通过如下命令查看它的状态:
1
|
|
Jetpack中的CameraX
这是谷歌封装的库,用以简化API的调用,加快app开发进度。
深入了解业务架构与技术栈
SnapdragonCamera
相机是技术栈当中最为复杂的一个,SoC平台是至关重要的,所以Qcom的SnapdragonCamera也是值得深入学习的。
相机业务知识学习
封装
相机是非常受硬件限制的,不同的SoC平台,不同的OEM厂商,以及不同的Android版本,API以及具体细节差异巨大,这给Camera app开发带来非常大的适配工作,那么可以把Camera app核心的业务封装成一个库,这样可以简化开发。
架构
如何架构一个Camera app。
扩展功能
除基本的拍照录像功能以外,可以扩展一些功能。