魔样手表AndroidSDK 开发指南_08_31.md 38 KB

[TOC]

开发指南

1 环境配置

###1.1 添加AAR包

将 crpblelib-*.aar 复制到工程的libs目录下。如果有老版本 aar 包在其中,请删除。

1.2 声明权限

在AndroidManifest.xml中配置权限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

###1.3 声明组件

请在 application 标签中声明如下组件

<activity android:name="com.crrepa.ble.trans.upgrade.NotificationActivity"/>
<service android:name="com.crrepa.ble.trans.upgrade.DfuService"/>

1.4 代码混淆

在生成 apk 进行代码混淆时进行如下配置

-keep class com.crrepa.ble.** { *; }

2 使用

###2.1 初始化

CRPBleClient 是 SDK 的入口, 客户端需要维护 CRPBleClient 的实例,建议在 Application.onCreate() 中初始化 CRPBleClient。

CRPBleClient bleClient = CRPBleClient.create(context);

###2.2 扫描手环

扫描手环

在权限允许和蓝牙开启状态下,才能开始正常扫描。在扫描过程中发现手环时,通过CRPScanCallback.onScanning() 回调。扫描结束后,通过 CRPScanCallback.onScanComplete() 回调扫描过程中发现的所有手环。可设置扫描时长,单位为毫秒,因蓝牙扫描操作是费时操作,建议扫描时长为 10 秒。

bleClient.scanDevice(scanCallback, 10000);

取消扫描

在扫描过程中停止扫描,取消扫描也会触发 CRPScanCallback.onScanComplete()。

bleClient.cancelScan();

###2.3 连接手环

通过扫描回调的 CRPScanDevice 获取到手环的 Mac Address。通过 CRPBleDevice.connect() 与手环建立连接,通过 CRPBleConnectionStateListener.onConnectionStateChange() 回调连接状态。建议在断开重连时,可以增加适当延时,以便系统回收资源,保证连接成功率。

String address = CRPScanDevice.getDevice().getAddress();
CRPBleDevice bleDevice = bleClient.getBleDevice(address);
CRPBleConnection bleConnection = bleDevice.connect();
bleConnection.setConnectionStateListener(bleConnectionStateListener);

###2.4 设置时间

保持手环和手机的时间一致。

bleConnection.syncTime();

###2.5 固件升级

  1. 查询固件版本

查询手环当前固件版本。

bleConnection.queryFrimwareVersion(CRPDeviceFirmwareVersionCallback);
  1. 查询新固件

新固件信息通过 CRPDeviceNewFirmwareVersionCallback.onNewFirmwareVersion() 回调。version 为当前固件版本。

bleConnection.checkFirmwareVersion(CRPDeviceNewFirmwareVersionCallback, version, CRPFirmwareUpgradeType);

CRPFirmwareUpgradeType:

NORMAL_UPGEADE_TYPE BETA_UPGRADE_TYPE FORCED_UPDATE_TYPE
正常升级。用于常规升级。 BETA升级。用于内测版本升级。 强制升级。一般不使用,用于重大更新,强制用户升级。

CRPFirmwareVersionInfo:

version changeNotes changeNotesEn type mcu
手环当前固件版本号 更新日志 英语更新日志 升级方式,同CRPFirmwareUpgradeType MCU类型,用于区分升级方式
  1. 固件升级

汉天下与Nordic固件升级方式不同,需要对不同mcu的手环使用对应的升级方式。

  • Nordic
  1. 开始固件升级升级

升级进度通过 CRPBleFirmwareUpgradeListener 回调。

bleConnection.startFirmwareUpgrade(CRPBleFirmwareUpgradeListener);
  1. 停止升级

在升级成功或者失败后,可调用此接口退出固件升级流程。

bleConnection.abortFirmwareUpgrade();
  1. 查询手环DFU状态

查询手环是否处于DFU数据传输状态,在新版本固件中,手环在DFU过程中会多次重启,手环处于DFU状态时,避免向手环发送其它指令。结果通过CRPDeviceDfuStatusCallback.onDeviceDfuStatus()回调。

bleConnection.queryDeviceDfuStatus(CRPDeviceDfuStatusCallback);

CRPDeviceDfuStatusCallback

DEVICE_STATUS_NORMAL DEVICE_STATUS_DFU
正常状态 DFU状态
  • 汉天下
  1. 查询手环固件升级模式的 Mac 地址

汉天下手环的升级模式和正常模式不同,拥有单独的广播的名字和 Mac 地址,Mac 地址通过 CRPDeviceDfuAddressCallback 回调。在升级之前需要查询手环固件升级模式的 Mac 地址,可保存此 Mac 地址,在升级失败后重新升级。

