Android车载系统Car模块架构链路分析

一、模块主要成员

CarServiceHelperService 

SystemServer 中专门为 AAOS 设立的系统服务,用来管理车机的核心服务 CarService。该系统服务的具体实现在 CarServiceHelperServiceUpdatableImpl

CarService

Car模块核心服务APP,Android 13版本开始分为两个,一个是掌管 CarService 服务类的 builtin app,源码在:packages/services/Car/service-builtin/,一个是拥有具体实现和大量 Service 的 updatable app,源码在:packages/services/Car/service/;在系统中,它是在/system/priv-app/CarService/CarService.apk

Car-lib(Car API)

Android 车机里提供给系统使用汽车相关功能的专用接口,源码在:packages/services/Car/car-lib/,它会编译到 android.car.jar 中,其中包括常用的 Car、CarPowerManager、CarSettings 等。

Car APPs

AAOS 专为汽车设计的系统app,目录在:packages/apps/Car/。例如面向 Car 的 SystemUI、Launcher、Settings等。

二、Car模块内部交互机制

下面用一张图以 CarInputService 和 CarpropertyService 演示说明:

 三、总结

Car 相关组件所属进程作用
CarServiceHelperServiceSystemServer管理 Car Serivce 的系统服务
CarServicebuiltin appCar 核心服务
updatable appCar 核心服务的具体实现
Car-libandroid.car.jarCar API SDK
Car AppsLauncher 等Car 专门设计的一系列 App
  1. SystemServer 进程在系统启动的时候发现 OS 具备 Automotive 的 feature,则启动 CarServiceHelperService 系统服务,并交由 CarServiceHelperServiceUpdatableImpl 实际负责和 CarService 的绑定
  2. CarService 的 builtin app 由父类 ServiceProxy 完成中转,即反射出 updatable app 中 CarServiceImpl 实例
  3. CarServiceImpl 的初始化将构建 ICarImpl 实例并构建内部的一堆具体服务 CarServiceBase,比如负责输入的 CarInputService 、负责车辆属性的 CarPropertyService 等
  4. 这些具体服务通过 HalServiceBase 和 VehicleHal 进行交互,比如调度输入事件的 InputHalService、读写/转换车辆属性的 PropertyHalService 等
  5. 后续的交给 VehicleHal 通过 HIDL 和 HAL 层交互
  6. 其他 Apps 可以通过 Car lib 提供的 Car API 获取 CarService 中的服务接口即 ICarImpl
  7. ICarImpl 通过启动时候注册的服务名称和 CarServiceBase 实例对照表向 Apps 返回对应的接口实例,比如控制、监听输入的 CarInputManager、读写车辆属性的 CarPropertyManager
  8. 其他 Apps 拿到这些 Manager 接口之后,像 AOSP 中使用 ActivityManager 等接口一样通过 AIDL 和 CarService 进行交互

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql新增用户密码控制局域网访问权限

方法一、通过navicat中sql语句新增 CREATE USER usernamelocalhost IDENTIFIED BY password; GRANT ALL PRIVILEGES ON *.* TO usernamelocalhost WITH GRANT OPTION; FLUSH PRIVILEGES;把其中的username和password改成自己的即可 如果将上面的localhost改成%,则这…

CentOS stream 9配置网卡

CentOS stream9的网卡和centos 7的配置路径:/etc/sysconfig/network-scripts/ifcfg-ens32不一样。 CentOS stream 9的网卡路径: /etc/NetworkManager/system-connections/ens32.nmconnection 方法一: [connection] idens32 uuid426b60a4-4…

day04_java中的运算符

