
Camera
文章平均质量分 79
Caroline_cheng
Android Camera 工程师
展开
-
展锐A13 Camera Hal dispatch模块流程 --- 上
4月份就知道展锐A13的Camera Hal有大的变动,但是最近一直在做一个MTK的项目,没去看这个新增部分的流程。最近有时间,就把A13上Camera Hal新增的部分流程捋 了一下,过程是痛苦的,但是坚持一遍遍去读代码,在结合展锐的官方文档,思路就慢慢清晰了。整个hal总共新增了两个模块,dispatch 和 lwp,我们先看dispatch模块,在看lwp模块,最后就可以将两个模块的流程串起来。原创 2023-08-25 17:29:01 · 712 阅读 · 2 评论 -
MTK原生CameraApp端的camera操作流程
MTK原生CameraApp端的camera相关操作流程原创 2022-09-05 19:35:38 · 913 阅读 · 0 评论 -
GLSurfaceView源码分析
最近在项目开发中遇到了GLSurfaceView的使用,就把GLSurfaceView的源码看了下,内容不算特别多。首先,GLSurfaceView的继承关系public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback2public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCallback {GLS原创 2022-05-25 11:43:35 · 521 阅读 · 0 评论 -
openCamera的 hal 端流程
本文从流程、代码、log三个方面介绍openCamera 0的hal端流程。一,流程图二,代码逻辑从SprdCamera3Factory开始int SprdCamera3Factory::open(const struct hw_module_t *module, const char *id, struct hw_device_t **hw_device) { HAL_LOGD("E"); return gSprdCame原创 2021-11-16 16:37:42 · 2886 阅读 · 0 评论 -
跨进程通信---AIDL
有过一定工作经验的Android程序员,肯定是听过AIDL的。之前我也是经常听别人讲,最近下功夫去专门看了下,总算自己参照示例写出来一个Demo出来,为了加深印象,总结本篇文章。AIDL:Android Interface Definition Language,Android接口定义语言。看这名称:是一种语言。我学过java语言、C语言、C++语言,虽然知道每种语言之间有一定的互通之处,但是却也是各有各的规则。AIDL称为一种语言,想来应该有一套完整体系。在来关注 Interface ,接口,我们知道,原创 2021-07-31 15:08:36 · 1767 阅读 · 1 评论 -
android.hardware.camera2系列----CameraCaptureSession
上篇文章中我们讲了CameraDevice,其中有关于CameraCaptureSession的概念,我们没有详细说明,本篇就来看下CameraCaptureSession是什么。frameworks\base\core\java\android\hardware\camera2\CameraCaptureSession.java我们知道在openCamera的时候,CameraApp拿到了CameraDevice的对象,但是在后续请求预览、拍照的操作中,CameraApp却并不是直接拿这个Camera原创 2021-06-25 17:09:04 · 859 阅读 · 0 评论 -
android.hardware.camera2 系列----CameraDevice
我们在之前的文章中介绍了 openCamera的流程,openCamera最终使CameraApp拿到了一个叫CameraDevice的对象,后面我们在创建会话、开启预览、拍照等流程中均看到这个CameraDvice的身影,今天我们来详细看这个在Camera中占据重要地位的对象:CameraDevice。打开:frameworks\base\core\java\android\hardware\camera2\CameraDevice.java开篇来了一个枚举的Template:@IntDef(pre原创 2021-06-22 11:41:40 · 2023 阅读 · 0 评论 -
AndroidR上展锐平台实现长按拍照键连拍的功能
某客户定制需求:长按拍照键实现连拍功能。我们先来跟进下单拍的流程,连拍与单拍流程重叠度很高,只是连拍在单拍的照片callback回来之后,在立即下发下一次的拍照请求。View的click流程就不说了,点击拍照键后,点击事件会回调到PhotoModule的onShutterButtonClick方法中。在这个方法中会做拍照前的逻辑判断,比如当前对否设置了拍照倒计时,如果有的话,就转到倒计时的逻辑中,延时拍照。我们这里不考虑这些设置,后面就是调用FocusOverlayManager的 focusAndC原创 2021-05-28 15:14:31 · 800 阅读 · 0 评论 -
AndroidR展讯平台Camera管理众多设置项
我们知道,Camera里面有很多设置,比如HDR、Flash、白平衡、倒计时,水印、PictureSize 等等,不仅有在界面上展现出来给用户设置的开关项,还有默认的比如是否打开3DNR、帧率设置等等。那么众多的设置项是如何管理的呢?先来看下APP中直接管理Settings数据的关系链。跟我们之前看的CameraAgent那条线十分类似。在介绍之前,我们先来说下在AndroidCameraSettings中一个比较重要的成员变量com.android.ex.camera2.utils.Camera原创 2021-04-28 18:26:39 · 876 阅读 · 0 评论 -
AndroidR上展讯平台Camera创建会话和开启预览流程
上篇绘制了CameraApp启动在onResume中去openCamera的流程,本篇来总结在openCamera得到CameraDevice对象之后创建会话,即得到CameraCaptureSession 和 通过会话session对象开启预览的流程。原创 2021-04-27 14:37:49 · 716 阅读 · 0 评论 -
AndroidR上展讯平台openCamera流程
总结制作时序图如下:原创 2021-04-22 10:14:50 · 420 阅读 · 0 评论 -
AndroidR上展讯CameraAPP点击预览聚焦的流程
现象:点击预览会显示聚焦框,然后一段时间后聚焦框消失。一,点击预览触发聚焦的流程从下面的trace中看到点击touch时间是如何转到AndroidCamera2AgentImpl中去触发聚焦的关键流程是:1,PhotoModule.onSingleTapUp ==》2,FocusOverlayManager.onSingleTapUp ==》3,FocusOverlayManager.autoFocus ==》4, PhotoModule.autoFocus ==》5,AndroidCa原创 2021-04-12 18:25:38 · 655 阅读 · 0 评论 -
AndroidR上展讯CameraAPP的openCamera流程
看展讯平台的Camera有一段时间了,今天来整理下openCamera的流程。其实,CameraAPP的主要逻辑可分为两大部分:界面显示 + camera处理。展讯和MTK平台CameraAPP的共同点是两者都有Module的概念,即不同的Module处理app中不同的模式,比如拍照模式、美颜模式、录像模式等等。但是在与camera这个硬件设备打交道的时候,设计却明显不同。MTK平台app是将界面显示的处理与camera处理均放在当前Module中处理,而展讯平台是Module只处理与当前模式相关的界原创 2021-03-29 10:28:56 · 794 阅读 · 0 评论 -
AndroidR上展讯CameraApp的TopPanelLayout处理
我们以后摄Photo为例,跟踪下CameraAPP顶部的Icon是怎么加载上去了。首先,UI相关的继承关系如下:AutoPhotoUI --> PhotoUI —>DreamUI具体布局是:TopPanelLayoutpublic class TopPanelLayout extends LinearLayout看下自定义view的内容public void addTopButtons(ArrayList<TopPanelUtil.IconAndDes> list) {原创 2021-03-10 12:18:02 · 309 阅读 · 0 评论 -
Android R上展讯平台CameraAPP的Settings设置项管理
CameraAPP的设置项管理是CameraAPP中客户需求比较偏重的一部分,一般客户要添加新功能,都需要提供一个设置项开关出来。今天我们来整理下设置项部分的逻辑,先来看下设置项的截图:我们还知道,不同Module下设置项的个数和种类也是不同的,现在就开始我们的代码追踪之旅吧。DataModuleBasic系列是管理设置项的基类,在它内部定义了几个常用的内部类。DataSPAndPath关键成员变量:String mPathint positionSharedPreferences mShar原创 2021-02-27 15:30:34 · 909 阅读 · 0 评论 -
Android R上展讯平台CameraAPP上zoom图标的逻辑
展讯平台MMX客户要求Camera预览界面的zoom图标不要一直显示,只在用户通过手势操作zoom才显示。需要看着不难理解,但是我没有看过zoom这块的逻辑,还是得从头看起。首先通过工具定位到zoom图标是一个自定义view,VerticalZoomBar,打开这个文件,1100多行,这样的自定义view显然逻辑就是比较复杂的。图标具体样式如下:一个白色圆环外框,里面一个深色的实心半透明的圆,中间是一个文字。既然是自定义view,那它所有的东西就都是在onDraw方法中绘制的,直接看onDraw原创 2021-02-24 19:54:07 · 461 阅读 · 0 评论 -
Android R上展讯平台CameraAPP获取PictureSize的流程
展讯平台MMX客户要求添加PictureSize,因此将获取PictureSize的流程追了下,现将跟踪结果整理下来。不多说,直接上一张在StartUml中画好的流程图从DataModulePhoto请求获取PictureSize到ResolutionUtil返回从底层读到的size集合流程,在上图的可以很清晰的看到。下面来说下在得到底层配置的size集合后,上层app做了什么过滤。1,分类该方法上来第一步调用parseAvailableSizes(),可以看到该方法就是根据比例做了分类,以比例原创 2021-02-24 15:05:40 · 484 阅读 · 2 评论 -
MTK Camera APP的 openCamera流程(上层)
今天来总结下MTK 平台下 Camera APP中openCamera的流程。Camera中的每个模式下都有一个Mode和DeviceController类。Mode是负责发送请求,接受数据,DeviceController是接收到Mode的调用,然后真正去做事情,最后将得到的数据返回给Mode使用的。我们以Photo模式为例追一下openCamera的流程。PhotoMode在PhotoMode的init中会调用prepareAndOpenCameraPhotoMode在准备好信息之后,调用原创 2021-01-23 16:22:47 · 1196 阅读 · 1 评论