资讯详情

安卓相机架构概览

安卓官网 https://developer.android.google.cn/guide/platform/#art 相机简史 https://blog.csdn.net/u012596975/article/details/107136261 安卓相机架构概述 https://blog.csdn.net/u012596975/article/details/107136568 应用层 https://blog.csdn.net/u012596975/article/details/107137110 服务层 https://blog.csdn.net/u012596975/article/details/107137156 硬件抽象层 https://blog.csdn.net/u012596975/article/details/107137523 实现硬件抽象层 https://blog.csdn.net/u012596975/article/details/107138576 驱动层 V4L2框架 https://blog.csdn.net/u012596975/article/details/107137555 高通KMD https://blog.csdn.net/u012596975/article/details/107138655 硬件层 https://blog.csdn.net/u012596975/article/details/107137883 安卓相机架构总结 https://blog.csdn.net/u012596975/article/details/107138177 手机相机的未来 https://blog.csdn.net/u012596975/article/details/107138203 ———————————————— 版权声明:本文为CSDN博主「xiaozi63」遵循原创文章CC 4.0 BY-SA版权协议,请附上原始来源链接和本声明。 原文链接:https://blog.csdn.net/u012596975/article/details/107135938

Android 是一种基于 Linux 为各种设备和型号创建的开源代码软件栈。如下图所示 Android 平台的主要部件。

在这里插入图片描述 Android系统利用分层思想,将各层的接口定义与实现分开,将接口作为各层脉络连接的整体框架,将具体实现的主导权移交给具体实现需求的平台制造商或Android 开发者不仅控制了整体情况,而且给了许多开发者足够的创造空间,这反映了一个优秀的开源系统应有的思想和愿景。其中,谷歌将根据不同的功能进行工作Camera框架一共划分成了五层,分别是App、Service、Provider、Driver和Hardware。 Android 电子邮件、短信、日历、互联网浏览和联系人日历、互联网浏览和联系人。与用户可以选择安装的应用程序选择安装的应用程序相同,没有特殊状态。因此,第三方应用程序可以成为用户的默认网络浏览器和短信 Messenger 甚至默认键盘(有一些例外,比如系统的设置应用)。 系统应用程序可用作用户应用程序,并提供开发人员可以访问自己的应用程序的主要功能。例如,如果您的应用程序需要发送短信,您可以调用已安装的短信应用程序向指定的接收者发送信息,而无需构建此功能。 应用层位于整个框架的顶部,承担用户直接交互的责任,承担用户直接或间接预览/照片/视频等一系列具体需求,一旦收到用户相关信息UI操作,就会通过Camera Api v2标准接口将需求发送到Camera Framework并等待部分Camera Framework回传处理结果,它包括图像数据和整个相机系统的状态参数,然后以某种方式反馈给用户,以记录和显示各种美丽时刻。 您可通过以 Java 语言编写的 API 使用 Android OS 整个功能集 API 形成创建 Android 可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

视图系统丰富可扩展,可用于构建应用 UI,网络浏览器包括列表、网格、文本框、按钮甚至可嵌入 用于访问本地化字符串、图形、布局文件等非代码资源的资源管理器 通知管理器允许所有应用程序在状态栏中显示自定义提醒 Activity 管理应用的生命周期,提供常见的导航返回栈 内容提供程序允许应用程序访问其他应用程序(如联系人应用程序)中的数据或共享自己的数据 
 开发人员可以完全访问 Android 系统应用框架 API。  

该层主要位于Camera App与Camera Service之间,以jar以包的形式运行App在这个过程中,它被封装了Camera Api v2实现接口的细节,给出暴露接口App调用,然后接收来自App内部流通的业务逻辑同时保持请求,最终通过调用Camera AIDL跨进程接口发送请求Camera Service处理,然后等待Camera Service回传结果,然后将最终结果发送到App。 许多核心 Android 例如, ART 和 HAL)需要构建自原生代码 C 和 C 原生库。Android 平台提供 Java 框架 API 向应用程序显示部分原生库的功能。例如,你可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,支持在应用中绘制和操作 2D 和 3D 图形。 需要开发 C 或 C 可以使用代码应用 Android NDK 从原始代码直接访问一些原始平台库。 对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用程序都在自己的过程中运行,并且有自己的 Android Runtime (ART) 实例。ART 通过执行编写 DEX 多个虚拟机在低内存设备上运行,DEX 文件是专为的 Android 经过优化,设计的字节码格式内存很少。例如,编译工具链 Jack)将 Java 源代码编译为 DEX 字节码,的字节码 Android 运行在平台上。

ART 主要功能包括:

预先 (AOT) 和即时 (JIT) 编译 优化垃圾回收 (GC) 在 Android 9(API 级别 在28)和更高版本的系统中,支持应用软件包 Dalvik Executable 格式 (DEX) 将文件转换为更紧凑的机器代码。 更好的调试支持,包括专用采样分析器、详细的异常诊断和崩溃报告,并设置观察点来监控特定的字段 