bleConnection.queryHsDfuAddress(CRPDeviceDfuAddressCallback);
  1. 进入固件升级模式

手环进入固件升级模式后,会与正常模式断开蓝牙连接,在蓝牙连接断开后,发起固件升级。在手环进入固件升级模式后,不得再发起正常模式的蓝牙连接,会导致固件升级失败。

bleConnection.enableHsDfu();
  1. 开始固件升级

升级进度通过 CRPBleFirmwareUpgradeListener 回调。升级成功后,手环会重启回到正常模式;升级失败后,可重新开始固件升级。

HsDfuController hsDfuController = new HsDfuController();
hsDfuController.setUpgradeListener(new CRPBleFirmwareUpgradeListener());
hsDfuController.setAddress(address);
hsDfuController.start();
  1. 停止升级

在升级成功或者失败后,可调用此接口退出固件升级流程。

hsDfuController.abort();

###2.6 查询手环电量

  1. 查询手环当前电量,当手环电量超过100时,表示手环正在充电。
bleConnection.queryDeviceBattery();
  1. 设置手环电量监听
bleConnection.setDeviceBatteryListener(CRPDeviceBatteryListener);

###2.7 用户信息

  1. 设置用户信息

向手环设置用户的个人信息。

bleConnection.sendUserInfo(CRPUserInfo);

CRPUserInfo:

weight height gender age
体重(用于计算卡路里) 身高(用于计算活动距离) 性别(用于测量血压或血氧) 年龄(用于测量血压或血氧)
  1. 设置用户步长

在手环固件1.6.6及以上版本,可以向手环设置步长,更加精准的计算活动数据。

bleConnection.sendStepLength(length);

###2.8 天气

  1. 设置今日天气

向手环设置今日天气。

bleConnection.sendTodayWeather(CRPTodayWeatherInfo);

CRPTodayWeatherInfo:

city lunar festival pm25 temp weatherId
城市名 农历节气节日 公历节日 PM2.5 实时温度 天气状态

CRPWeatherId:

CLOUDY FOGGY OVERCAST RAINY SNOWY SUNNY SANDSTORM HAZE
多云 阴天 沙尘暴
  1. 设置未来7日天气

向手环设置未来7天天气。

bleConnection.sendFutureWeather(CRPFutureWeatherInfo);

CRPFutureWeatherInfo.FutureBean:

weatherId lowTemperature highTemperature
天气状态 最低温度 最高温度
  1. 设置天气监听

手环可以保存实时天气2个小时,2小时以后会清空天气信息。当手环无今日天气信息时,手环切换到天气界面时会通过 CRPWeatherChangeListener.onUpdateWeather() 请求重新设置天气。

bleConnection.setWeatherChangeListener(CRPWeatherChangeListener);

###2.9 活动步数

  1. 设置活动相关监听

所有活动相关的数据都会通过 CRPActionChangeListener 回调。

bleConnection.setStepChangeListener(CRPActionChangeListener);
  1. 获取今日步数

获取今日步数,结果通过 CRPActionChangeListener.onStepChange() 回调。

bleConnection.syncStep();

CRPActionInfo:

steps distance calories
步数 距离(单位:米) 卡路里(单位:千卡)
  1. 获取历史步数

手环可以保存最近三天的活动步数数据,可以查询指定某天的活动步数数据。结果通过CRPActionChangeListener.onPastStepChange() 回调。

bleConnection.syncPastStep(CRPPastTimeType);	

CRPPastTimeType:

YESTERDAY_STEPS DAY_BEFORE_YESTERDAY_STEPS
昨天活动步数 前天活动步数
  1. 设置步数统计数据监听

步数统计数据会通过CRPStepsCategoryChangeListener回调。

   bleConnection.setStepsCategoryListener(CRPStepsCategoryChangeListener);
  1. 获取步数统计数据

部分手环支持最近两天步数半小时分类统计。结果通过CRPStepsCategoryChangeListener.onStepsCategoryChange()回调。

   bleConnection.queryStepsCategory(CRPStepsCategoryDateType);

###2.10 睡眠

  1. 设置睡眠监听

所有睡眠相关的数据都会通过 CRPSleepChangeListener 回调。

bleConnection.setSleepChangeListener(CRPSleepChangeListener);
  1. 获取今日睡眠

获取今日睡眠数据,结果通过 CRPSleepChangeListener.onSleepChange() 回调。手环睡眠清空时间为晚上8点,手环记录入睡时间段为晚上8点至第二天上午10点。

bleConnection.syncSleep();

CRPSleepInfo:

