为什么统计睡眠这件事需要自动化

通过智能设备进行睡眠统计 / 睡眠分析是近年一直是个不冷不热的概念,原因我想是由于技术没有完全成熟,毕竟睡眠情况和质量是无法只靠身体运动、心率、发出的声音这些去判断的,它还需要检测呼吸、眼动,以及大脑活动——这些当然都是目前的可携带智能设备无法做到的——所以当一些工具不小心把自己的功能吹得过于强大,就会导致人们的一种情绪反弹:他们鼓吹这些工具可以精确地告诉你晚上睡得如何,而听到的人则多是不屑的回复「我还需要手机跟我说我睡得好不好?」对话大概至此就不太容易进行下去了。

但我对这件事,一直是一个折衷的态度。我并不狂热,不需要手机应用跟我说我睡得好不好。但我希望统计我睡眠的时长,知道自己平均下来每天实际睡了多久。我也可以从这些统计结果观察我的睡眠模式,考虑是否调整睡眠和起床的时间(虽然未必真去调)。这些正常情况下可有可无的数据,也可能会在你的生活发生改变的时候有一些作用。比如你换了工作,或者想要养成健身之类的新习惯的时候。

统计睡眠这个需求确实不硬,所以这个并不硬的需求如果实现得还麻烦,就让人毫无坚持的动力。

不幸的是,通过 iOS 设备来处理这件事一直以来都很麻烦。原因很简单,因为在不论什么应用,都需要手动启动,手动关闭。好一点的,对设备的位置还有一定的要求。比如 Sleep Cycle,它对位置的要求很严格,所以才能在两个人睡在一起,并同时使用 Sleep Cycle 统计睡眠的时候,不去捕捉对方发出的声音1

在使用步骤优化的方面,应用们一直在做的努力也只是尽量让启动和关闭的流程变得更迅速。但本质上,步骤没有减少,开关必须人来做。

实践中,大多数情况,我会忘记开;后来用了 Apple Watch 和 Sleep++,我还会忘记关。

Sleep++ 动不动就给我统计个 40 几个小时的睡眠,尴尬得不行。

观察,本质上,需要以他人的视角来进行,需要客观。住院时期医生不会让病人汇报或上传自己身体指标的读数,都是定期有专人去记录这些数据,这才能起到「观察」的作用。

所以要个人对自己进行自我观测,我一直期待植入式的设备2。如果智能设备总是需要人去调节开关,那它一点也不智能,它还是需要个人有很强的自制力,养成某种行为习惯,对自己的数据足够客观。而即便这些都能做到也只不过是把内容从纸笔放到了屏幕里,操作的核心步骤一样都没少。我理想中的负责追踪人体变化的设备,得明白在哪个节点人们的身体发生了什么质变,进入了什么状态,然后自动工作。

AutoSleep 是一个在 iOS 系统的夹缝里做这样尝试的应用。它主打的就是「无需打开任何应用,不需要任何操作(Automatically track your sleep from your Apple Watch. No buttons press. No watch app to load. Just sleep!)」。这个概念让我非常怀疑,但对我的吸引又足够大,所以我还是选择尝试一下。

碰巧,我这两三天因为一些事情,睡眠时间非常分散且短暂,结果追踪的效果看起来并没有让人失望。

So, how? 它是怎么做到不需要打开应用3就能追踪睡眠的?

自动检测的原理

我初步的猜测是它在使用 Apple Watch 统计的数据。因为只有 Apple Watch 能无时不刻地记录佩戴者的心率、运动情况和位置变化,如果你允许 AutoSleep 去读取这些信息,那么当你打开应用的以后,它才会读取手表里记录下的信息,然后将其图示化展示给你,这就可以做到不开应用记录。也就是说,要记录的东西一直都在记录,只是处理是在你打开应用看数据的那一刻才处理的。

开发者回复的邮件也证实了我的想法,但他表示事情当然也不是这么简单,还有一些复杂的算法在其中。

具体使用

AutoSleep 的 App 界面拉到最下,会看到「Tips & Helps」 这个按钮。打开会看到官方的使用文档,里面谈及了戴表睡觉、不戴表睡觉的注意事项,每种不同颜色环的不同含义等。下面的内容是,我将这个部分的内容按照我理解的顺序和方式进行的重新说明。

读懂环就明白了一切

Autosleep 的主界面里最显眼的是一个表,轻触这个表可以切换 12 小时制和 24 小时制,但我更建议看 24 小时制。这个表默认由两个简单的环组成:

  • 外围的深蓝 / 浅蓝色环:这个环用于指示白天还是黑夜。浅蓝为白天,深蓝为黑夜。信息基于你的地理位置,AutoSleep 承诺不会传输这个地理位置。
  • 深紫浅紫的环:这个环是主环,说明了你的睡眠情况。当它是灰色的时候,说明 Autosleep 判断你没有在睡眠。如果是紫色,颜色越浅,表示越深度的睡眠。

