车联网Apollo(阿波罗),研究carlife车机端集成及开发,(WeLink,carplay/carlife)

2023-11-09

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景 - https://github.com/ctripcorp/apollo

--  WeLink,carplay/carlife
  Android车机、WinCE车机、Linux车机和Qnx车机四大车机层的手车互联方案。
  四维图新趣驾WeLink,高德地图WINCE车机版。在相对价位更低的低配版本中仅支持CarLife,而高配则仅支持Carplay。
  苹果carplay,百度carlife。

-- 汽车牌照及省级缩写:
 "京", "沪", "鄂", "湘", "川", "渝", "粤", "港", "鲁", "津",
                "浙", "豫", "贵", "青", "琼", "辽", "吉", "藏", "闽",
                "冀", "苏", "皖", "赣", "甘", "陕", "新", "澳",
                "黑", "宁", "云", "蒙", "晋", "桂" ;

-- CarLife开发总结- https://blog.csdn.net/zjfengdou30/article/details/81808551
百度CarLife是百度推出的车联网解决方案之一,目前分为前装集成与后装安装两种方式提供:
前装项目申请:http://carlife.baidu.com/carlife/caroem/myproj 
前装项目申请完成后,得到一个百度渠道号与集成资料 
后装源码地址:https://github.com/ApolloAuto/apollo-DuerOS/tree/master/CarLife-Android-Vehicle

apollo-DuerOS- https://github.com/ApolloAuto/apollo-DuerOS/tree/master/CarLife-Android-Vehicle

-- carlife需要改进的地方:(carlife, carplay)
1、和手机内的百度共享离线地图文件(感觉这个最傻,都是自己家的,居然不能共用!);
2、改近使用体验,各种不能连接、不能接打电话、不能使用自己的歌单……
3、插线导航的时候手机发烫严重,因为屏幕一直是亮的!
 
-- CarLife的开发完成,主要有以下几个工作点: 
 1. CarLife lib库的集成:lib库主要的功能就是提供CarLife服务数据通道的建立,数据报文的封装与解析,我们需要使用Android.mk文件将其加入Android系统的交叉编译环境中。 
 2. Usb通信: CarLife的握手与通信主要是通过Android的AOA方式来进行,具体通信方式已经单独作为介绍: USB开发——android AOA开发 
 3. CarLife视频显示: CarLife主要是采集手机端的视频流,然后通过USB以H.264的方式发送到车机端,车机端针对H.264进行硬解码播放,播放主要用MediaCodec, 具体使用方式已经单独作为介绍 android使用MediaCodec实现异步视频编解码 
 4. CarLife音频播放: CarLife的音频数据是以PCM流的形式发送到车机端,因此车机端只需要使用AudioTrack创建对应的配置来播放即可,注意音频流数据的字节序大小端是以小端的方式存在的。

-- 研究carlife车机端集成- https://blog.csdn.net/weixin_38148680/article/details/80586255
/**
* 思路:
* 1.连接方式AOA(Android Open Accessory)
* 2.车机端获取USB操作权限
* 3.检测Android 设备是否支持AOA协议
* 4.启动Android 设备的USB配件模式。
* 5.与Android 设备建立USB通信通道。
*/
  百度CarLife是一款手机车机互联方案,通过CarLife用户可以将移动设备(Mobile Device,简称MD)上符合驾驶安全的应用通过多屏互动技术分享到车机(Head Unit,简称HU)上显示,并通过车上的触摸屏、硬按键、旋钮操控和麦克风来控制CarLife,此方案能充分利用手机和车机的各自优势,为驾驶员提供安全、丰富的信息娱乐体验。

  Carlife 协议规定了五种数据流控制流(cmd),视频流(video),音频流(Audio),语音流(VR)以及发控流(Touch),其中将音频流分为Media和导航TTS两种类型。协议定义了以下六个TCP socket通道用于传输这些数据流。
  1.控制流(Cmd):1个tcp socket通道,主要在车机和移动设备之间传输相关控制消息,比如车载数据、蓝牙自动配对消息、视频初始化消息等。
  2.视频流(Video):1个tcp socket通道,主要用于移动设备向车机传输视频编码数据。
  3.音频流(Audio):2个tcp socket通道,一个用于传输Media音频流,另一个用于传输导航TTS(Text to Sound)音频流,分别用于移动设备向车机传输音乐和导航语音播报的PCM流。
  4.语音流(VR):1个tcp socket通道,主要用于车机向移动设备传输车机mic录制的用户语音数据。
  5.反控流(Touch):1个tcp socket通道,主要用于传输车机触摸事件或者按键事件到移动设备端。

  针对Android5.0系统以及以上版本的移动设备,可以使用AOA(Android Open Accessory)进行连接。AOA是Google为Android系统提供的一种外设通讯机制。该机制可以通过蓝牙或者USB接口和外设通讯,无需Android系统特殊系统权限,包括root和adb debug,对于CarLife而言,移动设备端不需要获取root权限和打开adb 更高的平台中直接支持,作为一个附加库也被Android 2.3.4(API level 10)支持。AOA2.0在Android4.1(API level 16)及更高的平台中直接支持。在Android移动设备上,Android系统提供标准的Accessory API用于访问外设。采用USB通讯时,外部设备的USB角色为Host,Android移动设备为Device。
  基于当前5.0以上的手机占比居高,ADB与AOA连接建议默认使用AOA连接,或者优先使用AOA连接,连接成功后首先检测手机系统的版本号,如果手机系统版本低于5.0则主动切换到ADB模式。
 
-- 百度CarLife Android车机端黑屏问题
  发现与视频头帧sps和pps有关。在ShowFragment里获取了视频的头帧sps和pps,在界面内退出时,销毁了界面,也删除了头帧信息,后面虽然有数据继续传输到车机端,但是缺少了sps和pps就解不了码,因此黑屏。
  那为什么手机USB线断开后,再次连接就连得上呢?因为手机USB断开之后,车机端将重新开启ADB,并反初始化各参数,而手机端则停止了视频传输,当再一次连接时,会重发头帧sps和pps,自然可以解码成功。
  记下sps和pps数据,但是不能在Activity中记,因为退出时会被销毁,这里在AppManager这个管理Activity的类里记,然后在显示的ShowFragment里需要视频头帧的时候取出,车机视频就不在黑屏。

CarLife安卓车机端- https://github.com/ApolloAuto/apollo-DuerOS/tree/master/CarLife-Android-Vehicle

https://img-blog.csdnimg.cn/2018122020425390.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoYXJlVXM=,size_16,color_FFFFFF,t_70

https://img-blog.csdnimg.cn/20181220204355850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoYXJlVXM=,size_16,color_FFFFFF,t_70

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

车联网Apollo(阿波罗),研究carlife车机端集成及开发,(WeLink,carplay/carlife) 的相关文章

  • webdriver安装

    首先了解自己所需使用的浏览器 这里以谷歌浏览器为例 火狐 Edge安装方式相同 找相应webdriver即可 查看自己浏览器的版本 去官网找对应版本的webdriver 网址 http npm taobao org mirrors chro
  • SD3.0协议解读三

    SD卡功能描述 所有主机和SD卡间的通信都是由主机控制的 这和USB是一致的 例如 U盘并没有主动通知USB控制器的能力 USB鼠标也没有主动通知USB控制器的能力 当然 SD卡也是没有主动通知SD控制器的能力的 主机发送的命令有两种 一种
  • 几个开发模式

    瀑布模型 开发过程顺序进行 过程规范 有质量保证 但是不能够应对需求变化 更改代价较高 灵活性较低 V模型 基于瀑布模型 但是更强调测试过程 有质量保证 显示出不同层次上的测试方法 并且将测试阶段与开发阶段相联系 原型模型 主要解决核心问题
  • @RabbitListener起作用的原理

    一 前言 在spring中 定义rabbitMq的消费者可以相当方便 只需要在消息处理类或者类方法加上 RabbitListener注解 指定队列名称即可 如下代码 Component public class RabbitMqListen
  • STM32长时间工作后串口不能接收

    问题 记录一次STM32长时间工作后 串口不能正常接收数据 其他功能正常 场景简单描述 在某一个产品上STM32作为前面板的控制 有多个中断开启 大部分的中断级别为0 串口的中断级别为1 串口中断接收 普通方式发送 出现长时间工作之后串口不
  • 快速解决node-sass报错问题

    1 引言 由于项目中需要使用到node sass 因此怀疑我的环境出问题了 于是决定配置nvm让环境变得更加灵活 便于切换node的版本 2 直接开始 1 安装nvm 链接 https pan baidu com s 1Li4o34jB6o
  • 五人合伙最佳股份分配_5人合伙,4个人投资源,1人经营,股权应该如何划分?...

    最近一个客户找到股加加进行咨询 说 我们公司是做新媒体运营培训的 主要靠卖课和咨询服务 3个投资源的手上有很多大V 流量较大的平台这方面的资源 可以拉来业务 我负责经营 另一个出资的 打算投40万到公司 应该给他多少股份 其他四人都是兼职人
  • 【前端编辑器分析(markdown,富文本)】

    随着近几年markdown编辑器的流行 富文本编辑器不再是唯一选择 但是主体都是工具栏加编辑区的模式 1 markdown markdown使用格式标记语言编排内容 当你要修改文章某个地方的格式时 在该位置加入对应的格式符号即可 markd
  • Unable to connect to 127.0.0.1:6379 的解决办法

    问题 Unable to connect to 127 0 0 1 6379 解决办法 1 在redis的目录下输入cmd 2 redis server exe redis windows conf 不关闭窗口 3 然后在新开一个cmd窗口

随机推荐

  • 利用MOS管使电路供电电压稳定之后,降低供电电压的方法

    现在有一款产品需要1 005V高电压启动 0 903V低电压运行 这也是从低功耗的角度设计 下面电路就是利用一颗N沟道MOS管来实现上电瞬间输出高电压 核心板启动之后 输出低电压 SAR GPIO1引脚接的MCU 的GPIO口 先上data
  • MySQL之UPDATE与SELECT结合语法详解与实例

    第一种 语法 UPDATE table1 SET column1 SELECT column FROM table2 WHERE condition WHERE table1 column2 value 注 若不加where条件则是更新表中
  • 进度 060706-060724

    新进度从060706 开始 ESOE v0 2 进度记录 9 060724 内存泄漏降低到实用程度 测试例子100次刷新小于500k 不再优化 并加入析构机制 下一步工作整理说明书 8 在框架页面下出现严重的javascript内存泄漏问题
  • java 驼峰和下划线互相转换

    其实是很简单的正则表达式转换 直接上代码 驼峰转下划线 param str 目标字符串 return java lang String public static String humpToUnderline String str Stri
  • LVM动态扩容逻辑卷详解

    LVM逻辑卷管理 简介 LVM是逻辑卷管理 Logical Volume Manager 的简称 它是Linux环境下对磁盘分区进行管理的一种机制 LVM是建立在硬盘和分区之上的一个逻辑层 来提高磁盘分区管理的灵活性 LVM最大的特点就是可
  • Openldap导入数据(一)

    在安装完openldap之后 默认ldap中是没有数据的 需要管理员进行添加 当然添加的方法也不止一种 这里先介绍第一种方法 从本地系统添加用户到ldap中 root ldapsrv01 ldapsearch x b dc contoso
  • ES查询不存在的索引,索引未创建导致查询报错

    ES查询不存在的索引 索引未创建导致查询报错 项目中的一个es索引是根据时间建立的 在对其操作时候 因时间原因此索引为创建 查询时候报如下错误 Elasticsearch exception type index not found exc
  • Swagger配置完成以后,登录账户名和密码的设置

    spring security basic path swagger ui html enabled true user name admin 账号 password 123456 密码
  • ajax长轮询tornado,数据可用时如何完成Tornado长轮询请求

    我有很长的编程背景 但对Python还不熟悉 我正在研究Tornado 以构建一个长轮询服务的原型 在 我想实现的是用户连接说example com get 1234 这是长轮询部分 1234是用户ID 目前 它只是挂起并等待内容 然后用户
  • 【从零开始的Java开发】1-2-4 Java方法

    文章目录 方法 方法分类 数组作为方法参数 方法重载 基本数据类型的传值 数组的传值 引用数据类型 可变参数列表 可变参数列表作为方法参数的重载 文档注释 方法的调试 细节与总结 方法 所谓方法 就是用来解决一类问题的代码的有序组合 是一个
  • MCU,MPU,MMU,CACHE的含义

    1 mcu和mpu CPU Central Processing Unit 中央处理器 发展出来三个分枝 一个是DSP Digital Signal Processing Processor 数字信号处理 另外两个是MCU Micro Co
  • HTML <colgroup> 标签

    实例 两个 colgroup 元素为表格中的三列规定了不同的对齐方式和样式 注意第一个 colgroup 元素横跨两列 table width 100 border 1 table
  • [138]小米笔记本怎么关闭secure boot

    关闭Secure Boot的步骤 一 关闭 快速启动 功能 1 右键 开始菜单 电源选项 进入后 点击 选择电源按钮的功能 2 进入电源选项设置后 点击 更改当前不可用的设置 再把 启用快速启动 推荐 前边的勾去掉 若没有该选择则不需要操作
  • MDK与芯片的联系

    程序执行的时候FLASH空间 code RO data 程序执行时SRAM空间 RW data ZI data 程序存储时占用空间 code RO data RW data 在目录下打开命令行窗口 按shift 鼠标右键 gt 可以将信息输
  • 区块链:Solidity值类型(Solidity 枚举Enums & 结构体Structs)

    枚举Enums 案例 pragma solidity 0 4 4 contract test enum ActionChoices GoLeft GoRight GoStraight SitStill ActionChoices choic
  • 华为OD机试 C++ 叠积木

    题目 你手里有一堆砖头 它们都有一样的宽和高 但长度不同 你想用这些砖头堆砌一堵墙 每一层墙可以只用一个砖头 也可以用两个拼接起来 但这两种情况下 每层的长度必须都是一样的 如果你想使用所有的砖头 并堆砌出尽可能多的层数 那么最多可以搭建多
  • C#(winform)调用pytorch模型

    winform调用pytorch上训练好的unet模型 项目是写一个辅助诊断系统软件 用winform写软件 调用pytorch和matlab的模型 这篇博客只包含调用pytorch模型的部分 1 c libtorch 调用模型 2 c 生
  • java使用aspose.pdf或者spire.pdf 将pdf文件转word,实测

    1 aspose pdf aspose pdf不是破解版的只能转3页 所以我弄了个破解版 aspose pdf破解版在网上都有破解方法也比较简单 这里就不说了 直接引入破解版的jar包 在这里我用的是aspose pdf 21 11 jar
  • Qt第四十五章:QComboBox 禁止滚轮

    很简单 直接反射将QComboBox的wheelEvent方法重置掉即可 self combo box QComboBox self setattr self combo box wheelEvent lambda a None
  • 车联网Apollo(阿波罗),研究carlife车机端集成及开发,(WeLink,carplay/carlife)

    Apollo 阿波罗 是携程框架部门研发的分布式配置中心 能够集中化管理应用不同环境 不同集群的配置 配置修改后能够实时推送到应用端 并且具备规范的权限 流程治理等特性 适用于微服务配置管理场景 https github com ctrip