我想知道支付宝是如何获取我的步数的?

2019-12-04 21:00:08 +08:00
 fansangg

最近从 iPhone+Apple Watch 换到 华为+三星 active2,卸载掉了华为的运动健康,使用的是三星的运动健康,今天在三星运动健康里看见一个访问权限,里头有支付宝但是并没有被默认勾上,我刻意打开支付宝去搜了一下运动排行榜,里面居然有我的步数,但是比手表记录的步数多出了一千多步,据我所知 android 提供的 api 是获取开机到现在的步数,而且隔天不会给你自动清零,也就是说支付宝一直在后台跑了一个 service 在维护呗?

7153 次点击
所在节点    支付宝
20 条回复
mdaocao
2019-12-04 21:09:56 +08:00
支付宝读取手机的吧,,,手机步数和手表步数不同步,有个误差很正常。

倾向于相信手表的更为准确。
ZRS
2019-12-04 21:12:07 +08:00
可能它自己就有计步功能
fansangg
2019-12-04 21:13:14 +08:00
@mdaocao 兄弟 审审题 “据我所知 android 提供的 api 是获取开机到现在的步数,而且隔天不会给你自动清零”
mdaocao
2019-12-04 21:20:39 +08:00
@fansangg 开机到现在,,,隔天不会清零? 这可能么? 不合逻辑

那所有统计步数的手机 app,微信,支付宝,各种健身 app,都在后台跑一个 service 维护?

还是认为,直接读取手机提供的。
nosmile
2019-12-04 21:24:52 +08:00
安卓手机自带记步功能的,权限设置里面我记得可以限制读取
imn1
2019-12-04 21:33:12 +08:00
@nosmile
? 我的没这个权限选择?
fansangg
2019-12-04 21:36:23 +08:00
@mdaocao 不相信你自己测一下就知道了,你把微信运动或者支付宝的关上个半天,然后禁止他们后台运行,下午再打开,看看你的步数是不是从 0 开始
eq06
2019-12-04 21:39:48 +08:00
根据移动速度判断你在走路,毛估估的
fansangg
2019-12-04 21:45:54 +08:00
@eq06 嗯,谢谢你的回答
fuchunliu
2019-12-04 21:58:44 +08:00
手机有记步芯片的,会读取手机中的记步信息,我现在用的是会隔夜清零的
fansangg
2019-12-04 22:11:02 +08:00
@fuchunliu 你可能没有理解什么意思,“隔夜清零” 是软件层面做的,在 12 点的时候,数据库会新插一条以天为 unique 的数据,然后用回调的总步数减去截止到昨天的总步数,就是你今天的步数,我推测是这样的。
fansangg
2019-12-04 22:17:02 +08:00
@fuchunliu IOS 是在系统层面做了用日期来查询步数,开发者只需要使用 healthkit 就可以读取每天的步数,而 google 似乎没有做这方面的处理。
7654
2019-12-04 22:20:51 +08:00
支付宝的步数和手机自带运动步数是一样的,如果支付宝步数比较低(关闭了后台运行,显示的是上一次查询的步数)打开手机内置运动 APP 查看最新步数,再打开支付宝运动,就会发现支付宝里步数更新了
fansangg
2019-12-04 22:33:47 +08:00
@7654 “卸载掉了华为的运动健康,使用的是三星的运动健康,今天在三星运动健康里看见一个访问权限,里头有支付宝但是并没有被默认勾上”
jsshimiao
2019-12-04 23:19:07 +08:00
做减法?
ljpCN
2019-12-05 00:03:21 +08:00
打开支付宝看了一下,前天和昨天的步数都是 0,因为我支付宝后台被杀,不打开就不会有步数,但今天的步数正常显示了,所以感觉不是保存每天的 API 步数然后做减法(因为昨天的 API 步数它没记录)。期待有大牛解答。
billlee
2019-12-05 01:01:35 +08:00
三星的运动健康应该是控制不了华为手机内置计步传感器的访问权限的吧
guog
2019-12-05 01:05:41 +08:00
读取的是手机内置的,不是你软件记录的,而且软件记录的也是内置的
Pete
2019-12-05 08:36:34 +08:00
有几个支付宝帐号 保持哪个帐号登录 期间的步数就算是那个帐号的今日步数
因为我经常玩蚂蚁能量所以发现了这个……
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/626018

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX