V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fansangg
V2EX  ›  支付宝

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

  •  
  •   fansangg · 2019-12-04 21:00:08 +08:00 · 7112 次点击
    这是一个创建于 1810 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    20 条回复    2020-03-25 21:00:43 +08:00
    mdaocao
        1
    mdaocao  
       2019-12-04 21:09:56 +08:00
    支付宝读取手机的吧,,,手机步数和手表步数不同步,有个误差很正常。

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

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

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