运算符概述 概念:对常量或者变量进行操作的符号。用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。 运算符按照其要求的操作数数目来分,可以有单目运算符(1 个操作数…

Docker 安装 PHP

Docker 安装 PHP 安装 PHP 镜像 方法一、docker pull php 查找 Docker Hub 上的 php 镜像: 可以通过 Sort by 查看其他版本的 php,默认是最新版本 php:latest。 此外,我们还可以用 docker search php 命令来查看可用版本: runoobrunoob:…

【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

这里写目录标题 EasyExcel教程Maven依赖 EasyExcel API分析介绍EasyExcel 注解通用参数ReadWorkbook(理解成excel对象)参数ReadSheet(就是excel的一个Sheet)参数注解参数通用参数 WriteWorkbook(理解成excel对象&#…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测,可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状,并获取其位置坐标等信息,从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 : 1.为了分辨流水线上…

EasyX图形化学习(三)

1.帧率: 即每秒钟界面刷新次数,下面以60帧为例: 1.数据类型 clock_t: 用来保存时间的数据类型。 2.clock( ) 函数: 用于返回程序运行的时间,无需参数。 3.例子: 先定义所需帧率: const …

Flutter:跨平台移动应用开发的未来

Flutter:跨平台移动应用开发的未来 引言 Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包,用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布,并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来…

Android Traceview 定位卡顿问题

Traceview 是一个 Android 性能分析工具,用于时间性能分析,主要帮助开发者了解应用程序中各个方法的执行时间和调用关系。通过图形化界面查看应用程序的代码执行细节,包括每个方法的调用次数、方法调用的时间消耗、方法调用堆栈等信息。我们可…

Baichuan2百川模型部署的bug汇总

1.4bit的量化版本最好不要在Windows系统中运行,大概原因报错原因是bitsandbytes不支持window,bitsandbytes-windows目前仅支持8bit量化。 2. 报错原因是机器没有足够的内存和显存,offload_folder设置一个文件夹来保存那些离线加载到硬盘的权…

模具制造企业ERP系统有哪些?企业怎么选型适配的软件

模具的生产管理过程比较繁琐,涵盖接单报价、车间排期、班组负荷评估、库存盘点、材料采购、供应商选择、工艺流转、品质检验等诸多环节。 有些采用传统管理手段的模具制造企业存在各业务数据传递不畅、信息滞后、不能及时掌握订单和车间生产情况,难以对…

游戏《泰坦陨落2》msvcr120.dll丢失的多种解决方法分享

在Windows 11操作系统环境下,众多玩家在体验《泰坦陨落2》这款备受瞩目的射击游戏时,遭遇了一个令人困扰的技术问题:系统提示缺失msvcr120.dll文件。这一关键的动态链接库文件对于游戏的正常运行至关重要,它的缺失直接导致了《泰坦…

仓储的未来:为叉车配备智能设备

近年来,数字化和自动化极大地重塑了仓储行业。叉车是仓库的主力,正在配备智能设备以简化操作。 点击下载Dynamsoft最新版https://www.evget.com/product/3691/download 智能叉车的序列化艺术 序列化是为每个商品或托盘分配唯一标识符(通常采…

shiro实战详解(2)

shiro实战详解(2) 03 Shiro入门1.身份认证1.1基本流程1.2案例 2.Realm2.1Realm接口2.2认证案例2.3认证授权案例 3.编码、散列算法3.1编码与解码3.2散列算法案例 4.身份授权5.Shiro默认过滤器5.1认证相关5.2授权相关 03 Shiro入门 1.身份认证 1.1基本流…

关于 mysql数据库应用程序登录卡顿无响应崩溃 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135682663 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

易基因:cfDNA甲基化在器官和组织损伤检测中的强大力量

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 检测器官和组织损伤对于早期诊断、治疗决策和监测疾病进展至关重要。由于DNA甲基化模式可以响应组织损伤而改变,甲基化检测提供了一种有前途的方法,在早筛早诊、疾…

HarmonyOS—开发环境诊断的功能

为了大家开发应用/服务的良好体验,DevEco Studio提供了开发环境诊断的功能,帮助大家识别开发环境是否完备。可以在欢迎界面单击Help > Diagnose Development Environment进行诊断。如果已经打开了工程开发界面,也可以在菜单栏单击Help >…

域环境权限提升

Windows系统配置错误 在Windows系统中,攻击者通常会通过系统内核溢出漏来提权,但是如果碰到无法通过系统内核溢出漏洞法国提取所在服务器权限的情况,就会系统中的配置错误来提权。Windows系统中常见哦欸之错误包括管理员凭证配置错误&#x…

享元模式介绍

目录 一、享元模式介绍 1.1 享元模式定义 1.2 享元模式原理 1.2.1 享元模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、享元模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 类图 2.2.2 具体实现 2.2.2.1 抽象享元类 2.2.2.2 共享享元类-白色棋子 2.2.2.3 共享享元…

《对话品牌》—广西南宁隆生达发电力科技有限公司

本期节目《对话品牌》栏目邀请到了广西南宁隆生达发电力科技有限公司董事长叶占广参加栏目录制,分享企业品牌故事,树立企业品牌形象,提升企业品牌价值! 节目嘉宾:叶占广先生 节目主持人:吴昊 节目播出平…