Android 车载应用开发概述

前言

介绍 Android 车载应用开发

文章目录

    • 前言
    • 一、Android Automotive OS 概述
    • 二、Android Automotive OS 架构
    • 三、常见的车载应用
      • 1、系统应用
        • 1)SystemUI
          • 是什么
          • 开发工作
        • 2)Launcher
          • 是什么
          • 开发工作
        • 3)Settings
          • 是什么
          • 开发工作
        • 4)多媒体应用
        • 5)工具类应用
        • 6)车控应用
        • 7)辅助驾驶应用
        • 8)车辆互联

一、Android Automotive OS 概述

  • 车载 Android 系统也被称为 Android Automotive OS,是对原始 Android 系统的一个功能扩充版本。
  • 与手机系统一样,Android Automotive OS 源代码完全开放,第三方供应商和汽车制造商可以官方源码的基础上自行开发和拓展,无论是编程语言还是各项接口,都与 Android 系统保持了一致。
  • 与 Android 手机上的 Google 服务类似,Google 在汽车上也提供了用于汽车的 Google 汽车服务(GAS,Google Automotive Service),包含有 Google 地图、应用市场、Google 汽车助理等等。
  • Google 汽车服务同样没有开源,而是以软件包的形式提供给制造商。
  • 目前国内汽车搭载的 Android 系统都是在标准的 Android Automotive OS 基础上对架构重新进行了定制及应用的本地化适配。

二、Android Automotive OS 架构

  • 上述图片简述

    • 图中绿色部分是 Android 原生的代码;
    • 蓝色部分是车厂需要修改或添加功能的代码;
    • 紫色部分是集成的第三方应用;
    • 不过在国内实际开发中,无论是绿色还是蓝色部分,都会根据需要进行修改和裁剪;
  • System APPS

    • 系统应用;
    • 系统应用是为了操作系统能正常、高效工作所配备的各种管理、监控和维护系统的程序;
    • 例如:SystemUILuancher、系统设置;
  • OEM APPS

    • 厂商应用;
    • 由主机或车厂开发、集成的应用,基本功能都是与车辆有关;
    • 例如:用户手册,电源管理、车辆设置等;
  • 3RD Party APPS

    • 第三方应用,在车机中集成各种第三方软件公司开发的 APP;
    • 一般以音视频娱乐类为主,例如:哔哩哔哩、爱奇艺等;
    • 部分厂商的车机系统中还附带了应用商店,用户也可以在其中选择下载自己需要第三方应用;
  • Android Framework API

    • 用于实现上层应用与 System Service 通信的接口;
  • Android System Services

    • 系统服务,是 Android 系统的核心模块,支持着 Android 系统的正常运行;
  • Car API

    • 用于实现上层应用与 CarService 通信的接口;
  • Traditional Android HAL

    • 传统 Android 硬件抽象层,就是对 Linux 内核驱动程序的封装,向上提供稳定的接口,屏蔽底层的实现细节,同时还有规避 Linux 内核开源协议的作用;
  • Vehicle HAL

    • 汽车硬件抽象层,这是车载 Android 系统新增的硬件抽象层,它的作用使用定义标准接口,让 CarService 可以忽略各个汽车厂商的具体实现;
    • CarService 负责调用 VehicleHAL 定义的接口,而 Android Automotive OS 中 VehicleHAL 并没有具体的实现细节,所以 VehicleHAL 需要汽车制造商或芯片厂商来实现。
  • CarService

    • CarService 是车载 Android 系统新增的核心服务,所有应用都需要通过 CarService 来查询、控制整车的状态;
    • CarService 中包含的车载系统服务非常多,例如:CarInputService 、 CarMediaService、CarPowerManagementService 等等;

三、常见的车载应用

1、系统应用

1)SystemUI
是什么
  • 系统的 UI;
  • SystemUI是一个标准的 android 应用程序,它提供了系统 UI 的统一管理方案;
  • 常见的状态栏、导航栏、消息中心、音量调节弹窗、蓝牙连接弹窗等一系列后台弹窗都是由 SystemUI 模块负责管理;
开发工作
  • SystemUI作为 Android 系统启动的第一个带有 UI 的应用程序,对启动性能和稳定性都有很高的要求;
  • SystemUI需要管理的模块非常多,导致开发任务比较繁重,有的车载项目会要求SystemUI兼容原有的应用层 API,那么开发难度还会上升;
