CameraProvider启动流程

news2024/11/20 14:29:11

        从Android 8.0之后,Android 引入Treble机制,主要是为了解决目前Android 版本之间升级麻烦的问题,将OEM适配的部分vendor与google 对android 大框架升级的部分system部分做了分离,一旦适配了一个版本的vendor信息之后,之后的版本再进行升级时,直接升级system即可,这个就不会给OEM厂商升级带来太大的工作量,直接升级最新功能,可以解决目前市面上Android版本过来凌乱的问题。

  首先Treble机制在Vendor分区中有两种模式,一个编译成so库,供System分区的进程和应用直接加载调用,两者在同一个进程中,这种叫直通式 HAL(passthrough)模式, 另外一种是直接编译成一个daemon可运行的服务,然后System分区的进程通过HwBinder的IPC通信方式来调用,两者在二个独立的进程中,这种称为绑定式HAL(Binderized )模式。

        本文主要讲的是HAL(Binderized )模式。

一、main函数入口

/hardware/interface/camera/provider/2.4/default/service.cpp

主要就是defaultPassthroughServiceImplemention这个函数,虽然名字是passthrough,其实并不是上面说的直通式的。

二、LegacySupport

/system/libhidl.transport/include/hidl/LegacySupport.h

/system/libhidl.transport/LegacySupport.cpp

defaultPassthroughServiceImplemention的具体实现就在这两个文件里面了

三、ServiceManagement

/system/libhidl.transport/ServiceManagement.cpp

主要逻辑都在这个文件里面

getRawServiceInternal 的本质就是创建CameraProvider对象,返回的IBase就是CameraProvider,创建完之后将其注册到系统服务由ServiceManager管理

上面这些代码的作用就是到 /system/lib/hw  或者 /vendor/lib/hw 或者 /odm/lib/hw 这些目录下去找动态库,找什么样的动态库呢?就是根据服务的包名。

上面的fqName就是 ICameraProvider::descriptor

这要就是这段解析服务名去找库名(个人感觉很不友好,库名必须要和代码逻辑一致),sys就是找函数符号了,其实就是CameraProvider的构造函数

  构造CameraProvider对象,也就是IBase

service创建好之后就通过回调注册到ServiceManager了,不做深入分析了

四、回到ICameraProvider

/hardware/interface/camera/provider/2.4/default

CameraProvider的构造大概就这么多,至于CameraDevice,CameraSession这些都是通过CameraProvider创建的

另外服务还是需要在manifest里面注册的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1720287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

炫云亮相第二十届中国国际动漫节国际动漫游戏商务大会!

5月28日-29日,备受瞩目的第二十届中国国际动漫节国际动漫游戏商务大会(iABC2024)在杭州滨江开元名都大酒店隆重召开!本届大会以动漫IP为核心,从源头到全系列数字内容,探索创新协同、融合发展、价值转化,并对重点作品和…

校园安保巡逻机器人

2023年8月5日,陕西西安一高校实验室起火冒烟,导致学校化学实验室发生火灾。2022年8月3日,一名歹徒持械闯入江西吉安安福县城的一家私立幼儿园,对着无辜的幼儿行凶伤人,造成3死6伤。 像这样的事故有不断地发生&#xf…

计算机基础学习路线

计算机基础学习路线 整理自学计算机基础的过程,虽学习内容众多,然始终相信世上无难事,只怕有心人,期间也遇到许多志同道合的同学,现在也分享自己的学习过程来帮助有需要的。 一、数据结构与算法 视频方面我看的是青…

DNF手游攻略:勇士进阶指南!

在即将到来的6月5日,《DNF手游》将迎来一场盛大的更新,此次更新带来了大量新内容和玩法,极大丰富了游戏的体验。本文将为广大玩家详细解析此次更新的亮点,包括新增的组队挑战玩法“罗特斯入门团本”、新星使宠物的推出、宠物进化功…

【Android】

hint在text显示提示内容 设置主键,在mainactivity // 获取SharedPreferences对象存放的用户名和密码,并设为相应组件的值 //指定key的值,及获取不到值时使用的默认值 String sName sp.getString("name", "unknown")…

pom文件中,Maven导入依赖出现 Dependency not found

解决方案: 1、首先看一下自己的Maven是否配置好了 2、再检查一下镜像是否正确 3、如果上面都没有问题,看 dependencyManagement 标签 我这个出错,爆一大片红就是因为 这个标签 dependencyManagement 解决方法:在父工程中进行依…

实现样式一键切换

实现效果实现方法操作步骤 1.实现效果类似于: 点击切换后更改样式为: 2.实现方法 1.通过css变量切换主题 2.通过link引入css文件切换主题 3.实现方法 定义下拉框双向绑定数据(写到根组件app.vue中), 设置theme默认值…

