最近在研究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整体框架示意图。
联系客服