但是这两个环不是全部,在主界面的钟表下找到 Tweak,滑到最后,在 Diagnostics(诊断)模式下,你可以看到更多的环,由外到内地介绍是:

  • 主环内的黑白环:这个环代表手机是否被打开或发生位移或两者皆有。如果手机出现这些情况,该部分会显示为白色,并且会让 AutoSleep 判断你在这个时间段没有在睡觉。
  • 深绿浅绿的环:这个环代表你睡觉时手表的运动/震动情况。当它是墨绿色的时候,代表程度较轻,不足以判断为你已经醒来。而如果是浅绿色,说明手表运动或震动幅度够大,会导致 AutoSleep 判断你已经醒来。
  • 红色的环:这个环表示的心率,AutoSleep 按照读取你一整天的平均心率,高于平均心率的是黑色,低于平均心率的会由深到浅地显示为红色。红色颜色越浅表示心脏跳动越舒缓,心率越低。所以你一般可以观察到,你睡觉的时候心率都比较低。
  • 黄色的环:这个环代表着 Apple Watch 的充电(& 没电)时间,总之,当你的 Apple Watch 不在统计你的心率和震动情况的时候,就会在 AutoSleep 中显示为黄色。

如前面说到的,这个位置是诊断模式,意思是当你认为 AutoSleep 测得不准的时候,你可以从这些环来看看是哪些地方出了问题。然后进行微调。

根据诊断模式结果来调整 AutoSleep

主界面钟表下的这个 Tweak 按钮,可以当做是这个应用的「设置」。然后我们来结合前面提到的环,来看看如何设置这个应用来符合你的使用习惯。

首先可以看黑白色的环,它是通过手机的被使用和移动情况,判断你是否是醒着的。这个环的设定我觉得是比较合理的,因为当你手机移动了或者被使用了基本上可以等于你那个时候没在睡嘛。除非……有人趁你睡觉的时候……

不过,如果你是戴着手表睡觉,而且睡眠的环境比较复杂,手机有从床上滑下来或者不小心被你触碰或移动的可能。你可以在 iPhone 这一栏下,把 Yes 改为 No。这样 AutoSleep 就不会根据手机的情况来判断你是否是醒着的。

把这里设为 No

再看深绿浅绿的环,是通过你手表的移动 / 震动来判断你是否醒着的。这个环的设定有点儿道理,但有的人睡觉的时候爱动,有的人睡觉的时候一动不动,有一个幅度问题在里面。所以你可以在 Tweak 下的 Sensitivity(敏感度) 这一栏,来调节数据判断的敏感度。如果你睡觉的时候爱动,你就往右滑滑块儿。在滑动滑块的时候你看着钟表,那些因为睡觉时钟表运动而被判定为你没在睡的部分会被填补上。

在这里调整敏感度

红色的代表心率的环在诊断模式中没有对应的部分,因为它不是 AutoSleep 判断你是否在睡眠的标准。

以上就是和圆环有关的诊断模式的使用,下面我们来说说戴和不戴手表睡觉时,应该怎么用 AutoSleep。

如果你戴着手表睡觉

如果戴着手表睡觉,那主要判断你睡眠的依据将是手表的运动情况和睡觉时手机是否被移动了的情况。也就是绿色的环和黑白环。

但是前面说了,通过手机是否发生移动或被唤起并不能彻底等同于我们是否在睡觉,所以这种情况下可以把 Tweak 下 iPhone 那一项设为 No,让 AutoSleep 不借此判断你是否在睡眠。

同时,如果你发现一些你睡觉的时间段里出现了因为手表运动幅度相对较大而被判定为没在睡觉的部分,你可以在 Tweak 下的 Sensiticity 里调节敏感度,来让 AutoSleep 适应你的睡眠习惯。

Light Off

Light Off 是 AutoSleep 在通知中心的插件之一,这是个辅助性质的功能,用于手动告诉 AutoSleep 你现在要睡觉了。这个功能本身不太重要,且只对戴着手表的人有用。 

Light Off 通知中心插件

但是它有一个实用的地方是,它给 AutoSleep 的统计提供了一个时间戳(以黄色垂直细条显示在钟表界面里)。AutoSleep 本身只能知道你何时睡着了何时醒着,但它无法知道你何时上床了。所以,一个比较重要的数据 AutoSleep 是无能为力的:从你上床决定睡觉,到睡着,过了多久。

Light Off 的亮点就在于此。另外,它只需要你告诉它关灯(上床)时间,因为当你起床唤醒手机戴上手表,它就会自动帮你把灯打开(明白你已经起床)。如果你起初打开了 Light Off,但是由于一些原因你没睡觉,你也可以在 Tweak 里修改 Light Off 的时间。

如果你不戴着手表睡觉

如果不带着手表睡觉,可预见的会出现的问题是,只要你手机黑屏了而且没发生位移,AutoSleep 就当你在睡觉。这就蠢了,所以 AutoSleep 在 Tweak 里还给出了一个选项 Times 让你设定需要通过 AutoSleep 监控的时间段,在这个时间段外,手机没有被使用也不会让 AutoSleep 认为你在睡觉。

选择起始时间和结束时间

AutoSleep 要求你将睡眠的起始时间设为你认为你会睡着的时间的,至少两个小时之前。原因是 AutoSleep 要提前检测一些环境数据以便判断你睡着。(我个人觉得官方在这里说得没那么清楚,但只有照做吧)

设置睡眠起始时间设定好后,AutoSleep 会自动将结束时间设定为 12 个小时以后,你可以在确定好起始时间后再自行设定结束时间,不必是 12 小时后。

但是我觉得这是个非常妥协的方式,这要求你对自己睡眠的时间足够了解,你不能比设定的睡眠时间睡得早,也不能起得晚。而且不能有午休……所以在这种情况下,倒不如用其它的应用来统计睡眠了。

AutoSleep 的统计功能

和大多数睡眠统计类的应用一样,AutoSleep 也会提供给你各式各样的统计信息来告诉你昨夜睡得如何。但它并不是分析过后给你一个单纯的「好」或者「坏」,而是把前面圆环中的心率、手表震动幅度等实际数据重新用更直观的方式来显示。换句话说,AutoSleep 不单纯只告诉你你睡得好不好,它只告诉你那些实际发生了的事。

Recharge

Recharge 的界面是两个电池,按照你睡眠的时长,来告诉你是否「充满电了」。这个充满电的标准可以在之前提过的 Tweak 中的 Hours 里进行设置,有 6、7、8、9 小时四个选择:

在这里调节目标睡眠时长

同时 Recharge 也可以显示在通知中心里:

Recharge 通知中心插件

Sleep Quality

在 Sleep Quality 中,AutoSleep 以红色圆点表示你睡眠时的心率,颜色越浅,高度越低,说明心率越低;绿色的长条表示你睡眠时手表的运动情况,颜色越深高度越低说明运动幅度越小。所以,如果你不戴手表睡觉,这里应该是什么都没有的。

Sleep Quality 图表

The Table

这个部分 AutoSleep 把最后的统计结果以表格的方式展示给你,分为 Restlessness、Awake、Heartrate、Sleep Rating 四项。

The Table

Restlessness 表示的是睡眠质量,或者说熟睡占比。上图里,Quality rating of time asleep 的数值是 88%,这代表在你睡眠过程中 88% 的时间里没有运动幅度较低、没有辗转反侧。而 Restful 的数值则代表你 53% 的时间里睡得非常稳没有任何动静。

Awake 是对你睡觉期间的醒着的时间的报告。如果你打开了 Lights Off 这个功能,Fell asleep in 将告诉你从关灯到睡着你用了多久,上图里这一项的时间是 13m,也就是说使用了 Light Off 13 分钟后 AutoSleep 判定使用者睡着了。而 Time awake in bed 这个则是告诉你在你醒来后,赖床了多久。

Heartrate 即是心率。在这里显示你睡眠时的平均心率和低于整日平均心率多少。

最后一项是一个综合指数,AutoSleep 最后根据你睡眠的时间、质量以及心率,通过它的算法,对你的睡眠给出一个评分。如果你睡眠的时间足够长,或者睡眠质量很高,这个数值将有可能超过 100%,低也可以低于 0。

结语

AutoSleep 的调试阶段是比较恼人的。有几个我认识的对 iOS 设备和应用都很熟悉的人,都表示搞不懂这个应用。所以它在设计上明显还可以做得更好,让初期调试的门槛更低。好在 AutoSleep 的作者似乎比较关心个人健康数据统计这个领域,此前也开发出了 HeartWatch 这样的应用,这在一定程度上减少了我对这款应用是否会持续更新和优化下去的担忧。

我一直觉得 AutoSleep 的切入点很好,为了满足睡眠统计这个需求,在 iOS 现有的基础上,去追求分析的精准度意义远不如减少操作和对这件事的关心更大。一个人的睡眠时间并不仅限于床上,我就常会在电车里或者图书馆里眯一下补觉。这种补觉的情境,一般的应用是很难统计的,但又是应该被统计的。所以才有了各种手环的市场。

我曾经一直纠结于是否专门买个手环去做睡眠统计这件事。但因为需求不硬、价格、功能单一或与 Apple Watch 重复等原因,都让我一直选择 Apple Watch 上的妥协解。

终于,让我等到了 AutoSleep


  1. 详情见 Sleep Cycle 官网的 说明页面. ↩︎
  2. 详细观点可以听我主持的播客 Checked 的第 6 期:如果可以我愿意记录我的一切↩︎
  3. 实际上安装完毕后还是需要打开一次应用进行初始设置的。 ↩︎