2014年3月19日,Google发布为智能手表打造的全新智能平台Android Wear,微信于6.0.2版本开始支持,Google对Android Wear的定位是手机的辅助设备,因为其更接近人体,所以能采集更多人体的健康信息,同时,它比手机更快更方便查看消息。
1、通讯
作为手机的辅助,它与手机数据的通讯显得尤其重要,Android Wear采用蓝牙4.0(蓝牙低功耗版本)与手机进行通讯,google把蓝牙连接层已经封装好了,通过gms的Google Api Client提供数据的传输。
Google Api Client提供给开发者三个API的通讯方式,Message Api,Data Api,Channel Api。
Message Api类似于广播的方式,需要知道其他的节点的Id才可以对给其发送消息。
Data Api类似于共享队列的方式,不需要支持其他节点的Id,只需要把数据放到队列中即可。
Channel Api是大文件的传输,如电影,大音乐文件,是点对点传输。
微信使用的是MessageApi和DataApi结合的方式。
1、传输数据如果大于100KB,使用DataApi的Asset或者ChannelApi来进行传输。
2、如果小于100KB,使用MessageApi的方式进行传输。
选取100KB作为临界点是google官方的限制,在小于100KB的情况采用MessageAPI方式进行传输,是因为MessageApi是可靠传输方式,可以知道消息是否真正送达该节点。而在大于100KB的情况使用了DataApi的Asset传输,则会自己通过超时的方式来确定对应节点是否接收到消息。
微信Phone和Wear的通讯模型,最开始是端对端的方式,把Wear端和Phone端都作为一个Client来进行通讯。
在端对端的模型中,两者是对等的,每一个业务双方都需要Listener和Handler。
优点:适用于业务量少,开发周期短
缺点:业务增多,代码量增加巨大
现阶段的通讯模型做了一些改进,把原来的端对端通讯改成了客户端服务器模型,把所有的通讯进行归类。
客户端到服务器的短请求:一次请求发送,一次请求返回
客户端到服务器的长请求:多次请求发送,一次请求返回
服务器到客户端的Push:Phone主动向Wear 推送数据
该模型中,每个传输的都是一个统一的数据包进行传输,数据包包含了包头和包数据,包头定义了解析高数据的方式,包数据是每个业务自己生成的内容。每一个包都有唯一的ID进行追踪。
短请求类似于Http请求,长请求类似于Http中的长连接,对于客户端的调用方式也和Http请求类似,由Client,Request,Response组成,阻塞的方式调用。
优点:适用于业务量较多,对基本的包封装和每个业务进行解耦,提高增加新业务的开发速度。
缺点:前期工作稍微多一些
2、健康数据
手表相对于手机来说,更贴近人体,所以手表应用的一个必备的属性就是健康属性,微信目前采集了两种健康数据,一个是步数,一个是心跳。
3、消息通知
Notification是AndroidWear的一个重要功能之一,Android Wear会自动将手机的Notification同步到手表上,但是这样同步到的Notification可以做的Action非常有限,不允许使用手表上的资源,如录音,磁盘等。
一般来说,Phone App需要支持Wear Notification有两种方式:
第二种方式可以实现录音,直接拿到用户的语音数据,录音的方法就是是用AudioRecord,和手机上的实现差不多,需要注意的是不能直接在左滑的时候使用AudioRecord,因为当时录音资源一直被Google占用,需要跳到自己的Activity中才可以使用。
Wear Notification不支持RemoteView,但是支持Embedded Activity,而Embedded Activity的限制也很多,例如,上下滚动的Touch操作,会触发Notification的切换,对Icon的点击效果变化并不友好,背景也不能设置成为透明。Notification不能显示Image和ImageSpan,可以显示google系统支持的Unicode编码Emoji。
Wear Notification有提供一个提供文字输入的方式,就是RemoteInput,调用google的语音识别界面,可以返回用户语音的文字内容。
4、界面
Wear上的界面开发需要适配方形表和圆形表,google通过有提供roundlayout和rectlayout的接口来进行适配,官方文档有详细的说明,这里不过多阐述了,但是这个是静态的方式来进行适配,如果是需要动态适配,就需要有一个随时能够获取表盘的形状的接口。
通过在Activity启动时,传入ContentView,就可以动态获取到当前表盘的形状。
5、性能以及一些tip