一、Android Auto

Android Auto是一个Android端的App,是专门为驾驶环境而设计的,把手机的部分功能通过数据线连接,影射到汽车屏幕上。目前,支持Android Auto的应用比较少。主要是是两类第三方应用,第一个是音视频类,第二个是消息类。相关应用的开发没有深入探索,有机会研究研究。

二、Android Automotive

上面介绍Android Auto是手机为中心,通过数据线连接汽车。这种模型既有好处,也有坏处。好处是:数据和应用始终是一致的,不存在需要数据同步的问题,手机上装的软件和已有的数据,接到汽车直接就有了。而坏处是,每次得拿出手机,汽车只是手机一个外设,这种模式不便于对于汽车本身的控制和相关数据的获取。如果是系统直接内置于汽车,那就是完全不一样的体验了。Android Automotive则是面向这个方向设计的。

Android automotive的系统架构图如下:Android Automative是在原先Android的系统架构上增加了一些与车相关的(图中虚线框中绿色背景的)模块。

  1. Car App:包括OEM和第三方开发的App
  2. Car API:提供给汽车App特有的接口
  3. Car Service:系统中与车相关的服务
  4. Vehicle Network Service:汽车的网络服务
  5. 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接口。

代码的路径位于:

下面介绍一下关键的接口:

  1. car.java:包含了与车相关的基本API。例如:车辆后视镜,门,座位,窗口等。
  2. app →menu:车辆应用菜单相关API。
  3. cluster:仪表盘相关API。
  4. media:多媒体相关API。
  5. hardware:车辆硬件相关API。
  6. navigation:导航相关API。
  7. settings:设置相关API。

1.3 Car Services

Android Automative中的Car Service集中在一个App中。可以想象,这个App需要非常高的权限,所以这是一个系统App。Car Service并非一个服务,而是一系列的服务。这些服务都在ICarImpl.java构造函数中列了出来。

还有几个模块没有出现在上面的架构图中。但它们也包含在了Android Automative系统中,这里一并介绍一下。

  1. VMS:vehicle monitor service, 汽车其他服务监测,主要是监测其他进程。
  2. ODB2:  ODB全称是On-Board Diagnostics。这是一种装置于车中用以监控车辆运行状态和回报异常的系统,可于车辆的子系统出现问题时,产生故障代码和提醒讯号通知车主和车厂诊断维修
  3. 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车载嵌入式系统相关推荐

  1. 【车载开发】Android Automotive车载操作系统开发解密篇

    提到Android车载,我们应该都不陌生.传统的车载功能单一,无太多娱乐性,而随着智能化时代的发展,车载系统也被赋予了在系统中预装 Android 应用的能力,基于Android平台的车载信息娱乐系统 ...

  2. Android automotive车载开发(5)-----系统架构

    系统架构 前面简单介绍了一下Android Automotive 的架构,具体Android Automotive 在系统的每个层,都做了哪些东西,这里总结一下. 系统应用层 Android Auto ...

  3. Android automotive车载开发(1)-----Automotive audio

    车载音频 Android Automotive OS (AAOS) 是在核心 Android 音频堆栈的基础之上打造而成,以支持用作车辆信息娱乐系统的用例.AAOS 负责实现信息娱乐声音(即媒体.导航 ...

  4. [原创] Android Automotive 车载应用对驾驶模式(Safe Drive Mode)适配的几种方法

    目录 前言 开发环境 1. Android Automotive 和 Android Auto的区别 Android Auto: 2. Android Automotive 的驾驶模式介绍 3. An ...

  5. Android Automotive OS在国内车载系统市场能分到多大一杯羹?

    前言: 随着汽车智能化趋势的进一步发展,车载系统越来越得到各大汽车厂商的重视,同时也涌入了一批互联网企业加入,甚至很多汽车厂商直接使用Android车载系统来打造自己的车机系统,比如宝马在今年宣布将在 ...

  6. 【读书速记】《汽车嵌入式系统手册》(1)

    前言   本文旨在对<汽车嵌入式系统手册>进行速读,粗略了解基本概念.以便在后续需要的时候加以详细理解. 文章目录 前言 第一章 车辆功能域及其需求 1.2 功能域 1.3 标准化的部件. ...

  7. 基于Android的车载操作系统 目录

    基础篇: [IVI]1. Android Automotive OS 安卓车载操作系统白皮书 [IVI]2.1 Andorid Automotive 源码aosp_coral_car项目构建流程 [I ...

  8. Android转车载难不难?一文揭秘Android车载操作系统开发

    我们知道,如今车载系统中对娱乐.应用生态有需求的中控和副驾一般由Android系统控制,Android Automotive 则是一个基于 Android 平台扩展后,适用于现代汽车的智能操作系统,可 ...

  9. 车载应用技术——Android Automotive系统

    黄金赛道 在智能手机行业初兴起时,包括BAT在内许多传统互联网企业都曾布局手机产业,但是随着手机市场的基本定型,造车似乎又成了各大资本下一个追逐的方向.百度.小米先后宣布造车,阿里巴巴则与上汽集团共同 ...

最新文章

  1. 使用html格式,通过php调用数据库并显示数据
  2. 深入理解display属性
  3. 编写第一个HADOOP应用程序
  4. lintcode:二叉树的层次遍历
  5. 提前还清贷款为什么还要付违约金?
  6. Spring Boot中带有CKEditor的AJAX
  7. C++中引用传递与指针传递区别(进一步整理)
  8. [傅里叶变换及其应用学习笔记] 二十四. 级联,脉冲响应
  9. linux shell 上传,下载ftp文件
  10. 国产统一操作系统(UOS)安装、体验
  11. dedecms联动筛选_DEDECMS分类信息按联动类别筛选的实现方法
  12. java定时器每一分钟执行一次_2行代码搞定一个定时器
  13. erlang的运算符
  14. oracle 查询default,oracle分区表检查--是否带有max或default分区
  15. 串口监视工具百度云免费下载
  16. Solaris 10系统指南
  17. SPSS26没有典型相关性分析怎么办
  18. 电脑连接SONY蓝牙耳机没有声音
  19. 绝对值线性化的两种方式
  20. 有没有安卓4.0的java模拟器_手机java模拟器apk下载

热门文章

  1. 4、Flutter - 控件基础 (二)ListView 列表展示数据、布局
  2. Android关于安兔兔手机信息造假的问题。
  3. ftp常见报错之Use PORT or PASV first解决思路和方法
  4. 带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】
  5. 舌尖上的中国各地特色小吃,怀念家乡的味道!
  6. MT4软件IOS版如何下载
  7. Vue3生命周期及事件写法
  8. 理性看待 数据分析师 Hot!
  9. Golang http server 跨域问题与解决办法
  10. linux php zlib,Linux查询zlib版本