2)Launcher
是什么
  • 桌面启动器,桌面启动器是帮助用户查找和启动其他应用程序的软件;
  • 主要负责摆放小部件,显示其它应用程序入口;
  • 现代智能座舱的 HMI 在设计上,开始赋予 Launcher 越来越多的功能,例如:显示 3D 的车辆模型、地图定位等等;
开发工作
  • Launcher 是与用户交互最多的应用程序之一,同样对启动性能和稳定性都有很高的要求;
  • Launcher 开发难度主要集中在与 3D 车模的互动(如果有 3D 模型),可能需要支持 Widget 的显示(WidgetHost),各种应用的拖动和编辑等;
3)Settings
是什么
  • 系统设置,是车载 Android 系统中非常重要的一个系统级应用,是整个车载 IVI 系统的控制中心,整车的音效、无线通信、状态信息、安全信息等等都是需要通过系统设置来查看和控制;
开发工作
  • 系统设置主要难度都集中在对 Android Framework 层 API 的理解上,例如蓝牙、Wi-Fi 设置就需要开发人员对系统级 API 有一定的了解;
4)多媒体应用
  • 收音机

    • 目前的车载收音机包括传统的模拟信号收音机和现代化的数字信号收音机,根据销售国家的不同,车载收音机支持的种类也有所不同。
  • AM/FM

    • 最常见的模拟收音机制式,AM - 调幅收音机,FM - 调频收音机。在不同国家和地区,频率范围有一定的差别。
  • RDS

    • 无线电数据广播(英语:Radio Data System, RDS)是一种在传统的 FM 广播中嵌入少量的数字信息的通信协议标准。它在发射信号时可以利用副载波将电台名称、节目类型、节目内容及其它信息以数字的形式发送出去。
  • DAB 及 DAB+

    • 数字信号广播( Digital Audio Broadcasting 简称 DAB)是继 AM、FM 传统模拟广播之后的第三代数字信号广播,它提供了接近 CD 质量的声音,具有抗噪声、抗干扰、抗电波传播衰落、适合高速移动接收等优点。目前主要应用于欧美和香港等地区。
  • 音视频播放

    • 音视频播放属于车内驾驶体验的不可缺少的一部分,现代汽车的音视频播放功能主要用于播放 SD 卡或 U 盘中的离线音视频文件,在线音视频播放功能基本都集成第三应用实现。
5)工具类应用
  • Map

    • 地图,车载系统的核心功能之一,负责导航和语音提示等功能。

    • 不同的主机厂商有不同的开发方式,不外乎有三种:

      • 选择使用百度、高德的地图 SDK 自行开发导航应用;

      • 将导航模块外包给百度、高德,由地图供应商进行定制化开发;

      • 直接集成地图供应商已有的车载版本的应用;

    • 主要集中在对地图 SDK 的运用和理解上,而且地图应用属于对性能要求较高的模块。

  • 语音识别与语音控制

    • 语音技术在我们的日常生活已经随处可见,汽车可以说是语音技术应用的最佳案例之一;
    • 驾驶过程中驾驶员很难像使用手机那样操作车机系统,语音控制技术的引入可以帮助驾驶员在不额外分心驾驶的基础上,完成各类车辆操控;
    • 目前国内语音供应商非常多,主要有科大讯飞、百度、腾讯、华为等等;
6)车控应用
  • 空调(HVAC)

    • 车载空调用于调节车内温度、湿度,给乘员提供舒适的环境;
    • 除了基本空调功能外,高级的空调系统还包含,空气净化、香氛系统等等。
  • 车控车设(VehicleSettings)

    • 车控车设主要负责舒适性控制、车辆控制以及智能驾驶。舒适性控制包含座椅通风、座椅姿态控制、车内照明、门窗开闭等等,车辆控制包含刹车辅助、车身姿态控制、方向盘助力等等;
    • 主要难度集中在复杂多变的 UI,有的主机厂商会在 HMI 中引入 3D 化的交互模型,就还需要考虑与 3D 模型间的通信,同时还需要熟练运用 CAN 工具来模拟汽车的 CAN 信号用于调试和开发;
