文/ticwear团队
Android Wear连接 iPhone?这听起来有点遥不可及,但是目前有外媒称谷歌正致力于让基于Android Wear平台的智能手表与iPhone兼容。根据目前获取的信息,Android Wear智能手表将通过iPhone上的配套应用程序完成互动。不过只会拥有一些基本功能,比如通知、来电提醒、谷歌Now的环境信息卡等功能。
虽然苹果发布了Apple Watch,但是Android Wear众多的款式和低廉的价格依然让很多智能手表用户心动,在安卓手表和苹果手表两大阵营之间,Google与 Apple Watch 竞争最简单的致胜法宝也许便是让 Android Wear 设备兼容 iOS。虽然听起来很诱人,但是也有人说,这几乎不可能,那么苹果有可能完全开放,让Android Wear 连接iPhone吗?也许,这要从他们的前世今生说起。
两大系统之间的交锋
自从iOS 07年出世,Android第二年紧随其后产生,Android与iOS作为两大系统,多年来交锋不断,也各自产生了一大票粉丝,孰赢孰输,尚未有定论。
iOS来源于Apple的OSX,是UNIX系统,OSX已经有差不多10年的历史,从内核底层到软件架构都是逐步发展过来的。iOS使用ObjectivC这个古老的语言来做开发。
而Android是Google基于Linux搞来的,严格意义上讲Android并不是一个Linux系统,它没有Linux的xwin,没有glibc,缺乏一整套标准的Linux程序。Android应用绝大部分都是使用JAVA开发,跑在Dalvik虚拟机上(5.0之后切换为Art)。 Google在底层也修改了很多东西。Android算是一个全新的操作系统。
iOS一开始预装了很多谷歌的服务,如搜索、地图、Youtube, iOS 6 Beta版中移除了YouTube,Google 地图等服务,换成自己的服务,虽然在发布后,苹果地图便受到了很多批评和质疑,不过2012年以来,苹果地图有了很多改进,其准确度也在不断完善中。
安卓系统在部分体验上不如iOS, 如用户常常抱怨的耗电, 不稳定, 不安全等问题,作为一个开放的系统,Android系统开发者的发挥空间更大,有更多的自由度,做到一些iOS系统在应用级难以实现的功能,而且消费者也有更多的机型可以选择。
但开放的代价是生态环境不能很好的控制,导致很多恶意的,不够精良的应用出现,影响Android系统的用户体验。安卓在用户界面, 体验上一直在向iOS看齐,且也有自己出彩的地方, 比如手机端的下拉通知中心, led通知灯, 无物理按键等。
iOS则是有相对更加优秀的用户体验。优点包括:统一流畅的用户体验,丰富优质的App,良好的生态系统,相对安全的系统。但是封闭的系统随之带来的问题是开发者在iOS设备上可以做的事情相对较少, 比如到目前为止都不能和安卓设备通过蓝牙连接。
多点触控(Multi-touch)一开始是iOS的专利, 安卓紧随其实也有了触屏(Multi-touch)的功能,追随的局面直到最近安卓率先扁平化, 变成了苹果紧随其后,在iOS7推出的系统扁平化UI, 安卓在扳回一城之后,又推出了全新的设计和交互的风格(material design)。
Android设备和iOS融合的技术问题
从技术方面讲,Android Wear手表连接iPhone有两种方式:
低功耗蓝牙(BLE)方式,这种方式连接不需要通过苹果认证,只需要手表端安装一个接收蓝牙通知的应用。 但安卓支持BLE的时间比较晚(在2013年才推出支持蓝牙4.0 BLE特性的Android 4.3), 并且由于各个厂商的蓝牙驱动质量参差不齐以及安卓本身蓝牙栈的不稳定, 使得在安卓上进行BLE开发困难重重. 安卓正式支持蓝牙是在4.3这个版本. 4.3和之后的4.4只开放了BLE最为中心设备(central)这个接口. 从5.0开始, 虽然安卓可以作为周边设备(peripheral), 但支持这个功能的只有谷歌自己的亲儿子Nexus 6和Nexus 9。
对于其他安卓开发者来说,不能作为周边设备会给开发带来很多困难, 比如手表和手机配对连接和重新连接的流程就会比较复杂. 蓝牙驱动质量的问题是开发中最大的难点, 比如奇怪的错误代码, 莫名其妙的连接断开等等. 安卓本身的蓝牙栈的bug也是层出不穷, 去AOSP Issue Tracker中搜索Bluetooth会有四百多个还没有解决的bug。
经典蓝牙方式,这种方式可以支持较快速的大数据量传输,然而这种方式的连接要求设备必须通过苹果的MFi (Made for iOS)认证。要通过此认证,必须让苹果认为此设备达到了苹果要求的性能标准。整个认证流程比较麻烦,包括开发认证和制造认证两个部分,需要向苹果提交产品的技术细节以及制造工艺,甚至包括产品的包装设计。据称,MFi 认证的通过率很低。迄今为止,还没有任何一款Android Wear设备通过MFi 认证,不知道是否设备厂商没有申请认证,或者是苹果否决了所有申请。
Android wear 与ios连接
iOS与Android系统连接难在哪?
1)iOS平台
iOS的不开放性以及对后台应用的限制让安卓和iOS相连更加难. 安卓核心源码是全开放的, 有了问题开发者可以自己去看源码解决问题. iOS没有开放的源码, 出了一些少见的问题就很难定位问题到底出在哪里, 是安卓那边还是苹果这边, 如果是苹果的问题就基本没有解决方案只能等苹果发布更新. 另外iOS对后台应用的限制是另一个难点.
2)低功耗蓝牙(BLE)本身
BLE全新的编程方式以及低功耗的特性让开发更难. 在传统蓝牙上开发和TCP网络编程比较类似, 开发者只需要操作socket发送和接受数据即可. BLE没有socket的概念, 取而代之的是service, characteristic, 和descriptor: service就是一个服务, 一个BLE周边设备可以广播多个服务, 每个service又有多个characteristic, 作为传送数据的通道. 每个characteristic一次最多可以传送20个字节, 可以同过descriptor配置成是读或写. BLE的接口非常原始,开发者需要基于这些再做一次封装后才能比较高效的传输数据. 另一个BLE的限制就是低功耗. 根据维基百科,低功耗蓝牙的数据传输率是经典蓝牙的三分之一。而实际应用中,出门问问发现BLE的数据传输率还要更低,大约只有经典蓝牙的百分之一。在出门问问Ticwear测试的设备上, BLE的传输速度在0.5KB ~ 2KB左右每秒, 也就是说如果用BLE来传输一首4MB左右的MP3需要至少半个小时.
目前已经实现iOS与Android手表系统连接的途径
今年1月份,出门问问团队就已经在中文智能手表操作系统Ticwear中发布了连接iOS的功能。二月份,国外开发者Mohammad也宣布实现了这个功能。最近,谷歌Android Wear团队也透露将支持iOS,估计也是通过BLE的方式。
由于BLE的连接方式有比较大的限制,实际数据传输速率只有大约1KB每秒,如此低的数据传输率决定了BLE只能支持小数据量的通讯,譬如来电提醒、通知等等。数据传输量较大的任务,如语音搜索,应用下载和OTA升级则很难实现。
Ticwear连接iOS和市场上其他的同类应用不同, 除了支持消息推送外, Ticwear iOS助手支持更换表盘, 时间同步, 接打电话等只有AndroidWear和安卓手机相连是才有的功能. 为了实现这些功能, 出门问问对BLE进行了重新封装, 使得上层应用可以无缝的连接iOS安卓设备. 对这些功能的支持就要求Ticwear iOS助手在用户的iOS设备上即使被切换到了后台也能使用蓝牙(因为用的是低功耗蓝牙, 用户完全不用担心耗电的问题). 但是iOS在不同的版本对蓝牙应用在后台停留的时间定义也不同, 使得用户不定期会出现蓝牙连接断开的情况从而影响用户体验。
安卓和iOS连接目前主要是依赖于wifi, 蓝牙的话需要通过苹果的MFi 认证, 很少有安卓设备通过这个认证. 目前安卓手表连接iOS设备可以通过Ticwear或者其他的一些解决方案. Apple watch连接Android手机的方案目前还没有.
出门问问团队认为,苹果卖手表的一大目的就是促进iOS手机的销售, 所以短期能苹果应该是没有动力去支持Apple Watch连接安卓手机或者让Android Wear连接iOS设备。迫于各方压力,苹果最终应该会让一部分优质的Android Wear设备通过MFi 认证,从而让这些设备实现和iOS的完美适配。但是,由于苹果刚发布Apple Watch产品,出于竞争的考虑,短期内应该不会让Android Wear设备通过认证。但是开发者会想尽方法让着两大阵营的设备能互联. 因为接下来无论是Android Wear还是Apple Watch都支持wifi, 不存在蓝牙的限制, 他们互联的可能性充满了想象空间.