车机系统与 Android 的关系概述

这篇具有很好参考价值的文章主要介绍了车机系统与 Android 的关系概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:搞懂 Android 系统和汽车到底有什么关系。

一、基本概念

1、Android Auto

1)是什么

  • Android Atuo 是一个 Android 端的 app,专门为驾驶环境设计的;
  • 运行环境:需要在 Android 5.0 或者更高版本的系统,并且需要 Google 地图和 Google Play 音乐应用;

2)功能

  • Android Atuo 可以用来将 Android 设备上的部分功能映射到汽车屏幕上;
  • 满足了很多人在开车时会使用手机的需求;

2、Google Assistant

  • Google 将 GoofleAssistant 集成到 AndroidAuto 中;
  • 交互方式有键盘、触摸、语音等;
  • 对于汽车来说,语音无疑是比触摸更好的交互方式;
  • 在驾驶环境中,语音交换存在的优势
    • 用户不改变自身的物理姿势,这种交互方式不影响驾驶员对驾驶的操作;
    • 有需要多次触摸的交互时,可能只需要一条语音就可以完成;
    • 语音交互不存在入口的层次嵌套,数据更加扁平;
    • 优秀的语音系统可以利用对话的上下文完成任务,避免用户重复输入;

3、Android Automotive

1、Android Auto 和 Android Automotive 的区别

  • Android Auto 是以手机为中心的
    • 好处:数据和应用始终是一致的,不存在需要数据同步的问题,手机上装的软件和已有数据,接到汽车上就直接有了;
    • 坏处:每次都需要拿出手机,汽车只是作为手机的一个外设;这种模式不便于对于汽车本身的控制和相关数据的获取;
  • Android Automotive
    • 如果将系统直接内置于汽车中,会大大提升用户体验;
    • Android Automotive 就是面向这个方向进行设计的;
    • 一旦将系统内置于汽车,可以完成的功能就会大大增加;例如,直接在中控触摸屏上调整座椅和空调;同时,系统也能获取更多关于汽车的信息,例如:油耗水平、刹车使用等;

加两张中控和仪表的图片

4、App

1)App 的开发

  • Android Auto 目前仅支持两类第三方应用
    • 音频应用:允许用户浏览和播放汽车中的音乐和语音内容;
    • 消息应用:通过 text-to-speech 朗读消息并通过语音输入回复消息;

2)App 的设计

  • Google 专门为 Android Auto 上的 UI 设计做了一个指导网站:Auto UI guidelines;
  • 基本指导原则(车机交互系统的借鉴)
    • Android Auto 上的互动步调必须由驾驶员控制;
    • 汽车界面上的触摸目标必须足够大,以便可以轻松地浏览和点击;
    • 适当的私彩对比可以帮助驾驶员快速解读信息并做出决定;
    • 应用必须支持夜间模式,因为过高的强度可能会干扰注意力;
    • Roboto 字体在整个系统中用于保持一致性并帮助提高可读性;
    • 通过触摸来进行分页应用用来作为滑动翻页的补充;
    • 有节制地使用动画来描述两个状态间的变化;

二、源码和架构

1、Android Automative的整体架构

车机系统与 Android 的关系概述,车机开发入门基础知识篇(一),android,车机开发,车载系统,系统架构
  • Android Automative 的源码包含在 AOSP 中;
  • Android Automative 是在原先 Android的 系统架构上增加了一些与车相关的(图中虚线框中绿色背景的)模块;
    • Car App:包括 OEM 和第三方开发的 App;
      • OEM:就是汽车厂商利用自身掌握的核心技术负责设计和开发新产品,而具体的生产制造任务则通过合同订购的方式委托给同类产品的其他厂家进行,最终产品会贴上汽车厂商自己的品牌商标。这种生产方式被称为定牌生产合作,俗称“贴牌”。承接这种加工任务的制造商就被称为OEM厂商,其生产的产品就是OEM产品;
    • Car API:提供给汽车 App 特有的接口;
    • Car Service:系统中与车相关的服务;
    • Vehicle Network Service:汽车的网络服务;
    • Vehicle HAL:汽车的硬件抽象层描述;

1)Car App

  • /car_product/build/car.mk 这个文件中列出了汽车系统中专有的模块;

  • 列表中,首字母大写的模块基本上都是汽车系统中专有的 App;

  • App的源码都位于 /platform/packages/services/Car/ 目录下文章来源地址https://www.toymoban.com/news/detail-852123.html

    # Automotive specific packages
    PRODUCT_PACKAGES += \
        vehicle_monitor_service \
        CarService \
        CarTrustAgentService \
        CarDialerApp \
        CarRadioApp \
        OverviewApp \
        CarLensPickerApp \
        LocalMediaPlayer \
        CarMediaApp \
        CarMessengerApp \
        CarHvacApp \
        CarMapsPlaceholder \
        CarLatinIME \
        CarUsbHandler \
        android.car \
        libvehiclemonitor-native \
    

2)Car API

  • 开发汽车专有的App自然需要专有的API;
  • 这些API对于其他平台(例如手机和平板)通常是没有意义的;
  • 所以这些API没有包含在Android Framework SDK中;
  • 下图列出了所有的 Car API;
车机系统与 Android 的关系概述,车机开发入门基础知识篇(一),android,车机开发,车载系统,系统架构
  • android.car:包含了与车相关的基本API。例如:车辆后视镜,门,座位,窗口等。
    • cabin:座舱相关API。
    • hvac:通风空调相关API。(hvac是Heating, ventilation and air conditioning的缩写)
    • property:属性相关API。
    • radio:收音机相关API。
    • pm:应用包相关API。
    • render:渲染相关API。
    • menu:车辆应用菜单相关API。
    • annotation:包含了两个注解。
    • app
    • cluster:仪表盘相关API。
    • content
    • diagnostic:包含与汽车诊断相关的API。
    • hardware:车辆硬件相关API。
    • input:输入相关API。
    • media:多媒体相关API。
    • navigation:导航相关API。
    • settings:设置相关API。
    • vms:汽车监测相关API。

3)Car Service

  • Car Service并非一个服务,而是一系列的服务。这些服务都在ICarImpl.java构造函数中列了出来;
public ICarImpl(Context serviceContext, IVehicle vehicle, SystemInterface systemInterface,
        CanBusErrorNotifier errorNotifier) {
    mContext = serviceContext;
    mHal = new VehicleHal(vehicle);
    mSystemActivityMonitoringService = new SystemActivityMonitoringService(serviceContext);
    mCarPowerManagementService = new CarPowerManagementService(
            mHal.getPowerHal(), systemInterface);
    mCarSensorService = new CarSensorService(serviceContext, mHal.getSensorHal());
    mCarPackageManagerService = new CarPackageManagerService(serviceContext, mCarSensorService,
            mSystemActivityMonitoringService);
    mCarInputService = new CarInputService(serviceContext, mHal.getInputHal());
    mCarProjectionService = new CarProjectionService(serviceContext, mCarInputService);
    mGarageModeService = new GarageModeService(mContext, mCarPowerManagementService);
    mCarInfoService = new CarInfoService(serviceContext, mHal.getInfoHal());
    mAppFocusService = new AppFocusService(serviceContext, mSystemActivityMonitoringService);
    mCarAudioService = new CarAudioService(serviceContext, mHal.getAudioHal(),
            mCarInputService, errorNotifier);
    mCarCabinService = new CarCabinService(serviceContext, mHal.getCabinHal());
    mCarHvacService = new CarHvacService(serviceContext, mHal.getHvacHal());
    mCarRadioService = new CarRadioService(serviceContext, mHal.getRadioHal());
    mCarNightService = new CarNightService(serviceContext, mCarSensorService);
    mInstrumentClusterService = new InstrumentClusterService(serviceContext,
            mAppFocusService, mCarInputService);
    mSystemStateControllerService = new SystemStateControllerService(serviceContext,
            mCarPowerManagementService, mCarAudioService, this);
    mCarVendorExtensionService = new CarVendorExtensionService(serviceContext,
            mHal.getVendorExtensionHal());
    mPerUserCarServiceHelper = new PerUserCarServiceHelper(serviceContext);
    mCarBluetoothService = new CarBluetoothService(serviceContext, mCarCabinService,
            mCarSensorService, mPerUserCarServiceHelper);
    if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
        mVmsSubscriberService = new VmsSubscriberService(serviceContext, mHal.getVmsHal());
        mVmsPublisherService = new VmsPublisherService(serviceContext, mHal.getVmsHal());
    }
    mCarDiagnosticService = new CarDiagnosticService(serviceContext, mHal.getDiagnosticHal());

