前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android微信上的Wear的开发总结

Android微信上的Wear的开发总结

作者头像
微信终端开发团队
发布2018-01-29 15:42:20
1.6K0
发布2018-01-29 15:42:20
举报

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、健康数据

手表相对于手机来说,更贴近人体,所以手表应用的一个必备的属性就是健康属性,微信目前采集了两种健康数据,一个是步数,一个是心跳。

  1. 获取步数时有个坑,就是获取的stepCount是历史总步数,如果你需要获得今天所走的步数,需要在0点的时候,记录一个总数,然后再24点的时候拿当前总步数减去0点总步数才可以得到。
  2. 获取心跳需要注意的是心跳的精度,分为三个级别,根据自己的需求进行调整。
  3. 获取健康数据的时候还需要加入一些权限设置,手机和手表都需要加。

3、消息通知

Notification是AndroidWear的一个重要功能之一,Android Wear会自动将手机的Notification同步到手表上,但是这样同步到的Notification可以做的Action非常有限,不允许使用手表上的资源,如录音,磁盘等。

一般来说,Phone App需要支持Wear Notification有两种方式:

  1. 在PhoneApp的Notification中加入WearableExtender的方式,可以为Wear上的Notification指定一些特殊的Action
  2. 自己将数据传到Wear上然后本地创建一个Notification,这样做的好处是可以直接使用Wear上的资源。

第二种方式可以实现录音,直接拿到用户的语音数据,录音的方法就是是用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

  • 在当前手表的性能下,要把复杂的计算任务放到Phone App来做,而Wear App只负责显示。
  • Wear App的耗电只需要主要是使用传感器时需要及时释放,大部分时候用户在不使用手表时,会恢复到睡眠模式。
  • Wear App的存储尽量只做必须的缓存,大部分数据都是用时从手机那边拿就可以了。
  • 开发Wear App时,需要很注意权限,Wear的所有权限手机端都要有,如果漏掉一个就会出现Wear App装不到手表上。
  • Wear App的签名必须和Phone App的签名保持一致。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WeMobileDev 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档