Skip to main content
版本:v1.0

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

modelDatasleep.getSleepStageModel()

说明
modelData.WAKE_STAGE清醒
modelData.REM_STAGEREM 阶段
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()
}
}
})