SLEEP
创建传感器
const sleep = hmSensor.createSensor(hmSensor.id.SLEEP)
sleep 实例
sleep.updateInfo()
系统默认每 30
分钟更新一次睡眠数据,updateInfo
方法用来触发更新睡眠数据
类型
() => void
sleep.getSleepStageData()
获取阶段睡眠信息,为一个不定长数组
类型
() => Array<SleepInfo>
SleepInfo
属性 | 说明 | 类型 |
---|---|---|
model | 睡眠模式 | number |
start | 开始时间,基于当天 0 点的分钟数 | number |
stop | 结束事件,基于当天 0 点的分钟数 | number |
model:number
modelData
见 sleep.getSleepStageModel()
值 | 说明 |
---|---|
modelData.WAKE_STAGE | 清醒 |
modelData.REM_STAGE | REM 阶段 |
modelData.LIGHT_STAGE | 浅睡眠阶段 |
modelData.DEEP_STAGE | 深睡眠阶段 |
示例用法
const sleepStageArray = sleep.getSleepStageData()
for (int i = 0; i < sleepStageArray.length; i++) {
const data = sleepStageArray[i];
console.log(data.model)
console.log(data.start)
console.log(data.stop)
}
sleep.getSleepStageModel()
获取睡眠模式
类型
() => modelData
示例用法
const modelData = sleep.getSleepStageModel()
console.log(modelData.WAKE_STAGE)
console.log(modelData.REM_STAGE)
console.log(modelData.LIGHT_STAGE)
console.log(modelData.DEEP_STAGE)
sleep.getSleepHrData()
获取睡眠心率,为不定长数组,第 i
项代表睡眠开始的第 i
分钟心率测量值
类型
() => Array<number>
sleep.getTotalTime()
获取睡眠总时间
类型
() => number
代码示例
const totalTime = sleep.getTotalTime()
sleep.getBasicInfo()
类型
() => BasicInfo
BasicInfo
属性 | 说明 | 类型 |
---|---|---|
score | 睡眠得分 | number |
deepMin | 深睡时间,单位分 | number |
startTime | 睡眠起始时间, 基于 0 点的分钟数 | number |
endTime | 睡眠结束时间, 基于 0 点的分钟数 | number |
完整示例
class TextByLine {
constructor(params) {
const { text = '', y = undefined, line = 0 } = params
this.text = text
this.y = y
this.line = line
this.y_computed = Number.isInteger(this.y) ? this.y : px(this.line * 60 + 120)
}
render() {
return hmUI.createWidget(hmUI.widget.TEXT, {
x: px(0),
y: this.y_computed,
w: px(480),
h: px(46),
color: 0xffffff,
text_size: px(20),
align_h: hmUI.align.CENTER_H,
align_v: hmUI.align.CENTER_V,
text_style: hmUI.text_style.NONE,
text: this.text
})
}
}
Page({
build() {
const sleep = hmSensor.createSensor(hmSensor.id.SLEEP)
const { score, deepMin, startTime, endTime } = sleep.getBasicInfo()
new TextByLine({
text: `score:${score};deepMin:${deepMin};startTime:${startTime};endTime:${endTime}`,
line: 0
}).render()
const totalTime = sleep.getTotalTime()
new TextByLine({
text: `totalTime:${totalTime}`,
line: 1
}).render()
const modelData = sleep.getSleepStageModel()
const sleepStageArray = sleep.getSleepStageData();
for (let i = 0; i < sleepStageArray.length; i++) {
const element = sleepStageArray[i];
const { model, start, stop } = element
new TextByLine({
text: `model:${model};start:${start};stop:${stop}`,
line: i + 2
}).render()
}
const hrArr = sleep.getSleepHrData()
const hrArrComponentList = hrArr.slice(0, 10)
for (let i = 0; i < hrArrComponentList.length; i++) {
new TextByLine({
text: `hrValue:${hrArrComponentList[i]}`,
line: i + sleepStageArray.length + 3
}).render()
}
}
})