【产品经理】从父订单到仓库出库单

订单拆单到仓库发货,整个流程是什么样的?拆单系统又分为哪几个部分? 正常购物的流程:选购好商品从购物车下单、生成订单、确认订单支付、然后坐等收货、收到货确认收货。 从购物车里面会选多个商家的商品一起下单,有时…

Python | Leetcode Python题解之第120题三角形最小路径和

题目: 题解: class Solution:def minimumTotal(self, triangle: List[List[int]]) -> int:n len(triangle)f [0] * nf[0] triangle[0][0]for i in range(1, n):f[i] f[i - 1] triangle[i][i]for j in range(i - 1, 0, -1):f[j] min(f[j - 1], …

Flutter基础 -- Dart 语言 -- 注释函数表达式

目录 1. 注释 1.1 单行注释 1.2 多行注释 1.3 文档注释 2. 函数 2.1 定义 2.2 可选参数 2.3 可选参数 默认值 2.4 命名参数 默认值 2.5 函数内定义 2.6 Funcation 返回函数对象 2.7 匿名函数 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算术操作符 3.3 相等相关的…

使用cad绘制一个螺旋输送机

1、第一步,绘制一个矩形 2、使用绘图中的样条线拟合曲线,绘制螺旋线。 绘制时使用上下辅助线、阵列工具绘制多个竖线保证样条线顶点在同一高度。 3、调整矩形右侧的两个顶点,使其变形。 矩形1和矩形2连接时,使用blend命令&#…

[PyQt5] 窗口接收WM_COPY消息

#本程序是python qt5 创建的窗口,拦截外部消息给窗口发送的WM_COPY消息并显示出来。一般是用来作为窗口之间的通讯机制之一。 python文件如下:qt5拦截消息 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QAp…

低代码与人工智能的深度融合:行业应用的广泛前景

引言 在当今快速变化的数字化时代,企业面临着越来越多的挑战和机遇。低代码平台和人工智能技术的兴起,为企业提供了新的解决方案,加速了应用开发和智能化转型的步伐。 低代码平台的基本概念及发展背景 低代码平台是一种软件开发方法&#x…

03-树1 树的同构(浙大数据结构PTA习题)

03-树1 树的同构 分数 25 作者 陈越 单位 浙江大学 给定两棵树 T1​ 和 T2​。如果 T1​ 可以通过若干次左右孩子互换就变成 T2​,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G…

案例实践 | 基于长安链的首钢供应链金融科技服务平台

案例名称-首钢供应链金融科技服务平台 ■ 建设单位 首惠产业金融服务集团有限公司 ■ 用户群体 核心企业、资金方(多为银行)等合作方 ■ 应用成效 三大业务场景,共计关联29个业务节点,覆盖京票项目全部关键业务 案例背景…

Pipecat: 创建语音对话agent的开源框架,支持多模态!

项目简介 pipecat 是用于构建语音(和多模态)对话代理的框架。诸如私人教练、会议助理、儿童讲故事玩具、客户支持机器人、摄入流程和尖刻的社交伙伴。 看看一些示例应用: 语音代理入门 您可以开始在本地计算机上运行 Pipecat,然…

相同的树(oj题)

一、题目链接https://leetcxode-cn.com/problems/same-tree/ 二、题目思路 遍历整颗树,判断两棵树的每个位置的结点都相同。 每个结点的左右孩子结点都要综合判断 三、题解代码 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//如果两颗树的根结点…

如何评价GPT-4o?GPT-4o和ChatGPT4.0的区别是啥呢?

如何评价GPT-4o? GPT-4o代表了人工智能领域的一个重要里程碑,它不仅继承了GPT-4的强大智能,还在多模态交互方面取得了显著进步。以下是几个方面的分析: 技术特点 多模态交互能力:GPT-4o支持文本、音频和图像的任意组合输入与输出…

Windows 权限维持之 Shift 后门

正常情况下我们连按五次 shift 键会弹出粘滞键 粘滞键是电脑使用中的一种快捷键,一般连按五次 shift 会出现粘滞键提示,粘滞键是专为同时按下两个或多个键有困难的人而设计的, 粘滞键开启后,可以先按一个键位,再按另一…

利用数组求出费波纳西数列的前100个值,随即输出四个值

利用数组求出费波纳西数列的前100个值&#xff0c;随即输出四个值 #include <stdio.h> int main () {double a1,b1; int i; for(i1;i<100;i) { printf("%-35.0lf%-35.0lf",a,b);if(i%20)printf("\n");aab;bba; } return 0; } 运行图