【Android Camera开发】Android Automotive介绍

在这里插入图片描述

什么是Android Automotive

Android Automotive 是一个基本 Android 平台车载信息娱乐系统,简称IVI(In-Vehicle Infotainment)。

Android Automotive OS 简称 AAOS,是扩展自 Android OS 的操作系统、直接基于车载硬件运行。和 Android 一样是一个可定制程度非常高的全栈开源平台。

Android Automotive 就是 Android 平台。

在这里插入图片描述

Android Automotive 和 Android

  1. Android Automotive 并非 Android 的分支或并行开发版本。

  2. Android Automotive 扩展了 Android 平台。

Android Automotive 和 Android Auto

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 Automotive 架构

Android Automative是在原先Android的系统架构上增加了一些与车相关的模块。

在这里插入图片描述

** Car App:包括OEM和第三方开发的App **
** Car API:提供给汽车App特有的接口**
** Car Service:系统中与车相关的服务**
** Vehicle Network Service:汽车的网络服务**
** Vehicle HAL:汽车的硬件抽象层描述**

Car App

包括 OEM厂商和第三方的apk(android/packages/services/Car)
在这里插入图片描述

Car ApI

提供给汽车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 Services

Car Service并非一个服务,而是一系列的服务。

Car Service集中在一个App中。可以想象,这个App需要非常高的权限,所以这是一个系统App。

这些服务都在ICarImpl.java构造函数中列了出来: /packages/services/Car/service/src/com/android/car/ICarImpl.java

Vehicle HAL

代码路径:hardware/interfaces/automotive/vehicle/2.0/

用于定义 OEM 可以实现的车辆属性的接口。
包含属性元数据(例如,车辆属性是否为 int 以及允许使用哪些更改模式)。

Vehicle HAL 支持 3 个级别的数据访问安全性:

  • 仅限系统(由 vns_policy.xml 控制)
  • 允许拥有权限的应用访问(通过汽车服务)
  • 无需任何权限即可访问(通过汽车服务)

仅允许部分系统组件直接访问车辆属性,而车辆网络服务是把关程序。大多数应用需通过汽车服务的额外把关(例如,只有系统应用可以控制 HVAC,因为这需要仅授予系统应用的系统权限)。

主要来看一下EVS的相关框架:

EVS

EVS,(Extended View System,扩展视图系统),包括以下系统组件:

在这里插入图片描述

代码路径:

APP:packages/services/Car/evs/
HAL:hardware/interfaces/automotive/evs/1.0/
编译目标:system/bin/evs_app
运行在init进程中,所以支持快速倒车。

今天的学习就到这里了。_


Ps:
最近开始负责Evs相关的模块了,系统的学习下。

不负时光 不虚此生。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012739527/article/details/126362424