本论坛将全面搬家到:http://www.cnblogs.com/91program,请大家以后来这里看看。
手机互联的概念
手机互联:通过手机车机映射技术可以在车载终端上充分发挥智能手机的优势,例如:手机端资源丰富,软件更新方便、快速等等。
手机成万物互联的中心,应用于车载市场,是由于车载市场的高端性。
手机的优点
车机的优点:屏幕大
把手机的优点和车机的优点结合起来,满足消费者的需求,是现在车载产品的一个重要的发展方向。例如:一些车载产品,通过手机互联技术,在车载产品将不再有导航功能。而是利用手机上的导航软件,这样可以做到节省成本。
手机互联现状:
原车载行业
国际巨头
本地巨头
本来车载行业在手机互联方面已经是一片混战,先有苹果和Google,现在又加上了 BAT 中的两家。由于阿里收购高德,利用高德A-Link的资源开始布局手机互联。百度也通过 CarNet 进入手机互联产品。
手机互联都有哪些技术呢?
标准手机互联(为手机互联技术而生):
1) MirrorLink
2) 苹果:CarPlay
3) 谷歌:AndroidAUTO
1) MirrorLink 手机通过USB,BT 或 WIFI,即可与车机建立连接。
Nokia 发布的技术,现被 MS 收购
通过 USB 连接,打电话还是走 BT 通道
将手机虚拟成网卡,车机通过 RTSP 流媒体播放显示
最新版本:V1.2(30帧);常用的是 V1.1(10-15帧),显示还不能完成达到用户的要求。
将 Android 手机插入 PC 上,会在 PC 的网络链接中看到一个虚拟的网卡: Windows Mobile-based Internet SharingDevice
2)苹果:CarPlay
连接方式:USB/WIFI
硬件系统等的要求:需要 iOS 7.1,iPhone 5,要求硬按键支持 SIRI,
功能:不支持视频;车机显示界面与手机显示界面不同,采用 RTP/RTSP 视频流显示界面。
只能使用苹果在线地图,不实用(流量太大)
与其它方案的一个差别:车机做为从设备、手机做为主设备
3) 谷歌:Android AUTO
OpenAutomotive Alliance,开源汽车联盟
将一些简单的功能映射到车机,与苹果的实现类似。
其它应用于手机互联的技术:
1)MHL/HDMI
2)DLNA
3)Mirocast
MHL:Mobile High-Definition Link,移动终端高清影音标准接口,从 HDMI 引申而来。
使用一条信号电缆,通过标准 HDMI 输入接口
Micro USB
DLNA:Digital Living Network Alliance,由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通。DLNA并不是创造技术,而是形成 一种解决的方案,一种大家可以遵守的规范。
Mirocast:本身不是为手机互联设计的,BT回控
WIFIDisplay,通过WIFI Direct(WIFI直连)实现
只能通过 BT 回控,不支持苹果手机
App-Link 技术:
AppLink:高德:ASDL/百度:CarNet
A-Link + SDL:Smart Device Link(由 Ford 开发,开源协议)
只能回控 App,不能回控系统或其它 App
CarNet:针对 WinCE,通过 USB 将手机上的一些服务投射到车机上。
Apple 未开放对国内的授权
Android AUTO 也只有几个有限的大公司在做
接下来我们来研究一下 MHL 的具体实现:
MHL 硬件关键元器件列表:
器件名称 |
器件型号 |
价格XX |
MHL IC |
EP94Z1 |
XX |
音频D/A |
CS4344 |
XX |
HDMI_E插座 |
MX50/53 |
XX |
图:MHL框图
车载设备通过 MHL 与手机连接时,可以支持 Android 和 iOS 系统的手机,当然手机的硬件需要支持 MHL。这样可以将手机的屏幕显示映射到车载设备的屏幕上显示,但如何通过车载设备来控制手机呢?此功能我们称之为“回控”,一般是通过 BT 来实现。当然,也可以通过其它无线通讯技术来实现回控。
两种回控方式:
一种是通过 HID(Human Interface Device),这时手机将车载设备当成一种输入设备。
另一种,是通过在手机上安装应用软件,通过车载设备上软件与此应用软件之间的通过 BT SPP 通讯来完成回控。下面我们来重点介绍第2种方法,采用这样方式需要手机与车载设备之间进行短距离通讯,现在比较流行的利用 BT。
Android 系统:通过 BT 的 SPP(蓝牙串行端口)协议来完成指令的传输。
iOS 系统:因为苹果的要求,通过 BT 控制 iPhone 必须通过其认证。控制的方式较 Android 要复杂很多,要通过 iAP 认证,就比较相应的 IC 才能完成。
无论是哪一种手机系统,开发手机端软件都必须具备较深的功底。手机与车载设备之间的通讯协议因为完全是自定义的,没有什么难度。一般来说,协议需要支持:
1 手机是什么系统
2 手机屏幕分辨率
3 手机屏幕是横屏显示、还是竖屏显示
4 是否处于手机互联 App 界面
5 控制方式:SPP、还是 HID
6 心跳包、应答包
7手机与车机连接/断开连接指令
8 Touch信息
9 其它功能控制,如 音乐 控制等指令
等等。
通讯协议示例:
(1) Type
Func 功能分类,例如:通用、音频、视频、SMS等等
0x00 通用功能
0x01 音频功能
0x02 视频功能
0x03 SMS(???)
Index 各分类中的具体功能索引,例如:通用功能中有手机与车机连接指令、手机与车机断开连接指令、当前应用、启动应用指令、心跳包、ACK、音量、USB存贮设备状态、SD卡状态、手机OS类型[iOS(0x01)/Android(0x02)/WindowsPhone(0x03)]等等。
0x00~0x1F 通用功能中各子功能的索引
0x20~0x5F 车机发送到手机的指令索引
0x60~0x9F 手机发送到车机的指令索引
(2) D_Flag 指令是否需要应答(ACK)
0 bit: 0 不需要 ACK;1 需要 ACK。
其它 bits 备用。
(3) Checksum 采用异或和
(4) 采用网络字节序:即高字节优先
(5) 流水号:从 0 开始到 65535,循环使用
(6) Length:指 Payload 的有效长度,取值:0-65535
(7) Payload:有效负载的数据
(8) Header 与 End:帧头与帧尾
如果使用 BT 可以参考 BT 相关的指令分析方法,然后加入对 SPP 和 HID 指令的处理;如果使用其它无线通讯技术,如:Socket,可以参考以前讲过的 Socket 编程的代码,加入对如上述自定义协议的数据解析的过程。