Android Automotive车载嵌入式系统
一、Android Auto
Android Auto是一个Android端的App,是专门为驾驶环境而设计的,把手机的部分功能通过数据线连接,影射到汽车屏幕上。目前,支持Android Auto的应用比较少。主要是是两类第三方应用,第一个是音视频类,第二个是消息类。相关应用的开发没有深入探索,有机会研究研究。
二、Android Automotive
上面介绍Android Auto是手机为中心,通过数据线连接汽车。这种模型既有好处,也有坏处。好处是:数据和应用始终是一致的,不存在需要数据同步的问题,手机上装的软件和已有的数据,接到汽车直接就有了。而坏处是,每次得拿出手机,汽车只是手机一个外设,这种模式不便于对于汽车本身的控制和相关数据的获取。如果是系统直接内置于汽车,那就是完全不一样的体验了。Android Automotive则是面向这个方向设计的。
Android automotive的系统架构图如下:Android Automative是在原先Android的系统架构上增加了一些与车相关的(图中虚线框中绿色背景的)模块。
- Car App:包括OEM和第三方开发的App
- Car API:提供给汽车App特有的接口
- Car Service:系统中与车相关的服务
- Vehicle Network Service:汽车的网络服务
- Vehicle HAL:汽车的硬件抽象层描述
1、下面具体介绍一下每个模块:
1.1 Car App
包括 OEM厂商和第三方的apk,声明代码路径如下,car_base下主要是系统的基础平台,car.mk为添加的所有汽车制造的通用制造文件,这个列表中,首字母大写的模块基本上都是汽车系统中专有的App。源码位于android/packages/services/Car,当然我们自己也可以添加apk,这部分相对来说用到java比较多,后面有机会往更深层的学习。
1.2 Car ApI
提供给汽车app特有的接口。这些API是提供给Android automotive系统的app,对于其他平台(例如手机和平板)通常是没有意义的,所以这些API没有包含在Android Framework SDK中。如图是几乎涵盖了Android automotive所有的api接口。
代码的路径位于:
下面介绍一下关键的接口:
- car.java:包含了与车相关的基本API。例如:车辆后视镜,门,座位,窗口等。
- app →menu:车辆应用菜单相关API。
- cluster:仪表盘相关API。
- media:多媒体相关API。
- hardware:车辆硬件相关API。
- navigation:导航相关API。
- settings:设置相关API。
1.3 Car Services
Android Automative中的Car Service集中在一个App中。可以想象,这个App需要非常高的权限,所以这是一个系统App。Car Service并非一个服务,而是一系列的服务。这些服务都在ICarImpl.java构造函数中列了出来。
还有几个模块没有出现在上面的架构图中。但它们也包含在了Android Automative系统中,这里一并介绍一下。
- VMS:vehicle monitor service, 汽车其他服务监测,主要是监测其他进程。
- ODB2: ODB全称是On-Board Diagnostics。这是一种装置于车中用以监控车辆运行状态和回报异常的系统,可于车辆的子系统出现问题时,产生故障代码和提醒讯号通知车主和车厂诊断维修
VNS: Vehicle Network Service,
1.4 Vehicle HAL
车载HAL使用以下接口:
vehicle_prop_config_t const *(*list_properties)(..., int* num_properties)
列出车载 HAL 所支持的所有属性的配置。车辆网络服务只会使用受支持的属性。(*get)(..., vehicle_prop_value_t *data)
读取属性的当前值。对于区域属性,每个区域都可能具有不同的值。(*set)(..., const vehicle_prop_value_t *data)
为属性写入相应值。写入的结果是按属性进行定义。(*subscribe)(..., int32_t prop, float sample_rate, int32_t zones)
监视属性值的变化,回调见下文。(*release_memory_from_get)(struct vehicle_hw_device* device, vehicle_prop_value_t *data)
释放从 get 调用分配的内存。
车载HAL使用以下回调接口:
(*vehicle_event_callback_fn)(const vehicle_prop_value_t *event_data)
通知车辆属性值的变化。(*vehicle_error_callback_fn)(int32_t error_code, int32_t property, int32_t operation)
返回全局车载 HAL级错误或每个属性的错误。全局错误会导致HAL重新启动,这可能导致包括应用在内的其他组件重新启动。
Android Automotive车载嵌入式系统相关推荐
- 【车载开发】Android Automotive车载操作系统开发解密篇
提到Android车载,我们应该都不陌生.传统的车载功能单一,无太多娱乐性,而随着智能化时代的发展,车载系统也被赋予了在系统中预装 Android 应用的能力,基于Android平台的车载信息娱乐系统 ...
- Android automotive车载开发(5)-----系统架构
系统架构 前面简单介绍了一下Android Automotive 的架构,具体Android Automotive 在系统的每个层,都做了哪些东西,这里总结一下. 系统应用层 Android Auto ...
- Android automotive车载开发(1)-----Automotive audio
车载音频 Android Automotive OS (AAOS) 是在核心 Android 音频堆栈的基础之上打造而成,以支持用作车辆信息娱乐系统的用例.AAOS 负责实现信息娱乐声音(即媒体.导航 ...
- [原创] Android Automotive 车载应用对驾驶模式(Safe Drive Mode)适配的几种方法
目录 前言 开发环境 1. Android Automotive 和 Android Auto的区别 Android Auto: 2. Android Automotive 的驾驶模式介绍 3. An ...
- Android Automotive OS在国内车载系统市场能分到多大一杯羹?
前言: 随着汽车智能化趋势的进一步发展,车载系统越来越得到各大汽车厂商的重视,同时也涌入了一批互联网企业加入,甚至很多汽车厂商直接使用Android车载系统来打造自己的车机系统,比如宝马在今年宣布将在 ...
- 【读书速记】《汽车嵌入式系统手册》(1)
前言 本文旨在对<汽车嵌入式系统手册>进行速读,粗略了解基本概念.以便在后续需要的时候加以详细理解. 文章目录 前言 第一章 车辆功能域及其需求 1.2 功能域 1.3 标准化的部件. ...
- 基于Android的车载操作系统 目录
基础篇: [IVI]1. Android Automotive OS 安卓车载操作系统白皮书 [IVI]2.1 Andorid Automotive 源码aosp_coral_car项目构建流程 [I ...
- Android转车载难不难?一文揭秘Android车载操作系统开发
我们知道,如今车载系统中对娱乐.应用生态有需求的中控和副驾一般由Android系统控制,Android Automotive 则是一个基于 Android 平台扩展后,适用于现代汽车的智能操作系统,可 ...
- 车载应用技术——Android Automotive系统
黄金赛道 在智能手机行业初兴起时,包括BAT在内许多传统互联网企业都曾布局手机产业,但是随着手机市场的基本定型,造车似乎又成了各大资本下一个追逐的方向.百度.小米先后宣布造车,阿里巴巴则与上汽集团共同 ...
最新文章
- 使用html格式,通过php调用数据库并显示数据
- 深入理解display属性
- 编写第一个HADOOP应用程序
- lintcode:二叉树的层次遍历
- 提前还清贷款为什么还要付违约金?
- Spring Boot中带有CKEditor的AJAX
- C++中引用传递与指针传递区别(进一步整理)
- [傅里叶变换及其应用学习笔记] 二十四. 级联,脉冲响应
- linux shell 上传,下载ftp文件
- 国产统一操作系统(UOS)安装、体验
- dedecms联动筛选_DEDECMS分类信息按联动类别筛选的实现方法
- java定时器每一分钟执行一次_2行代码搞定一个定时器
- erlang的运算符
- oracle 查询default,oracle分区表检查--是否带有max或default分区
- 串口监视工具百度云免费下载
- Solaris 10系统指南
- SPSS26没有典型相关性分析怎么办
- 电脑连接SONY蓝牙耳机没有声音
- 绝对值线性化的两种方式
- 有没有安卓4.0的java模拟器_手机java模拟器apk下载