赞
踩
Android Automotive 是一个基本 Android 平台车载信息娱乐系统,简称IVI(In-Vehicle Infotainment)。
Android Automotive OS 简称 AAOS,是扩展自 Android OS 的操作系统、直接基于车载硬件运行。和 Android 一样是一个可定制程度非常高的全栈开源平台。
Android Automotive 就是 Android 平台。
Android Automotive 并非 Android 的分支或并行开发版本。
Android Automotive 扩展了 Android 平台。
Auto 和 Automotive 的命名比较相似,貌似分不清楚,实则区别非常明显。
** Android Auto 不是 OS。**
它是集成在 Android OS 里的 feature。
当通过 USB、Wi-Fi 将 Android Phone 连接到支持 Android Auto 的车机上后,Android OS 将自动加载支持 Auto 模式下的 App 并将图像投屏到车机屏幕上。
跟 CarPlay 一样,其本质上是投屏。Phone 提供计算、渲染,车机只是 Display,Display 和按键回传 Input 的事件,Phone 处理好之后将新的帧数据回传进行 Display。
而 Android Automotive 是 OS,其归属于 AOSP 项目,代码也在 Android OS 之中。在编译的时候选择 automotive 的编译 target 即可生成车载机使用的 AAOS。
Android Automative是在原先Android的系统架构上增加了一些与车相关的模块。
** Car App:包括OEM和第三方开发的App **
** Car API:提供给汽车App特有的接口**
** Car Service:系统中与车相关的服务**
** Vehicle Network Service:汽车的网络服务**
** Vehicle HAL:汽车的硬件抽象层描述**
包括 OEM厂商和第三方的apk(android/packages/services/Car)
提供给汽车app特有的接口。
这些API是提供给Android automotive系统的app,对于其他平台(例如手机和平板)通常是没有意义的,所以这些API没有包含在Android Framework SDK中。
代码路径:/packages/services/Car/car-lib/src/android/car/
上图只是展示了部分:
下面介绍一下关键的接口:
接口 | 解释 |
---|---|
car.java | 包含了与车相关的基本API。例如:车辆后视镜,门,座位,窗口等。 |
app →menu | 车辆应用菜单相关API。 |
cluster | 仪表盘相关API。 |
media | 多媒体相关API。 |
hardware | 车辆硬件相关API。 |
navigation | 导航相关API。 |
settings | 设置相关API。 |
Car Service并非一个服务,而是一系列的服务。
Car Service集中在一个App中。可以想象,这个App需要非常高的权限,所以这是一个系统App。
这些服务都在ICarImpl.java构造函数中列了出来: /packages/services/Car/service/src/com/android/car/ICarImpl.java
代码路径:hardware/interfaces/automotive/vehicle/2.0/
用于定义 OEM 可以实现的车辆属性的接口。
包含属性元数据(例如,车辆属性是否为 int 以及允许使用哪些更改模式)。
Vehicle HAL 支持 3 个级别的数据访问安全性:
仅允许部分系统组件直接访问车辆属性,而车辆网络服务是把关程序。大多数应用需通过汽车服务的额外把关(例如,只有系统应用可以控制 HVAC,因为这需要仅授予系统应用的系统权限)。
主要来看一下EVS的相关框架:
EVS,(Extended View System,扩展视图系统),包括以下系统组件:
代码路径:
APP:packages/services/Car/evs/
HAL:hardware/interfaces/automotive/evs/1.0/
编译目标:system/bin/evs_app
运行在init进程中,所以支持快速倒车。
今天的学习就到这里了。_
Ps:
最近开始负责Evs相关的模块了,系统的学习下。
不负时光 不虚此生。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。