7)辅助驾驶应用
  • 倒车影像

    • 是驾驶辅助系统中的一个重要配置项,在车辆倒车时可通过装备在车辆后方的摄像头,将车后状况实时显示在中控或后视镜的显示屏上,方便驾驶员观察;
    • 倒车影像需要覆盖倒车辅助线,倒车辅助线用于驾驶员判断车辆行驶过程中的轨迹和车辆与物体的距离,通常分为静态倒车辅助线和动态倒车辅助线;
    • 动态倒车辅助线的线条会随着方向盘转动而转动,从而准确的描出倒车的轨迹。
  • 360 全景影像

    • 360 全景影像又称全景泊车系统,是 2005 年后逐渐出现的一种泊车辅助技术。早期泊车辅助系统常采用雷达或单摄像头,使用声音报警或显示车辆后方摄像头视频图像的方式,帮助车辆驾驶员判断盲角处车辆与障碍物距离;
    • 采用雷达报警方式,距离的显示并不直观;
    • 采用后置摄像头方式,则仍会存在盲角和距离判断不准的问题。于是逐渐兴起了全景泊车技术;
8)车辆互联
  • CarPlay

    • CarPlay 是苹果公司推出的一种车载服务应用,苹果手机连上支持 carplay 的车机后,车机系统界面就会出现手机上的地图和音乐等应用,手机上只要适配了 carplay 功能的应用,都可以在车机屏幕上直接使用。
  • Android Auto

    • Android Auto 与 Carplay 类似,是 google 公司推出的车辆互联方案,通过把手机应用界面投射到车载系统上,来取代汽车制造商的原生车载系统来执行 Android 应用与服务。由于 Android Auto 依赖 Google 服务,所以在国内几乎无法使用,目前国内销售的汽车很少会支持 Android Auto。
  • CarLife

    • CarLife 是百度在 2015 年推出的车联网解决方案;
    • 和 CarPlay 和 Android Auto 产品相比,CarLife 的用户不用在意自己的智能手机是什么操作系统,只需要通过数据线或者 wifi 将手机连接到车载系统上,就可以使用;
    • 除了以上三种方案,车辆互联方案还有华为的 HiCar 以及小米的 CarWith 等等。

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

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

相关文章

使用undetected-chromedriver遇到的问题及解决方法,以及它使用SOCKS代理的问题