totalTime restfulTime lightTime soberTime SLEEP_STATE_RESTFUL SLEEP_STATE_LIGHT SLEEP_STATE_SOBER
总睡眠时间 深睡眠时间 浅睡眠时间 清醒时间 深睡眠状态 浅睡眠状态 清醒状态

CRPSleepInfo.DetailBean:

startTime endTime totalTime type
开始时间 结束时间 总时间 睡眠类型
  1. 获取历史睡眠数据

手环可以保存最近三天的睡眠数据,可以查询指定某天的睡眠数据。结果通过CRPSleepChangeListener.onPastSleepChange() 回调。

bleConnection.syncPastSleep(CRPPastTimeType);

CRPPastTimeType:

YESTERDAY_SLEEP DAY_BEFORE_YESTERDAY_SLEEP
昨天睡眠 前天睡眠

###2.11 时间制式

  1. 设置时间制式

手环支持12小时制和24小时制。

bleConnection.sendTimeSystem(CRPTimeSystemType);

CRPTimeSystemType:

TIME_SYSTEM_12 TIME_SYSTEM_24
12小时制 24小时制
  1. 获取时间制式

查询手环正在使用的时间制式,结果通过CRPDeviceTimeSystemCallback.onTimeSystem()回调。

bleConnection.queryTimeSystem(CRPDeviceTimeSystemCallback);

###2.12 翻腕亮屏

  1. 设置翻腕亮屏状态

开启或关闭手环翻腕亮屏功能。

bleConnection.sendQuickView(state);
  1. 获取翻腕亮屏状态

结果通过CRPDeviceQuickViewCallback.onQuickView()回调。

bleConnection.queryQuickView(CRPDeviceQuickViewCallback);
  1. 设置翻腕亮屏有效时段

手环支持翻腕亮屏有效时段,翻腕亮屏有效时段内翻腕亮屏才有效。

bleConnection.sendQuickViewTime(CRPPeriodTimeInfo);
  1. 获取翻腕亮屏有效时段

查询手环设置的翻腕亮屏有效时段。结果通过CRPDevicePeriodTimeCallback.onPeriodTime()回调。

bleConnection.queryQuickViewTime(CRPDevicePeriodTimeCallback );

###2.13 目标步数

  1. 设置目标步数

向手环推送用户的目标步数,当天活动步数达到目标步数时,手环会有目标达成提醒。

bleConnection.sendGoalSteps(steps)
  1. 获取目标步数

查询手环的目标步数,结果通过CRPDeviceGoalStepCallback.onGoalStep()回调。

bleConnection.queryGoalStep(CRPDeviceGoalStepCallback);

###2.14 表盘

  1. 切换表盘

手环支持三个不同的表盘,可以自由切换。

bleConnection.sendWatchFaces(CRPWatchFacesType);

CRPWatchFacesType:

CLASSIC_PORTAIT MODEN_PORTAIT CLASSIC_LANDSCAPE
第一个表盘 第二个表盘 第三个表盘
  1. 获取表盘

查询手环正在使用的表盘序号,结果通过CRPDeviceWatchFacesCallback.onWatchFaces()回调。

bleConnection.queryWatchFaces(CRPDeviceWatchFacesCallback);
  1. 更换表盘背景图片

部分1.3寸彩屏的表盘支持更换背景图片,图片尺寸为240 * 240 px。compressed 表示图片是否需要压缩(主控为52840的手环不支持压缩,固定为false);timeout 表示超时时间,单位为秒。进度通过CRPWatchFaceSwitchListener回调。

bleConnection.switchWatchFaceBackground(Bitmap, compressed, timeout, CRPWatchFaceSwitchListener);
  1. 修改表盘布局

部分1.3寸彩屏的表盘支持修改表盘布局。

bleConnection.sendWatchFaceLayout(CRPWatchFaceLayoutInfo);

CRPWatchFaceLayoutInfo:

timePosition timeTopContent timeBottomContent textColor backgroundPictureMd5
时间位置 时间上方显示内容 时间下方显示内容 字体颜色 背景图片MD5,长度为32位,用0填充时,背景图片恢复默认背景。

CRPWatchFaceLayoutType:

WATCH_FACE_TIME_TOP 时间位于右上方
WATCH_FACE_TIME_BOTTOM 时间位于右下方
WATCH_FACE_CONTENT_CLOSE 关闭,不显示任何内容
WATCH_FACE_CONTENT_DATE 日期
WATCH_FACE_CONTENT_SLEEP 睡眠
WATCH_FACE_CONTENT_HEART_RATE 心率
WATCH_FACE_CONTENT_STEP 活动步数
  1. 获取表盘布局

