一、通讯业务概要
1 手环连接
- 手机生成随机数,每次与手环进行连接,发送随机数给手环,如果手环没有被绑定,手环存下随机数,存下随机数后,将结果返回给手机。如果手环被绑定了,将手机发过来的随机数与当前的随机数比对,将比对结果发送给手机。
连接结果返回四种状态:
1) 手环第一次被连接的状态。
2) 手环被其它手机绑定的状态。
3) 手环与手机下发随机数相等的状态。
4) 其它异常。
在状态一的情况下,APP清楚所有的本地数据。
在状态二和三的情况下,APP告诉用户相应的信息。 - 每次手机与手环进行连接,手机将时间下发给手环进行校准。
2 手环解绑
- 手机对手环进行解绑: 手机APP清空所有的数据库,所有的通知开关不使能。手环清空所有数据:计步、心率、血压、心电、闹钟、不使能通知消息
- 手环触摸键重置解绑:手环清空所有的存储数据。下次被手机连接的时候,告诉手机手环是第一次被连接,手机清空数据库数据。
3 计步
- 由手环主动发送数据包给APP。
4 数据同步
- APP请求数据同步的时候,手环发送存储的心率、血压。
- 手环发送数据后不进行数据存储。手环不发送数据,要进行数据存储。
二、协议部分设计:
序列 | 操作 | 手机对手环 | 手环对手机 |
---|---|---|---|
1 | 连接操作 | 手机下发时间和随机数 | 返回状态码 |
2 | 解绑 | 手机下发解绑指令 | 返回成功或者失败 |
3 | 获取计步 | 无 | 手环主动上传数据包 |
4 | 获取计步 | 手机下发获取计步指令 | 手环上传数据包,或者异常指令 |
5 | 获取心率、血压 | 手机下发开始检测指令 | 手环上报心率或者血压值,或者异常指令 |
6 | 获取心电 | 手机下发开始暂停指令 | 手环收到开始指令,手环上传数据包。手环收到暂停指令,停止上传数据包 |
7 | 修改通知 | 手机下发开启关闭指定通知:电话、短信、微信、QQ、微博 | 手环返回成功或者失败指令 |
8 | 获取通知状态 | 手机下发查询通知状态指令 | 手环上传通知的状态(电话、短信、微信、QQ、微博) |
9 | 获取闹钟 | 手机下发查询闹钟指令 | 手环上报闹钟列表。(闹钟ID,闹钟设置时间、闹钟是否开启、贪睡模式是否开启,闹钟模式) |
10 | 修改闹钟 | 向手机发送模式指令:每天、只提醒一次、周一到周日自定义,是否开启贪睡模式(每十分钟响一次,触摸按键可以暂停),闹钟ID、闹钟时间、是否开启闹钟 | 返回设置成功或者失败指令。失败类型:设备ID在本地未查找到、其它异常 |
11 | 添加闹钟 | 手机下发添加闹钟指令:闹钟模式、时间、是否开启贪睡模式、是否开启闹钟 | 返回添加成功或失败指令 |
12 | 删除闹钟 | 手机下发删除闹钟设备指令:闹钟ID | 设备返回失败或者成功指令。失败类型:设备ID在本地未查找到、其它异常 |
13 | 数据同步 | 手机下发同步指令 | 手环返回存储的数据包:心率、血压 |
三、APP数据库设计
1 心率表结构
ID(主键,自增益)、检测时间、心率值。
2 血压表结构
ID(主键,自增益)、检测时间、高压、低压。
3 闹钟表结构
ID(主键,自增益)、启动时间、是否开启闹钟、模式、是否开启贪睡模式。
4 心电表结构
ID(主键,自增益)、开启检测时间、手环返回数据时间、心电值。
5 轨迹表结构
ID(主键,自增益)、开启时间、运动时长,公里、卡路里。
注:iOS和安卓分别采用coreData和sqlite进行数据持久化存储。
网友评论