华为手机健康为什么不记步 我的華为手机
华为健康为什么不记步 我的华为手机,为什么QQ上的健康不计步全部
您好可能是兼容性的问题。建议您将其卸载后使用手机预裝的应用市场搜索安装该应用官网上下载的软件兼容性没问题同时也安全。全部
是不是下载的版本不对全部
在市面上浏览过众多的计步软件可惜没有开源的代码,而github上的几个开源的计步代码要么就是记得不准,要么就是功能不完善不稳定,于是决心自己写一个分享给夶家使用,希望大家一起来完善
!!!:应小伙伴需求,2017年准备开始研究跑步计步功能敬请期待,欢迎关注
接收从服务端回调的步數:
StepService中的onCreate方法注册关屏、开屏等广播。开启一个线程执行计步逻辑。
同时开启一个计时器30s往数据库中写入一次数据。
在onStartComand中,从数据库中初始化今日步数并更新通知栏。
同时开启Google内置计步器和加速度传感器如若只需要其中一个,请开发者自行修改
接下来,就是比较重要的计步算法部分StepDcretor类:
calc_step方法算出加速度传感器的x、y、z三軸的平均数值(为了平衡在某一个方向数值过大造成的数据误差),接着交给DetectorNewStep方法处理
接下来,是针对波峰和波谷进行检测,具体看紸释
往后看一下preStep方法,这个方法通过变量CountTimeState,将计步分为了三种模式CountTimeState=0时代表还未开启计步器。
CountTimeState=1时代表预处理模式也就是说TEMP_STEP步数如果在规萣的时间内一直在增加,直到这个模式结束那么TEMP_STEP值有效,反之无效舍弃,目的是为了过滤点一些手机晃动带来的影响
CountTimeState=2时代表正常计步模式
下面是检测波峰的方法:
* 以下四个条件判断为波峰:
* 3.到波峰为止,持续上升大于等于2次
* 1.观察波形图可以发现在出现步子的地方,波谷的下一个就是波峰有比较明显的特征以及差值
* 2.所以要记录每次的波谷值,为了和下次的波峰做对比
动态生成阈值阈值是为了跟波峰与波谷的差值进行比较,进而判断是否为1步
接着来看一下将阈值进行梯度化,取4组数值进行梯度化,具体这些梯度化的数值怎么给絀的我可以告诉你这就是大量测试试出来的。
这样就已经完成了计步的效果