查询手环表盘布局信息,结果通过CRPDeviceWatchFaceLayoutCallback.onWatchFaceLayoutChange()回调。

bleConnection.queryWatchFaceLayout(CRPDeviceWatchFaceLayoutCallback);
  1. 获取支持表盘类型

部分手环新增一个表盘位,查询支持的表盘类型。结果通过CRPDeviceSupportWatchFaceCallback.onSupportWatchFace() 回调。

   bleConnection.querySupportWatchFace(CRPDeviceSupportWatchFaceCallback);
  1. 获取表盘市场

根据手环支持的表盘类型,获取手环可以更换的表盘列表。结果通过CRPDeviceWatchFaceStoreCallback.onWatchFaceStoreChange() 回调。

   bleConnection.queryWatchFaceStore(List<Integer>, CRPDeviceWatchFaceStoreCallback);
  1. 获取表盘ID的表盘信息

获取表盘ID的表盘信息,结果通过 CRPDeviceWatchFaceCallback.onWatchFaceChange() 回调。

   bleConnection.queryWatchFaceOfID(id, CRPDeviceWatchFaceCallback);
  1. 发送表盘文件

向手环发送新表盘位的表盘文件,期间手环会重启。传输进度通过CRPWatchFaceTransListener回调。

   bleConnection.sendWatchFace(CRPCustomizeWatchFaceInfo, CRPWatchFaceTransListener);

2.15 闹钟

  1. 设置闹钟

手环支持三个闹钟,可以根据闹钟序号分别设置闹钟信息。单次闹钟支持设置日期。

bleConnection.sendAlarmClock(CRPAlarmClockInfo)

CRPAlarmClockInfo:

id hour minute repeatMode enable
闹钟序号 闹钟时间小时数(24小时制) 闹钟时间分钟数 重复模式 开关

闹钟序号:

FIRST_CLOCK SECOND_CLOCK THIRD_CLOCK
第一个闹钟 第二个闹钟 第三个闹钟

重复模式:

SINGLE SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY EVERYDAY
单次,仅今日生效。 星期日重复 星期一重复 星期二重复 星期三重复 星期四重复 星期五重复 星期六重复 每天重复
  1. 获取闹钟

查询手环保存的所以闹钟信息,结果通过CRPDeviceAlarmClockCallback.onAlarmClock()回调。

bleConnection.queryAllAlarmClock(CRPDeviceAlarmClockCallback);

###2.16 手环版本

  1. 设置手环版本

手环分为中文版和国际版,中文版仅支持简体中文,国际版支持多国语言及繁体。

bleConnection.sendDeviceVersion(CRPDeviceVersionType);

CRPDeviceVersionType:

CHINESE_EDITION INTERNATIONAL_EDITION
中文版 国际版
  1. 获取手环版本

查询手环正在使用的版本,结果通过 CRPDeviceVersionCallback.onDeviceVersion() 回调。

bleConnection.queryDeviceVersion.(CRPDeviceVersionCallback);

###2.17 手环语言

  1. 设置手环语言

设置手环的语言。

bleConnection.sendDeviceLanguage(CRPDeviceLanguageType);

CRPDeviceLanguageType:

LANGUAGE_ENGLISH LANGUAGE_CHINESE LANGUAGE_JAPANESE LANGUAGE_KOREAN LANGUAGE_GERMAN LANGUAGE_FRENCH LANGUAGE_SPANISH LANGUAGE_ARABIC LANGUAGE_RUSSIAN LANGUAGE_TRADITIONAL LANGUAGE_UKRAINIAN LANGUAGE_ITALIAN LANGUAGE_PORTUGUESE
英语 中文简体 日语 韩语 德语 法语 西班牙语 阿拉伯语 俄语 中文繁体 乌克兰语 意大利语 葡萄牙语

注意:意大利语和葡萄牙语仅支持手环固件1.7.1及以上版本。

  1. 获取手环语言

查询手环正在使用的语言及手环支持的语言列表,结果通过 CRPDeviceLanguageCallback.onDeviceLanguage() 回调。

   bleConnection.queryDeviceLanguage(CRPDeviceLanguageCallback);

2.18 消息推送

  1. 设置其它消息推送状态

开启或者关闭其它消息推送。

bleConnection.sendOtherMessageState(state);
  1. 获取其它消息推送状态

查询其它消息推送状态,结果通过CRPDeviceOtherMessageCallback.onOtherMessage()回调。

bleConnection.queryOtherMessageState(CRPDeviceOtherMessageCallback);
  1. 推送消息

向手环推送各种类型的消息内容。

bleConnection.sendMessage(CRPMessageInfo);

