自带root权限的框架 android网络框架对比


自带root权限的框架 android网络框架对比

文章插图
这篇文章主要分下面几点来展开讲解:
1) Android 最新Camera 整体框架;2) Android Camera2 和HAL3 的基本了解;3) Camera2 介绍;( 本文所写的内容基于Android 9.0 )
一、Android最新Camera 整体框架
Android Camera整体框架主要包括三个进程: app进程 、 camera server进程 、 hal进程(provider进程)。进程之间的通信都是通过binder实现,其中app和camera server通信使用 AIDL (Android Interface Definition Language) ,camera server和hal(provider进程)通信使用 HIDL (HAL interface definition language)。
Android上面的框架分级,基本都是类似的,应用层-> framework层->Hal层,我们ps看下设备上实际的进程情况,如下图所示,可以看到有cameraserver和provider进程 。cameraservice是负责app和framework层的通信,而provider进程则是负责framework和hal层之间的通信 。
(附:
Android 8.0重新设计了 Android 操作系统框架(在一个名为 “Treble” 的项目中),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统 。
Android O之后使用Treble的架构,为了解决Android系统的碎片化问题和提高系统更新的效率,减少了framework 和HAL 的耦合性,进而引出了HIDL 的概念 。
HIDL 全称为HAL interface definition language(发音为“hide-l”)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL) 。
HIDL 的目标是,框架可以在无需重新构建 HAL 的情况下进行替换 。HAL 将由供应商或 SOC 制造商构建,放置在设备的 /vendor 分区中,这样一来,框架就可以在其自己的分区中通过 OTA 进行替换,而无需重新编译 HAL,这也是Project Treble框架设计而诞生的 。)
如下图所示,展示了Android Camera的最新框架,我们先大概看下图片流程,对整体框架有个基本了解 。
二、Android Camera2 和HAL3 的基本了解
1) Camera2 接口什么时候开始引入的?
从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1(android.hardware.Camera)。
不了解的同学,可能会有疑问,为啥要废弃Camera1接口?
基本原因是,camera1接口过于简单,没法满足更加复杂的相机应用场景 。为了给应用层提供更多的相机控制权限,从而构建出更高质量的相机应用程序,Google才推出了Camera2 接口 。
下面可以看下和Camera1比较,Camera2有哪些高级特性 。
2)一些只有 Camera2 才支持的高级特性
1. 在开启相机之前检查相机信息 出于某些原因,你可能需要先检查相机信息再决定是否开启相机,例如检查闪光灯是否可用 。在 Caemra1 上,你无法在开机相机之前检查详细的相机信息,因为这些信息都是通过一个已经开启的相机实例提供的 。在 Camera2 上,我们有了和相机实例完全剥离的 CameraCharacteristics 实例专门提供相机信息,所以我们可以在不开启相机的前提下检查几乎所有的相机信息 。2. 在不开启预览的情况下拍照 在 Camera1 上,开启预览是一个很重要的环节,因为只有在开启预览之后才能进行拍照,因此即使显示预览画面与实际业务需求相违背的时候,你也不得不开启预览 。而 Camera2 则不强制要求你必须先开启预览才能拍照 。3. 一次拍摄多张不同格式和尺寸的图片 在 Camera1 上,一次只能拍摄一张图片,更不同谈多张不同格式和尺寸的图片了 。而 Camera2 则支持一次拍摄多张图片,甚至是多张格式和尺寸都不同的图片 。例如你可以同时拍摄一张 1440×1080 的 JPEG 图片和一张全尺寸的 RAW 图片 。4. 控制曝光时间 在暗环境下拍照的时候,如果能够适当延长曝光时间,就可以让图像画面的亮度得到提高 。在 Camera2 上,你可以在规定的曝光时长范围内配置拍照的曝光时间,从而实现拍摄长曝光图片,你甚至可以延长每一帧预览画面的曝光时间让整个预览画面在暗环境下也能保证一定的亮度 。而在 Camera1 上你只能 YY 一下 。5. 连拍 连拍 30 张图片这样的功能在 Camera2 出现之前恐怕只有系统相机才能做到了(通过 OpenGL 截取预览画面的做法除外),也可能是出于这个原因,市面上的第三方相机无一例外都不支持连拍 。有了 Camera2,你完全可以让你的相机应用程序支持连拍功能,甚至是连续拍 30 张使用不同曝光时间的图片 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: