1. 概念

1.1 快速倒车

Android系统完全起来(各种service初始化、app初始化等)需要22秒左右的时间,所以当车机刚刚启动时(22秒之前),驾驶员挂R档进入倒车时Android 的倒车应用是无法响应的,此阶段的倒车需求称之为“快速倒车”。

快速倒车的实现方式有很多种,小编所知的有两种,一种是在kernel 中直接调用camera和frame buffer的接口实现快速倒车功能,kernel启动2秒左右的时间就可以相应倒车;第二种是SOC内置一块MCU 来运行一个RTOS,在Android系统未完全起来之前,倒车影像的获取和显示由该RTOS实现。

系统完全起来之前,kernel 通过倒车引脚的电平变化,进入快速倒车,显示倒车画面。

1.2 正常倒车

Android系统起来后,kernel 通过倒车引脚的电平变化,发送uevent到用户空间,用户空间有个device服务一直监听该 uevent,然后在用户空间启动倒车程序,显示倒车画面。

1.3 差异

正常倒车可以使用图形系统绘制动态倒车轨迹线,而快速倒车只有固定倒车线。

2. 实现思路

2.1 快速倒车

摄像头数据获取、显示屏图层叠加都由kernel 完成,此时Android应用还没启动起来,所以倒车相关的所有策略都由内核来做。

2.2 正常倒车

Android应用直接打开设备文件,通过ioctl获取摄像头数据,显示屏图层叠加,即通过驱动提供的接口进行倒车操作,内核不做任何策略,所有倒车相关的策略都由Android应用来做。

3. 流程图

4. 进入快速倒车

MCU收到了倒车的CAN信号以后会将某个GPIO 电平拉高以通知SOC进入倒车,但是有的时候手头可能没有CAN板之类的CAN信号模拟器,此时可以使用DEVICE_ATTR 添加一个属性,来控制是否进入倒车,实现也很简单,就是在倒车判断条件处添加一个flag,该属性控制flag 的值即可。注意:该属性只能控制是否进入快速倒车,也就是说,Android完全启动以后再操控该属性是无效的,不会进入倒车界面。

5. 倒车信息处理

倒车过程中方向盘的角度大小、速度大小、雷达检测到的距离以及雷达音量等信息都是由MCU通过串口发送给SOC的,可以定义一个通知链A,SOC 串口驱动在处理MCU发送过来的信息时,调用通知链A上所有感兴趣的模块函数。

譬如,快速倒车模块可以注册一个通知块到通知链A,当SOC串口进行DMA搬运时通知通知链A上所有感兴趣的模块函数,此时快速倒车模块的通知块就可以获取串口信息中倒车相关的数据。

注:不知到通知链用法的可以看我的博客《Linux通知链机制》。

6. 其它

快速倒车的UI界面都是图片形式的,为了加快读取图片的速度,可以将png、jpg等格式的图片转化为二进制格式(bin格式)以提升图片加载的速度,因为二进制格式的图片不用解码。

车载Android系统快速倒车相关推荐

  1. 收藏向 | 车载Android系统开发学习专题,进军车载必备

    如今,智能手机已无处不在,移动操作系统开始向新的领域扩张,这其中,就有近段时间被苹果CarPlay催热的车载系统. 目前全球的汽车数量已经超过10亿辆,但车载系统却仍然有非常大的提升空间.汽车厂商们也 ...

  2. 【Android车载系统 News | Tech 1】News 谷歌开发车载Android系统 2014-12-19

    据外国媒体报道,Android和iOS两大操作系统在垄断手机和平板之后,开始向智能家居.智能汽车.客厅娱乐.物联网等领域扩张.谷歌和苹果此 前均推出了连接智能手机和车载信息系统的平台产品.2014年1 ...

  3. 车载android系统手机版下载地址,carlife官方下载-carlife车机端 安卓版v7.1.1-PC6安卓网...

    carlife车机端是一款由百度打造的手机车机智能互联产品,carlife安卓版只需在车内连接手机,即可将carlife汇集的车生活服务分享到车载屏幕上,享受驾驶中更安全便捷的车载体验. 软件介绍 百 ...

  4. 车载android系统最新版是多少,通用汽车宣布在2021年全面启用新版Android车载信息娱乐系统...

    (图自:GM,via SlashGear) 除中国市场外,通用将为旗下车载信息娱乐系统预装原生 Android Automotive OS .其基于 Android 9.0 Pie 打造,但不会立即出 ...

  5. Android系统快速编译方式ninja

    随着Android版本的更迭,尤其是Androd10和Android11源码的编译,单编模块的时间也特别慢,每次都需要半个小时甚至更长,因为每次单编都会重新加载所有mk文件,再生成ninja编译,此过 ...

  6. 更改车载android系统launcher界面

    1.首先在Launcher项目入口的Activity添加下面这段代码 <intent-filter><action android:name="android.intent ...

  7. android 动画实现倒车,一种快速实现Android车机冷启动全景倒车的方法与流程

    本发明涉及一种快速实现Android车机冷启动全景倒车的方法,属于车辆设备技术领域. 背景技术: 目前市场上的车机在解决倒车辅助系统的冷启动时存在时间较长的弊端,主要原因是由于虚拟机的运行及加载方式导 ...

  8. Android车载学习笔记1——车载整体系统简介

    一.汽车操作系统 汽车操作系统包括安全车载操作系统.智能驾驶操作系统和智能座舱操作系统. 1. 安全车载操作系统 安全车载操作系统主要面向经典车辆控制领域,如动力系统.底盘系统和车身系统等,该类操作系 ...

  9. 【视频文稿】车载Android应用开发与分析 - 走进车载操作系统

    本期内容的视频地址:https://www.bilibili.com/video/BV1rR4y1B7Qd/ Hello,各位好,我是一个做车载软件开发的软件工程师,之前在CSDN.稀土掘金这些平台上 ...

最新文章

  1. Oracle学习笔记:blank_trimming的含义
  2. 前端学习(2687):重读vue电商网站8之设置弹框提示组件
  3. IE8“开发人员工具”(下)
  4. 生活随笔: 毕业之前和毕业之后
  5. 电子邮件是html文件吗,如何在电子邮件正文中嵌入HTML文件
  6. windows mobile进程查看器开发(二)—— 停止进程
  7. iperf 的下载和使用
  8. 从零开始学习SpringCloud
  9. 爬虫项目十五:你了解你的QQ好友吗?教你用Python采集QQ好友数据
  10. win7系统使用命令行定时关机的操作方法
  11. 注册表“.REG”文件完全攻略
  12. 2019 中国开源年会即将开启
  13. ufvm可以读哪些网格_FM24C05UFVM8
  14. ganglia监控hadoop集群配置
  15. 传智播客西安中心之Android课程大纲
  16. Leetcode-1094. 拼车
  17. 如何在项目管理中定义可交付成果?
  18. org.springframework.amqp.AmqpException: No method found for class [B
  19. Fractal解题笔记
  20. Python实现超市购物的源码(有注释,适合学习)

热门文章

  1. NOIP2017 复赛游记
  2. 采购订单管理流程:定义、好处和步骤
  3. python3多线程爬虫小说_python3+beautifulSoup4.6抓取某网站小说(四)多线程抓取
  4. 辽宁石化职业技术学院的计算机怎样,辽宁石化职业技术学院10大好专业推荐
  5. SAP中解决VF05销售发票清单格式无法调整问题
  6. JavaScript处理颜色常用方法
  7. Rock-Paper-Scissors-Lizard-Spock Python实现
  8. 计算机学开发,Lazarus
  9. android的timertask,Android 中 Timer 和 TimerTask的使用
  10. 恐龙跳一跳游戏python_在esp8266上面开发一款chrome浏览器离线时可玩的那款恐龙跳仙人掌的游戏...