尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
CameraService 详解二(open camera)
前面介绍了camera service的初始化过程这里接着介绍open camera在camera service的流程。前面有介绍camera app的常用接口通过调用api2提供的opencamera接口调用到cameraservice来打开一个指定逻辑camera id的camera对象在camera service再进一步实现该接口 并逐层调用到更底层的provider和HAL那我们看一下具体在camera service这层 opencamera的调用flow。我们可以看到在Icameraservice的左边是camera app的调用flow这些接口跑在camera app的进程里最后通过connectDevice函数通过 Icameraservice的接口跨进程调用到cameraservice在cameraservice的connectDevice的接口里主要做了三件事1调用validateConnectLocked接口检查当前要打开的camera是否已经locked这里locked比如说检查是否该camera是否打开是否需要处理抢占的情况根据app的优先级抢占camera的使用2CheckPermissions接口则是检查当前clientcamera app的权限。3最后则是创建一个cameradeviceclient与app端的camera device一一对应。接着在cameradeviceclient的构造函数里又进一步创建了一个camera3device对象并调用它的initialize方法。创建的camera3device用来和providerManager和HAL的provider进行交互。在camera3device的initialize方法里最重要的会去调用到cameraprovidermanager方法的opensession方法 通过hidl跨进程调用到cameraprovider进程创建一个在cameraprovider进程里相对应的一个session对象该对象会callback回调到cameraservice 并进一步回传给camera app从而建立映射关系。这里涉及的类/对象调用关系如下整个的架构和流程都比较清楚包括后面的其他api2接口也是遵循这样的架构层层调用到HAL。
RELATED

相关推荐

Python网络CSV直读实战:HTTP控制、编码压缩与企业级健壮性

Python网络CSV直读实战:HTTP控制、编码压缩与企业级健壮性

1. 项目概述:为什么“直接读取网络CSV”是每个数据从业者绕不开的基本功你有没有遇到过这样的场景:早上刚收到运营同事发来的链接,说“最新用户行为数据在这儿,快跑个分析”;或者在复现某篇论文时,作者只给…

📅 2026/9/12 22:40:31
C语言实战:手搓进制转换器,实现十六进制与十进制的灵活互转

C语言实战:手搓进制转换器,实现十六进制与十进制的灵活互转

1. 为什么需要手动实现进制转换?在嵌入式开发和底层编程中,我们经常需要直接操作硬件寄存器或处理内存数据,这些场景下十六进制表示尤为常见。虽然C标准库提供了strtol和printf等现成函数,但手动实现转换算法能带来三个关键好处&a…

📅 2026/9/26 13:54:02
《卡片添加至桌面》三、@ohos.file.storageStatistics使用指南

《卡片添加至桌面》三、@ohos.file.storageStatistics使用指南

HarmonyOS ohos.file.storageStatistics(应用空间统计)使用指南摘要:本文详细介绍 HarmonyOS ohos.file.storageStatistics 模块的使用方法,涵盖存储容量统计 API 的属性说明、同步/异步调用方式、完整代码示例,以及在…

📅 2026/9/12 14:05:02
MORE NEWS

更多资讯

📰

CentOS 7下Docker Redis三主三从集群一键部署脚本与避坑

简介:针对 CentOS 7.x 环境下希望快速搭建容器化 Redis 集群的 Linux 运维人员与后端开发者,提供一套可传递参数后自动执行的 shell 部署方案,用于减少逐节点配置、容器编排和基础环境准备中的重复操作,适合实验环境验证及中小项目…

📰

E3-1231 v3+B85-D3H黑苹果OpenCore EFI配置与避坑

简介:面向 Intel E3 1231V3 处理器搭配 B85 D3H 主板的黑苹果 EFI 引导配置包,主要服务于希望在非苹果硬件上安装并运行 macOS 的进阶玩家与装机爱好者。内容围绕 Clover/OpenCore 类引导所需组件展开,包含 ACPI 补丁、驱动内核扩展、设备属性…

📰

工业控制系统深度解析:35 电机速度控制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Qt飞机大战源码拆解:从工程结构到二次开发实战

简介:这份资源是面向Qt初学者与游戏开发入门者的「飞机大战」完整项目源码包,围绕Qt框架的图形渲染、事件驱动与资源管理等核心能力展开,可用于课程设计、练手项目或Qt技术学习参考。压缩包共223个文件,约6.21MB,以105…

📰

JSP农贸交易系统开发与优化实践

1. 项目概述 这个JSP农贸产品交易系统是一个典型的B2B电子商务平台,专为农产品流通领域设计。我在2018年曾参与过类似项目的全流程开发,深知这类系统对农产品供需匹配的关键作用。系统采用经典的JSPServlet技术栈,配合MySQL数据库&#xff0c…

📰

Qt QTableWidget十万行数据卡顿假死?模型视图优化与排查指南

简介:这份资源面向使用 Qt 进行 GUI 开发、需要解决 QTableWidget 大数据量展示卡顿问题的开发者,核心围绕惰性加载(Lazy Loading)思路展开。包内共 12 个文件,以 5 个 cpp 源文件与 4 个 h 头文件为主体,另…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