上个月买了小米4手环,初心有二:体验新鲜电子产品;用来计算步数 。在使用过程中我一直对其计算方式比较好奇,索性今天满足下自己的好奇心。
一、小米手环怎么解决数据叠加问题呢?
简单列举两个场景:
早上我只带了手环去了篮球场,显示步数5000;下午我只带了手机外出,显示步数3000;
早上我只带了手环去了篮球场,显示步数5000;中午我同时带了手机和手环走了1小时,手机显示步数3000。
那么,今天我的微信运动步数是多少呢?
这个问题,我小侄子都能算出,正确应该是5000+3000=8000步。
但我想表达的是,微信运动在读取数据时,是如何做到精确统计呢?
我的推理是这样的:
小米手环和iPhone的健康数据作为一个数据源,可以简单理解为数据ID。那么在汇总统计时,会对每一条上传的数据打上数据来源标签。对于在同一时间段内的重复数据进行合并处理。
即将一天24小时按照时间长度依次叠加数据,这样就可以保证数据的准确性。
那么,事实上是不是这样呢?
二、揭秘时刻
下面这张图是我选取上周日的数据。
可以看到,每条数据由3部分构成:数据来源+步数+时间点。每个上传的数据都按照时间进行展示,最终一天的数据就是这些数据的累加。
完美!
三、小米手环的计步原理是什么呢?
是的,我就是来自本山大叔刨根问底栏目组的那个谁谁谁。根据小米官方文档看出,小米手环能够精准计步由硬件和软件算法两方面组成。
硬件
是指小米手环里内置的那枚强悍的三轴加速度传感器,军用级。
那么,啥是三轴加速度传感器呢?
这里的三轴是指空间坐标轴X/Y/Z。物理知识告诉我们,运动就会产生加速度,通过传感器获取这些数据,接下来的事情交给软件算法。
软件算法
程序猿根据三轴加速度实时捕捉到的三维数据,经过滤波、峰谷检测等过程,使用各种算法和逻辑计算,最终将这些数据转变成手环里的可读数字,包括步数、距离、消耗的卡路里等数值。
好了,大概就是这些了,算是给自己在这块的一个基本交代。下周有时间好好学习下硬件传感器方面的知识。