环境:python3.8.10 uc的安装方法: pip38 install undetected-chromedriver 上测试代码: import undetected_chromedriver as uc driver uc.Chrome() driver.get(https://www.baidu.com) driver.save_screenshot(baidu.png)报错&#xff…

【结构型模式】组合模式

一、组合模式概述 组合模式的定义与意图:将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。(对象结构型) 组合模式分析: 1.当容器对象的某一个方法被调用时,将遍…

算法|基础算法|高精度算法

基础算法|位运算 1.高精度加法 2.高精度减法 3.高精度乘法 4.高精度除法 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 高精度加法 …

【C++学习】map和set

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set 4.1 set的介绍 4.2 set的使用 4.2.1 set的模板参数列表 4.2.2 set的构造 4.2.3 set的容量 4.2.4 set修改操作 4.2.5 set的使用举例 五、map 5.1 map的介绍 5.2 map的使用 5.2.1 map的模板参数说…

7.C++:多态

一、 virtual关键字 //1.可以修饰原函数,为了完成虚函数的重写,满足多态的条件之一; //2.可以在菱形继承中,完成虚继承,解决数据冗余和二义性; 两个地方使用同一关键字,但二者间没有一点关联 二…

淘宝扭蛋机小程序开发:开启购物娱乐新纪元

在数字时代浪潮的推动下,小程序作为新兴的交互平台,正在不断引领着购物方式的革新。淘宝扭蛋机小程序的开发,便是这一变革中的一颗璀璨明星,它将传统扭蛋机的趣味与电商购物的便捷完美融合,为用户带来了前所未有的购物…

Weakly Supervised Audio-Visual Violence Detection 论文阅读

Weakly Supervised Audio-Visual Violence Detection 论文阅读 摘要III. METHODOLOGYA. Multimodal FusionB. Relation Modeling ModuleC. Training and Inference IV. EXPERIMENTSV. CONCLUSION阅读总结 文章信息: 发表于:IEEE TRANSACTIONS ON MULTIME…

【Redis 神秘大陆】006 灾备方案

六、Redis 灾备方案 6.1 存储方案 6.1.1 基础对比 RDB持久化AOF持久化原理周期性fork子进程生成持久化文件每次写入记录命令日志文件类型二进制dump快照文件文本appendonly日志文件触发条件默认超过300s间隔且有1s内超过1kb数据变更永久性每秒fsync一次文件位置配置文件中指…

政安晨:【深度学习神经网络基础】(十)—— 反向传播网络中计算输出节点增量与计算剩余节点增量

目录 简述 二次误差函数 交叉熵误差函数 计算剩余节点增量 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正&#xf…

刷穿力扣006-剑指offer一数组——02寻找目标值-二维数组

刷穿力扣006-剑指offer<一>数组——02寻找目标值-二维数组 基本面试题都是我带大家刷的力扣热题100和剑指offer的75道题&#xff0c;建议刷两遍&#xff01;&#xff08;ps:想找工作实习的同学&#xff0c;文末有面试八股和简历模板&#xff09; 题目&#xff1a; 语言…

计算机网络 TCP/IP体系 物理层

一. TCP/IP体系 物理层 1.1 物理层的基本概念 物理层作为TCP/IP网络模型的最低层&#xff0c;负责直接与传输介质交互&#xff0c;实现比特流的传输。 要完成物理层的主要任务&#xff0c;需要确定以下特性&#xff1a; 机械特性&#xff1a;物理层的机械特性主要涉及网络…

【Altium Designer 20 笔记】PCB层

Top Overlay & Bottom Overlay (顶部丝印层和底部丝印层)&#xff1a; 用于标记元件、连接和其他重要信息。丝印层是 PCB 表面的一层&#xff0c;上面印上文字、图标或标记。 Top Solder & Bottom Solder (顶部阻焊层和底部阻焊层)&#xff1a; 阻焊层、开窗层、绿油层…

Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. 起步依赖3. 自动配置3.1 JacksonPrope…

K8S认证工程师(CKA)考试速通经验分享(含答案)

昨天参加了Linux Foundation推出的Certified Kubernetes Administrator(CKA)考试&#xff0c;今天收到邮件通知通过啦&#xff5e;分数是93/100分 证书这个样子 ➡️随着应用现代化成为IT/互联网行业大趋势&#xff0c;企业的系统架构逐渐向微服务、容器化转型&#xff0c;好处…

spring03:bean的自动装配

spring03&#xff1a;bean的自动装配 文章目录 spring03&#xff1a;bean的自动装配前言&#xff1a;一、 在xml中显示的配置&#xff1a;分析&#xff1a; People类&#xff1a;Cat类&#xff1a;Dog类&#xff1a;1. 在xml中显示的配置&#xff1a; 二、 隐式的自动装配bean【…

量子密钥分发系统设计与实现(一):系统基本架构讨论

经过一段时间讨论&#xff0c;我们了解到量子密钥分发设备是当前量子保密通信系统的基础。从本文开始&#xff0c;我将开启量子密钥分发系统设计与实现系列&#xff0c;详细讨论量子密钥分发设备如何从0到1的搭建。 1.QKD系统总体讨论 QKD系统的核心功能就是为通信双方提供理论…

聊聊最近两星期的学习吧!

今天是4月14号。 自从我3月份回到学校之后&#xff0c;我每天都有记录自己的学习时长。今天晚上&#xff0c;我在复盘我自己学习时长的时候&#xff0c;我发现&#xff0c;在整个四月份&#xff0c;我平均每天的有效学习时长只有6h&#xff0c;而且到今天为止&#xff0c;整个四…

Python基于循环神经网络的情感分类系统设计与实现,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

spring02:DI(依赖注入)

spring02&#xff1a;DI&#xff08;依赖注入&#xff09; 文章目录 spring02&#xff1a;DI&#xff08;依赖注入&#xff09;前言&#xff1a;一、构造器注入&#xff08;constructor&#xff09;二、set注入&#xff1a;分析&#xff1a; 1. Student类&#xff1a;2. Addres…

编程入门(二)【计算机基础三】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言五、常用软件的相关介绍六、操作系统的相关介绍七、Window11系统的基本操…