diff --git a/apps/miniprogram/native/pkg-veepoo/index.js b/apps/miniprogram/native/pkg-veepoo/index.js
index a66516e..141c97e 100644
--- a/apps/miniprogram/native/pkg-veepoo/index.js
+++ b/apps/miniprogram/native/pkg-veepoo/index.js
@@ -15,11 +15,14 @@ const { veepooBle, veepooFeature, veepooLogger } = require('./libs/veepoo-sdk');
var SDK_EVENT_AUTH = 1;
var SDK_EVENT_BATTERY = 2;
+var SDK_EVENT_SLEEP = 4;
+var SDK_EVENT_DAILY = 5;
var SDK_EVENT_TEMPERATURE = 6;
var SDK_EVENT_BLOOD_PRESSURE = 18;
var SDK_EVENT_BLOOD_OXYGEN = 31;
var SDK_EVENT_HEART_RATE = 51;
var SDK_EVENT_PRESSURE = 58;
+var SDK_EVENT_AUTO_TEST = 54;
var MEASURE_TYPES = [
{ type: 'heart_rate', label: '心率', unit: 'bpm', icon: '♥', color: '#EF4444', sdkType: SDK_EVENT_HEART_RATE },
@@ -271,6 +274,10 @@ Page({
console.log('[veepoo-native] 认证成功,设备就绪');
this.setData({ phase: 'ready' });
veepooFeature.veepooReadElectricQuantityManager();
+
+ // 认证成功后自动读取 3 天睡眠数据 + 开启自动测量
+ this._readSleepData();
+ this._enableAutoMeasurement();
},
// ── SDK 事件路由 ──
@@ -301,6 +308,25 @@ Page({
return;
}
+ // 睡眠数据回调(type=4)
+ if (type === SDK_EVENT_SLEEP) {
+ this._handleSleepEvent(data);
+ return;
+ }
+
+ // 日常数据回调(type=5)
+ if (type === SDK_EVENT_DAILY) {
+ // 日常数据用于历史同步,原生页面暂不处理
+ return;
+ }
+
+ // 自动测量配置回调(type=54)
+ if (type === SDK_EVENT_AUTO_TEST) {
+ // eslint-disable-next-line no-undef
+ console.log('[veepoo-native] 自动测量配置回调');
+ return;
+ }
+
for (var i = 0; i < MEASURE_TYPES.length; i++) {
if (MEASURE_TYPES[i].sdkType === type) {
this._handleMeasureEvent(MEASURE_TYPES[i].type, data);
@@ -516,4 +542,96 @@ Page({
break;
}
},
+
+ // ── 睡眠数据读取 ──
+
+ _sleepResults: null,
+ _sleepDay: 0,
+
+ _readSleepData: function () {
+ this._sleepResults = [];
+ this._sleepDay = 0;
+ // eslint-disable-next-line no-undef
+ console.log('[veepoo-native] 开始读取睡眠数据(3天)');
+
+ // 依次读取 3 天睡眠
+ var self = this;
+ veepooFeature.veepooSendReadPreciseSleepManager({ day: 0 });
+
+ // 延迟读取后续天(避免并发冲突)
+ // eslint-disable-next-line no-undef
+ setTimeout(function () { veepooFeature.veepooSendReadPreciseSleepManager({ day: 1 }); }, 3000);
+ // eslint-disable-next-line no-undef
+ setTimeout(function () { veepooFeature.veepooSendReadPreciseSleepManager({ day: 2 }); }, 6000);
+ },
+
+ _handleSleepEvent: function (data) {
+ var progress = data.Progress || 0;
+ if (progress < 100) return;
+
+ var content = data.content || {};
+ var readDay = data.readDay || 0;
+ var totalTime = Number(content.sleepTotalTime || 0);
+
+ if (totalTime <= 0) return;
+
+ var sleepResult = {
+ day: readDay,
+ deepSleepMinutes: Number(content.deepSleepTime || 0),
+ lightSleepMinutes: Number(content.lightSleepTime || 0),
+ totalSleepMinutes: totalTime,
+ qualityScore: Number(content.sleepQuality || 0),
+ fallAsleepTime: String(content.fallAsleepTime || ''),
+ exitSleepTime: String(content.exitSleepTime || ''),
+ };
+
+ if (!this._sleepResults) this._sleepResults = [];
+ this._sleepResults.push(sleepResult);
+
+ // eslint-disable-next-line no-undef
+ console.log('[veepoo-native] 睡眠数据 day=' + readDay + ' 总时长=' + totalTime + '分钟 质量=' + sleepResult.qualityScore + '星');
+
+ // 保存到 Storage 供 Taro 页面读取
+ try {
+ // eslint-disable-next-line no-undef
+ wx.setStorageSync('hms:veepoo_sleep_results', JSON.stringify(this._sleepResults));
+ } catch (_) { /* ignore */ }
+ },
+
+ // ── 自动测量 ──
+
+ _enableAutoMeasurement: function () {
+ // eslint-disable-next-line no-undef
+ console.log('[veepoo-native] 开启自动测量功能');
+
+ // 开启心率自动监测
+ try {
+ veepooFeature.veepooSendSwitchSettingDataManager({
+ VPSettingAutomaticHRTest: 'open',
+ });
+ } catch (e) {
+ // eslint-disable-next-line no-undef
+ console.warn('[veepoo-native] 开启心率自动监测失败:', e);
+ }
+
+ // 开启血压自动监测
+ try {
+ veepooFeature.veepooSendSwitchSettingDataManager({
+ VPSettingAutomaticBPTest: 'open',
+ });
+ } catch (e) {
+ // eslint-disable-next-line no-undef
+ console.warn('[veepoo-native] 开启血压自动监测失败:', e);
+ }
+
+ // 开启体温自动监测
+ try {
+ veepooFeature.veepooSendSwitchSettingDataManager({
+ VPSettingAutomaticTemperatureTest: 'open',
+ });
+ } catch (e) {
+ // eslint-disable-next-line no-undef
+ console.warn('[veepoo-native] 开启体温自动监测失败:', e);
+ }
+ },
});
diff --git a/apps/miniprogram/native/pkg-veepoo/index.wxml b/apps/miniprogram/native/pkg-veepoo/index.wxml
index 4568ac8..73f78b3 100644
--- a/apps/miniprogram/native/pkg-veepoo/index.wxml
+++ b/apps/miniprogram/native/pkg-veepoo/index.wxml
@@ -1,5 +1,6 @@
@@ -26,7 +27,7 @@
- 查看测量结果并返回
+ 查看测量结果并返回
@@ -51,82 +52,92 @@
-