在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。假如你的应用在 ART 上操作效果很好,也应该可以 Dalvik 上操作,但反过来不一定。

Android 还包括一套核心运行时库,可以提供 Java API 使用框架 Java 编程语言中的大部分功能,包括一些 Java 8 语言功能。 该层位于Camera Framework与Camera Provider作为一个独立的过程个独立的过程Android在系统启动的早期阶段,它将被包装Camera AIDL提供跨进程接口Framework调用,然后接收来自Framework的图像请求,同时,内部维护了该层请求的处理逻辑,最后通过调用Camera HIDL跨进程接口将再次发送请求Camera Provider等待结果回传,然后上传结果Framework中。 该层位于Camera Service与Camera Driver作为一个独立的过程个独立的过程Android系统中,同时在系统启动初期被运行,提供Camera HIDL跨进程接口供Camera Service调用,包装接口的实现细节,接收来自Service图像请求,内部加载Camera HAL Module,该Module由OEM/ODM实现,遵循谷歌制定的标准Camera HAL3接口由接口控制Camera HAL部分,最后等待Camera HAL结果回传,紧接着Provider通过Camera HIDL接口将结果发送到Camera Service。 这部分是高通对谷歌Camera HAL3接口的实现,以so加载到库的形式Camera Provider中,以前用过QCamera & MM-Camera但是为了更好的灵活性和可扩展性,现在高通提出了CamX-CHI架构,架构提供HAL3接口给Provider进行调用,接收来自Provider内部对HAL实现了3个接口,并通过V4L2标准框架控制相机驱动层,将请求发送到驱动部分,等待结果返回,然后报告Camera Provider。 CamX-CHI架构由CamX和CHI两部分组成,CamX负责实现一些基本服务代码,不经常更改,CHI负责实现一些可扩展性和定制需求,方便OEM/ODM添加自己的扩展功能。CamX主要包括实现HAL3入口的hal实现与模块V4L2驱动交互的csl实现硬件的模块node的hwl和实现软件node的swl。CHI通过抽象出Usecase、Feature、Session、Pipeline、Node制造商可以通过实现概念ode接口来接入自己的算法,并通过XML文件灵活配置Usecase、Pipeline、Node的结构关系。 Linux为视频采集设备制定了标准的V4L2接口,并在内核中实现了其基础框架V4L2 Core。用户空间进程可以通过V4L2接口调用相关设备功能,而不用考虑其实现细节。V4L2提出了总设备和子设备的概念,并通过media controller机制向用户空间暴露自己的硬件拓扑结构。视频采集设备驱动厂商按照V4L2 Core的要求开发自己的驱动程序,只需要实现相应的结构体和函数接口并调用注册函数注册自己就行。 在高通平台上,高通对相机驱动部分进行了实现,利用了V4L2框架的可扩展特性,设计出了一套独特的KMD框架。在该框架内部主要包含了三个部分,CRM、Camera Sync以及一系列子设备,首先,作为框架顶层管理者,CRM创建了一个V4L2主设备用来管理所有的子设备,并且暴露设备节点video0给用户空间,同时内部维护着整个底层驱动业务逻辑。其次,Camera Sync创建了一个V4L2主设备,同时暴露了设备节点video1给用户空间,主要用于向用户空间反馈图像数据处理状态。最后,子设备模块被抽象成v4l2_subdev设备,同样也暴露设备节点v4l2-subdev给用户空间进行更精细化的控制。另外,在整个框架初始化的过程中,通过media controller机制,保持了在用户空间进行枚举底层硬件设备的能力。 相机硬件处在整个相机体系的最底层,是相机系统的物理实现部分,该部分包括镜头、感光器、ISP三个最重要的模块,还有对焦马达、闪光灯、滤光片、光圈等辅助模块。镜头的作用是汇聚光线,利用光的折射性把射入的光线汇聚到感光器上。感光器的作用是负责光电转换,通过内部感光元件将接收到的光信号转换为电子信号进而通过数电转换模块转为数字信号,并最后传给ISP。ISP负责对数字图像进行一些算法处理,如白平衡、降噪、去马赛克等。 通过上面的介绍,我们可以发现,谷歌通过以上五级分层,形成了整个相机框架体系,其中层与层之间通过行业协会、开源社区或者谷歌制订的标准接口进行连接,上层通过调用标准接口下发请求到下层,下层负责对标准接口进行实现,最终将请求再次封装并调用下一层级的对外接口下发到下层。所以总得来说,谷歌使用标准接口作为骨架搭建整体框架,而其具体实现交由各层自己负责,从整体上来看,职责划分明确,界限分明,这样的设计,一来利用标准接口,保持了整个框架业务正常流转,二来极大地降低了各层耦合度,保持了各层的相互独立,最终让整个框架处于一个稳定同时高效的运行状态。

标签: jack电子连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台