标签:
最近在研究carlife车机端集成,基本功能可以正常使用,具体实现后续慢慢写出来。
看看效果图:
/**
* 思路:
* 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通道用于传输这些数据流。
》控制流(Cmd):1个tcp socket通道,主要在车机和移动设备之间传输相关控制消息,比如车载数据、蓝牙自动配对消息、视频初始化消息等。
》视频流(Video):1个tcp socket通道,主要用于移动设备向车机传输视频编码数据。
》音频流(Audio):2个tcp socket通道,一个用于传输Media音频流,另一个用于传输导航TTS(Text to Sound)音频流,分别用于移动设备向车机传输音乐和导航语音播报的PCM流。
》语音流(VR):1个tcp socket通道,主要用于车机向移动设备传输车机mic录制的用户语音数据。
》反控流(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整体框架示意图。
后续再写。。。
标签: 来源: https://blog.csdn.net/weixin_38148680/article/details/80586255
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。