4)Car Tool

a、VMS
  • VMS全称是Vehicle Monitor Service。正如其名称所示,这个服务用来监测其他进程;
  • 在运行时,这个服务是一个独立的进程,在init.car.rc中有关于它的配置
service vms /system/bin/vehicle_monitor_service
   class core
   user root
   group root
   critical

on boot
    start vms
  • 这是一个Binder服务,并提供了C++和Java的Binder接口用来供其他模块使用;

到了这里,关于车机系统与 Android 的关系概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二节-安卓多屏双屏实战车载车机智能驾驶舱开发/千里马android framwork开发

    hi,粉丝朋友们! 上一节已经对车载的多屏互动进行了相关的技术方案介绍,以及相关的核心方法 moveRootTaskToDisplay的讲解和使用。 具体可以参考链接:https://blog.csdn.net/learnframework/article/details/130461689 本节就来进行代码实战 要实现双屏互动,主要就只需要两个步骤: 1、手指动

    2024年02月09日
    浏览(48)
  • 榨干Pixel5最后的价值:编译刷写Android12L车机系统

    去年2022年中的时候,突然迷上了小屏手机,当时小屏的选择很有限,所以左挑右选网购了一台Pixel 5的库存机。酷安各个机主都称呼其为小五,小巧机身,这台鼠尾草绿的颜色很好看。 原生安卓系统的人机交互里有很多让人惊喜的细节,比如我开睡眠模式的时候,整个屏幕的

    2024年01月22日
    浏览(51)
  • uniapp快速入门系列(1)- 概述与基础知识

    1.1.1 什么是uniapp? uniapp是一款基于Vue.js框架的跨平台应用开发框架,它可以让开发者使用一套代码,同时构建多个平台(包括但不限于微信小程序、支付宝小程序、抖音小程序等)的应用程序。 在过去,我们可能需要分别使用不同的技术和工具来开发不同平台的应用,但是

    2024年02月07日
    浏览(52)
  • Android系统开发-入门篇

    参见:[视频教程] 写给应用开发的 Android Framework 教程——玩转 AOSP 篇之 Android 系统开发工具推荐 - 掘金 前置条件: android系统源码位于 linux 服务器,ssh 地址假如为:test@172.1.10.2 本机为windows 1、本机:         下载VSCode,安装remote-ssh插件         打开 Git-Gui程序,执

    2024年02月16日
    浏览(42)
  • 数据库系统概述——第六章 关系数据理论(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月09日
    浏览(49)
  • Android开发Java版 —— 基础知识

    📝 “第一行代码” 第二版 (java)读书笔记 源码下载地址:github仓库地址。 Android大致可以分为 四层架构 : Linux 内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动 系统运行库层 这一层通过一些C/C++库来为Android系统提供了主要的特性支持

    2024年02月06日
    浏览(53)
  • Android Studio开发基础知识(持续更新中~)

    阅读本文需要有 Java 和 前端 的基础,本文是我学习Android时的笔记。 Info Key 复制行 Ctrl + D 删除行 Ctrl + Y 注释 Ctrl + / 注释2 Ctrl + Shift + / 撤销 Ctrl + Z 恢复 Ctrl + Shift + Z 显示结构 Ctrl + F12 格式化代码 Ctrl + Alt + L 打开设置 Ctrl + Alt + S 自动补全代码 Ctrl + Shift + Space 自动导包 Alt +

    2023年04月08日
    浏览(45)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(65)
  • Android车载应用系统开发入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

    众所周知,国内的安卓市场内卷极其严重,原生应用开发可谓是寸步难行,但整个Android生态却无比繁荣,手机、平板、电视、音视频等等,特别是在智能汽车+电动汽车的浪潮下,车载行业成为许多Android人竞相奔走的行业, 薪资待遇以及岗位招聘呈上涨趋势 。 对于涉事多年

    2024年02月09日
    浏览(57)
  • 一文了解 Android 车机如何处理中控的旋钮输入?

    上篇文章《从实体按键看 Android 车载的自定义事件机制》带大家了解了 Android 车机支持自定义输入的机制 CustomInputService 。事实上,除了支持自定义事件,对于中控上常见的音量控制、焦点控制的旋钮事件,Android 车机也是支持的。 那本篇文章带大家看下 Android 车机处理旋钮

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包