CRPMessageInfo:

message type versionCode isHs isSmallScreen
消息内容 消息类型(CRPBleMessageType) 固件版本号(比如:MOY-AA2-1.7.6,就是176) MCU是否为汉天下,可向我们确认MCU类型。 手环屏幕是否小于1寸

CRPBleMessageType:

MESSAGE_PHONE 电话
MESSAGE_SMS 短信
MESSAGE_WECHAT 微信(中文版)
MESSAGE_QQ QQ
MESSAGE_FACEBOOK FACEBOOK
MESSAGE_TWITTER TWITTER
MESSAGE_WHATSAPP WHATSAPP
MESSAGE_WECHAT_IN 微信(国际版)
MESSAGE_INSTAGREM INSTAGREM
MESSAGE_SKYPE SKYPE
MESSAGE_KAKAOTALK KAKAOTALK
MESSAGE_LINE LINE
MESSAGE_OTHER 其它消息类型
  1. 挂断电话

手环在收到电话类型消息推送时,手环会震动固定时间。在手环接通或者挂断电话时,调用此接口停止手环震动。

bleConnection.sendCall0ffHook();

###2.19 久坐提醒

  1. 设置久坐提醒状态

开启或者关闭久坐提醒。

bleConnection.sendSedentaryReminder(state);
  1. 获取久坐提醒状态

查询久坐提醒状态,结果通过CRPDeviceSedentaryReminderCallback.onSedentaryReminder()回调。

bleConnection.querySedentaryReminder(CRPDeviceSedentaryReminderCallback);
  1. 设置久坐提醒时段

设置久坐提醒的有效时段。

   bleConnection.sendSedentaryReminderPeriod(CRPSedentaryReminderPeriodInfo);

CRPRemindersToMovePeriodInfo:

| period | steps | startHour | endHour | | ------------------------ | -------- | ------------------ | ------------------ | | 久坐提醒周期(单位:分钟) | 最大步数 | 开始时间(24小时制) | 结束时间(24小时制) |

  1. 获取久坐提醒时段

查询手环久坐提醒有效时段,结果通过CRPDeviceRemindersToMovePeriodCallback.onRemindersToMovePeriod()回调。

   bleConnection.querySedentaryReminderPeriod(CRPDeviceSedentaryReminderPeriodCallback);

###2.20 查找手环

查找手环,手环收到此指令以后会震动几秒。

bleConnection.findDevice();

2.21 心率

  1. 设置心率数据监听

所有心率相关的数据都会通过CRPHeartRateChangeListener回调。

bleConnection.setHeartRateChangeListener(CRPHeartRateChangeListener);
  1. 开始动态心率测量

开始动态心率测量,测量过程中通过CRPHeartRateChangeListener.onMeasuring()回调实时心率。

bleConnection.startMeasureDynamicRate();
  1. 停止动态心率测量

停止动态心率测量,测量结果通过CRPHeartRateChangeListener.onMeasureComplete()回调。

bleConnection.stopMeasureDynamicRtae();

CRPHeartRateInfo:

startMeasureTime measureData timeInterval heartRateType
开始时间(单位毫秒) 心率测量结果,单个数据表示测量间隔内的平均2心率。 心率测量数据的时间间隔(单位分钟) 心率数据类型

HeartRateType:

PART_HEART_RATE TODAY_HEART_RATE YESTERDAY_HEART_RATE
动态心率 今日心率 昨天心率
  1. 查询上次动态心率测量结果

在未连接状态下测量动态心率,手环可以保存最后一次的测量结果。结果通过CRPHeartRateChangeListener.onMeasureComplete()回调。

bleConnection.queryLastDynamicRate();
  1. 开启定时测量心率

手环支持24小时定时测量心率,从0点0分开始测量,可以设置测量时间间隔,时间间隔为5分钟的倍数。

bleConnection.openTimingMeasureHeartRate(interval);
  1. 关闭定时测量心率

关闭定时测量心率。

bleConnection.closeTimingMeasureHeartRate();
  1. 查询定时测量心率状态

查询定时测量心率开启状态,结果通过CRPDeviceTimingMeasureHeartRateCallback.onTimingMeasure()回调。

bleConnection.queryTimingMeasureHeartRateState(CRPDeviceTimingMeasureHeartRateCallback);
  1. 查询今日心率测量数据

今日心率测量分为两种,根据对应手环支持的测量方式获取。结果通过CRPHeartRateChangeListener.on24HourMeasureResult()回调。

bleConnection.queryTodayHeartRate(CRPHeartRateType);

CRPHeartRateType:

TIMING_MEASURE_HEART_RATE ALL_DAY_HEART_RATE
定时心率测量 24小时持续测量
  1. 查询历史心率测量数据

查询前一天的心率数据,结果通过CRPHeartRateChangeListener.on24HourMeasureResult()回调。

bleConnection.queryPastHeartRate()
  1. 获取运动数据

    部分手环支持多种运动模式的心率测量,测量结果包括心率和卡路里等其它运动相关数据,此接口用于获取卡路里等数据。手环可以保存最近三次的运动数据。支持24小时持续测量的手环,运动心率可以根据运动起至时间从24小时心率数据中获取;其它手环运动心率和动态心率获取方式一致。

bleConnection.queryMovementHeartRate();

CRPMovementHeartRateInfo:

type startTime endTime validTime steps distance calories
运动模式 开始时间(单位:毫秒) 结束时间(单位:毫秒) 运动有效时长(单位:秒) 步数(部分运动模式不支持) 活动距离(部分运动模式不支持) 卡路里

运动模式:

WALK_TYPE RUN_TYPE BIKING_TYPE ROPE_TYPE BADMINTON_TYPE BASKETBALL_TYPE FOOTBALL_TYPE SWIM_TYPE
散步 跑步 自行车 跳绳 羽毛球 篮球 足球 游泳
  1. 测量单次心率

    开始测量单次心率,结果通过CRPHeartRateChangeListener.onOnceMeasureComplete()回调。

bleConnection.startMeasureOnceHeartRate();
  1. 结束单次心率

    结束单次测量。测量时间过短,会导致无测量数据。

bleConnection.stopMeasureOnceHeartRate();

2.22 血压

  1. 设置血压数据监听

所有血压相关的数据都会通过CRPBloodPressureChangeListener回调。

bleConnection.setBloodPressureChangeListener(CRPBloodPressureChangeListener);
  1. 开始测量血压

开始测量血压。

bleConnection.startMeasureBloodPressure();
  1. 停止测量血压

停止测量血压,测量时间过短会导致无测量结果。测量结果通过CRPBloodPressureChangeListener.onBloodPressureChange()回调。

bleConnection.stopMeasureBloodPressure();

###2.23 血氧

  1. 设置血氧数据监听

所有血氧相关的数据都会通过CRPBloodOxygenChangeListener回调。

bleConnection.setBloodOxygenChangeListener(CRPBloodOxygenChangeListener);
  1. 开始测量血氧

开始测量血氧。

bleConnection.startMeasureBloodOxygen();
  1. 停止测量血氧

停止测量血氧,测量时间过短会导致无测量结果。结果通过CRPBloodOxygenChangeListener.onBloodOxygenChange()回调。

bleConnection.stopMeasureBloodOxygen();

###2.24 校准GSensor

手环出现翻腕亮屏不灵敏或者计步不准,可校准GSensor以修复,校准过程中,手环水平置于桌面。

bleConnection.sendGsensorCalibration();

###2.25 拍照

  1. 切换拍照界面

手环切换至拍照界面。

bleConnection.switchCameraView();
  1. 设置拍照监听

长按手环拍照界面,可以触发手环的拍照指令,通过CRPCameraOperationListener.onTakePhoto()回调。

bleConnection.setCameraOperationListener(CRPCameraOperationListener);

###2.26 手机相关操作

手环可以发出音乐控制和挂断电话等指令,通过CRPPhoneOperationListener.onOperationChange()回调。

bleConnection.setPhoneOperationListener(CRPPhoneOperationListener);

CRPPhoneOperationType:

MUSIC_PLAY_OR_PAUSE MUSIC_PREVIOUS MUSIC_NEXT REJECT_INCOMING VOLUME_UP VOLUME_DOWN MUSIC_PLAY MUSIC_PAUSE
播放/暂停 上一曲 下一曲 挂断电话。可在来电提醒界面长按触发。 调大音量 降低音量 下一曲 上一曲

###2.27 手环RSSI

  1. 设置RSSI监听

读取手环RSSI,结果通过CRPDeviceRssiListener.onDeviceRssi()回调。

bleConnection.setDeviceRssiListener(CRPDeviceRssiListener);
  1. 读取手环RSSI

读取手环实时的RSSI值。

bleConnection.readDeviceRssi();

###2.28 关机

手环关机。

bleConnection.shutDown();

2.29 勿扰时段

  1. 设置勿扰时段

手环支持勿扰时段,勿扰时段内不显示消息推送和久坐提醒。

bleConnection.sendDoNotDistrubTime(CRPPeriodTimeInfo);

CRPPeriodTimeInfo:

startHour startMinute endHour endMinute
开始时间小时数(24小时制) 开始时间分钟数 结束时间小时数(24小时制) 结束时间分钟数
  1. 获取勿扰时段

查询手环设置的勿扰时段。结果通过CRPDevicePeriodTimeCallback.onPeriodTime()回调。

bleConnection.queryDoNotDistrubTime(CRPDevicePeriodTimeCallback);

CRPDevicePeriodTimeCallback:

DO_NOT_DISTRUB_TYPE QUICK_VIEW_TYPE
勿扰时段 翻腕亮屏有效时段

###2.30 呼吸灯

  1. 设置呼吸灯状态

部分手环支持呼吸灯,开启或者关闭呼吸灯。

bleConnection.sendBreathingLight(enable);
  1. 查询呼吸灯状态

查询手环呼吸灯开启状态。结果通过CRPDeviceBreathingLightCallback.onBreathingLight()回调。

bleConnection.queryBreathingLight(CRPDeviceBreathingLightCallback);

2.31 心电

  1. 设置心电数据监听

所有心电相关的数据都会通过CRPBleECGChangeListener回调。

   bleConnection.setECGChangeListener(CRPBleECGChangeListener);
  1. 开始测量心电

开始测量心电。心电测量时间为30S,期间需要用户双手接触手环的左右电极。期间会通过CRPBleECGChangeListener.onECGChange() 回调心电测量数据。

   bleConnection.startECGMeasure();
  1. 停止测量心电

用于心电测量期间主动停止心电测量。

   bleConnection.stopECGMeasure();
  1. ****

检测是否为新的心电测量方式

新的测量方式,手环可以保存最后一次未发送的测量结果;老版本则不能。

   boolean newMeasurementVersion = bleConnection.isNewECGMeasurementVersion();
  1. 查询上次心电数据

查询手环保存的心电数据,结果通过 CRPBleECGChangeListener.onECGChange() 回调。

   bleConnection.queryLastMeasureECGData();
  1. 设置心电测量期间心率

用测量所得到的数据,通过心电算法库计算出瞬时心率,发送至手环。

   bleConnection.sendECGHeartRate(heartRate);

2.32 生理周期

  1. 设置生理周期提醒

部分手环支持女性生理周期提醒,设置或关闭生理周期提醒。

   bleConnection.sendPhysiologcalPeriod(CRPPhysiologcalPeriodInfo);

CRPPhysiologcalPeriodInfo:

| physiologcalPeriod | menstrualPeriod | startDate | menstrualReminder | ovulationReminder | ovulationDayReminder | ovulationEndReminder | reminderHour | reminderMinute | | ------------------ | ------------------ | -------------------- | ---------------------------- | ---------------------------- | ---------------------------- | ------------------------------------ | ------------------------ | -------------- | | 生理周期(单位:天) | 经期周期(单位:天) | 本次生理周期开始日期 | 经期开始提醒(经期前一天提醒) | 排卵期提醒(排卵期前一天提醒) | 排卵日提醒(排卵日前一天提醒) | 排卵期结束提醒(排卵日结束前一天提醒) | 提醒时间(小时,24小时制) | 提醒时间(分钟 |

  1. 查询生理周期提醒

查询手环已保存的生理周期提醒信息。结果通过CRPDevicePhysiologcalPeriodCallback回调。

   bleConnection.queryPhysiologcalPeriod(CRPDevicePhysiologcalPeriodCallback);

2.33 音乐播放器

  1. 设置音乐播放器播放状态

部分手环支持音乐播放器状态与连接手机保持一致。设置音乐播放器播放状态。手环操作音乐播放器状态回调可见 2.26。

   // state 可见 2.26 CRPPhoneOperationType.MUSIC_PLAY 或者 CRPPhoneOperationType.MUSIC_PAUSE
   bleConnection.setMusicPlayerState(byte state);
  1. 设置当前播放歌曲名字

向手环发送手机当前正在播放的歌曲的名字。

   bleConnection.sendSongTitle(String title);
  1. 设置歌词
   bleConnection.sendLyrics(lyrics);

2.34 语言助手

  1. 激活语言助手

通过手环激活手机语言助手。通过CRPVoiceAssistantListener.onAwake()回调。

   bleConnection.setVoiceAssistantListener(CRPVoiceAssistantListener listener);

2.35 音乐频道

  1. 切换音乐频道

通过手环切换APP的音乐频道。通过CRPMusicChannelListener()回调。

CRPMusicChannelListener.MusicChannelKey:

| PREVIOUS | NEXT | | ---------- | ---------- | | 上一个频道 | 下一个频道 |

   bleConnection.setMusicChannelListener(CRPMusicChannelListener listener);
  1. 设置频道名
   bleConnection.sendChannelName(name);

2.36 电话

  1. 一键求救

设置此监听后,手环触发一键求救时回调CRPBleCallPhoneListener.onCallPhone()。

   bleConnection.setCallPhoneListener(CRPBleCallPhoneListener);
  1. 设置通话状态

当手机通话状态发送改变时,及时推送至手环。

   bleConnection.sendCallState(CRPCallState);

###2.37 纪念日

  1. 设置纪念日
   bleConnection.sendMemorialDay(CRPMemorialDayInfo);

CRPMemorialDayInfo:

| year | month | day | week | hour | minute | | -------------- | ----- | ---- | ---------------------------------- | ---- | ------ | | 年份,比如2020 | 月份 | 日 | 周几,周日为0,周一为1,以此类推。 | 小时 | 分钟 |

  1. 查询纪念日

结果通过CRPMemorialDayCallback.onMemorialDay()回调。

   bleConnection.queryMemorialDay(CRPMemorialDayCallback);

2.38 喝水提醒

  1. 开启喝水提醒

设置喝水提醒的开始时间等信息。

   bleConnection.enableDrinkWaterReminder(CRPDrinkWaterPeriodInfo);

CRPDrinkWaterPeriodInfo:

| enable | startHour | startMinute | count | period | currentCups | | -------- | ------------ | ------------ | -------- | ------ | ------------ | | 是否开启 | 开始时间小时 | 开始时间分钟 | 提醒次数 | 间隔 | 当前已喝杯数 |

  1. 关闭喝水提醒

关闭喝水提醒。

   bleConnection.disableDrinkWaterReminder();
  1. 查询喝水提醒

查询手环当前喝水提醒信息。结果通过CRPDeviceDrinkWaterPeriodCallback.onDrinkWaterPeriod(CRPDrinkWaterPeriodInfo)回调。

   bleConnection.queryDrinkWaterReminderPeriod(CRPDeviceDrinkWaterPeriodCallback);

3.01 常亮

   void sendAlwaysOnDisplay(boolean enable);

   void queryAlwaysOnDisplay(CRPDeviceAlwaysOnDisplayCallback callback);

3.02 震动

   void sendVibrationState(boolean enable);

   void queryVibrationState(CRPDeviceVibrationStateCallback callback);

3.03 睡眠播放器

   void sendSleepPlayerState(boolean enable);

   void querySleepPlayerState(CRPDeviceSleepPlayerStateCallback callback);

3 更新日志

1.4.3

  1. 修改设置和查询久坐提醒时段函数名
  2. 修改消息推送函数参数
  3. 手环新增充电状态
  4. 增加喝水提醒

1.4.2

  1. 增加歌词推送
  2. 增加一键求救及通话状态同步
  3. 增加频道名推送
  4. 增加纪念日

1.4.0

  1. 增加音乐播放器播放状态同步。
  2. 增加激活语言助手。
  3. 增加切换音乐频道。

1.3.7

  1. 增加生理周期相关接口。
  2. 修改表盘序号的名字。
  3. 修复偶尔主动断开连接后,蓝牙连接未断开。
  4. 增加手环UI升级。
  5. 修复手环升级过程中重启后,无法再次升级。
  6. 手环连接成功后,重置消息队列。
  7. 提升对手环数据的传输速度。
  8. 增加表盘背景图片传输超时机制。
  9. 修复推送内容为空格时异常。

1.3.4

  1. 增加表盘市场接口。
  2. 增加步数统计接口。

###1.3.3

  1. 修复文件解压时,可能遭受路径遍历攻击。

###1.3.2

  1. 增加汉天下固件升级。

###1.3.1

  1. 取消消息队列大小限制。
  2. 修改关机指令。

###1.3.0

  1. 增加传输全新表盘。
  2. 增加登山、网球、橄榄球等运动模式。

###1.2.10

  1. 增加查询新版本手环固件支持语言列表。

###1.2.9

  1. 增加心电测量。
  2. 增加多国语言切换。

###1.2.8

  1. 修复不同时区下心率时间异常。

###1.2.7

  1. 增加手环意大利语和葡萄牙语。

###1.2.6

  1. 增加查找手机。

###1.2.5

  1. 优化固件升级流程。
  2. 增加英文固件升级日志。

###1.2.4

  1. 优化DFU升级速度。
  2. 增加设置步长。
  3. 增加手环是否处于DFU数据传输状态。

###1.2.3

  1. 单次闹钟可设置日期,其它类型闹钟不支持。
  2. 增加1.3寸彩屏自定义部分表盘。