
最近从 iPhone+Apple Watch 换到 华为+三星 active2,卸载掉了华为的运动健康,使用的是三星的运动健康,今天在三星运动健康里看见一个访问权限,里头有支付宝但是并没有被默认勾上,我刻意打开支付宝去搜了一下运动排行榜,里面居然有我的步数,但是比手表记录的步数多出了一千多步,据我所知 android 提供的 api 是获取开机到现在的步数,而且隔天不会给你自动清零,也是说支付宝一直在后台跑了一个 service 在维护呗?
1 mdaocao 2019-12-04 21:09:56 +08:00 支付宝读取手机的吧,,,手机步数和手表步数不同步,有个误差很正常。 倾向于相信手表的更为准确。 |
2 ZRS 2019-12-04 21:12:07 +08:00 可能它自己就有计步功能 |
3 fansangg OP @mdaocao 兄弟 审审题 “据我所知 android 提供的 api 是获取开机到现在的步数,而且隔天不会给你自动清零” |
4 mdaocao 2019-12-04 21:20:39 +08:00 @fansangg 开机到现在,,,隔天不会清零? 这可能么? 不合逻辑 那所有统计步数的手机 app,微信,支付宝,各种健身 app,都在后台跑一个 service 维护? 还是认为,直接读取手机提供的。 |
5 nosmile 2019-12-04 21:24:52 +08:00 安卓手机自带记步功能的,权限设置里面我记得可以限制读取 |
7 fansangg OP @mdaocao 不相信你自己测一下就知道了,你把微信运动或者支付宝的关上个半天,然后禁止他们后台运行,下午再打开,看看你的步数是不是从 0 开始 |
8 eq06 2019-12-04 21:39:48 +08:00 根据移动速度判断你在走路,毛估估的 |
10 fuchunliu 2019-12-04 21:58:44 +08:00 via Android 手机有记步芯片的,会读取手机中的记步信息,我现在用的是会隔夜清零的 |
11 fansangg OP @fuchunliu 你可能没有理解什么意思,“隔夜清零” 是软件层面做的,在 12 点的时候,数据库会新插一条以天为 unique 的数据,然后用回调的总步数减去截止到昨天的总步数,就是你今天的步数,我推测是这样的。 |
12 fansangg OP @fuchunliu IOS 是在系统层面做了用日期来查询步数,开发者只需要使用 healthkit 就可以读取每天的步数,而 google 似乎没有做这方面的处理。 |
13 7654 2019-12-04 22:20:51 +08:00 支付宝的步数和手机自带运动步数是一样的,如果支付宝步数比较低(关闭了后台运行,显示的是上一次查询的步数)打开手机内置运动 APP 查看最新步数,再打开支付宝运动,就会发现支付宝里步数更新了 |
14 fansangg OP @7654 “卸载掉了华为的运动健康,使用的是三星的运动健康,今天在三星运动健康里看见一个访问权限,里头有支付宝但是并没有被默认勾上” |
15 jsshimiao 2019-12-04 23:19:07 +08:00 via iPhone 做减法? |
16 ljpCN 2019-12-05 00:03:21 +08:00 via Android 打开支付宝看了一下,前天和昨天的步数都是 0,因为我支付宝后台被杀,不打开就不会有步数,但今天的步数正常显示了,所以感觉不是保存每天的 API 步数然后做减法(因为昨天的 API 步数它没记录)。期待有大牛解答。 |
17 billlee 2019-12-05 01:01:35 +08:00 三星的运动健康应该是控制不了华为手机内置计步传感器的访问权限的吧 |
18 guog 2019-12-05 01:05:41 +08:00 via Android 读取的是手机内置的,不是你软件记录的,而且软件记录的也是内置的 |
19 Pete 2019-12-05 08:36:34 +08:00 via Android 有几个支付宝帐号 保持哪个帐号登录 期间的步数就算是那个帐号的今日步数 因为我经常玩蚂蚁能量所以发现了这个…… |
20 Frytea 2020-03-25 21:00:43 +08:00 最近研究 android 计步器顺手回一下贴。 根据 Android 开发者文档,计步方面 Android 提供了步测器传感器 和 计步器传感器,每次用户迈步时,步测器传感器都会触发事件,延迟时间预计将低于 2 秒。而计步器传感器提供自已激活传感器后最后一次重启以来用户迈出的步数。与步测器传感器相比,计步器的延迟时间更长(最多 10 秒),但精确度更高。 这就可以解释 Android 软件如何获取用户步数了,当步数变化,步测传感器会触发事件,软件可以接收这个事件处理一些逻辑,通过计步器传感器可以获取到最后一次重启以来总步数,简单逻辑判断就可以获取步数。 详细的在这里: https://developer.android.com/guide/topics/sensors/sensors_motion?hl=zh-cn#sensors-motion-stepcounter |