Android 计步器 - 手机自带系统级的 健康运动App 授权

news/2024/12/2 20:02:49/

#1. Android 手机自带系统级的 运动健康App

于是我整理一份列表,如下:

  • 三星手机上的 “三星健康” ;  三星开发者平台:SDK: Hello Health Data | Samsung Developers
  • 华为手机上的“运动健康”;华为开发者平台:SDK 文档中心
  • 小米手机上的“小米运动健康”; 小米开放平台:接入网址  小米健康云开放平台    
  • 魅族手机上的: 计步器; ( 😭 还没找到...)
  • oppo手机上的: 运动计步;  ( 😭 还没找到...)
  • vivo手机不自带“记步数”功能的

⚠️ 数据同步 需要相应的手机官方授权,见上列表,我目前找到了 三星/ 华为/ 小米(因为计步器是华米出品)对接授权平台,链接中如何对接 一有尽有!
如华为示例:(这里就偷懒截图显示了)

⚠️ 注意:以上对接 需要去申请账号,创建应用,获取密钥之类的数据来授权!

对于第三方应用同步数据,比如: 微信 - 微信运动 开启后能获取到对于手机上的步数,这里我试了华为手机和oppo手机,发现“微信运动”都能显示出手机系统级的健康运动类应用的步数;但是我在vivo手机上刚开启微信运动后,步数显示 0,但是之后你的步数会实时记录显示。

阐明理解:(属于个人理解)

1. 微信是通过对接相应的授权平台,开启“微信运动”后,如果手机存在系统级的计步器,即同步手机自带计步器的步数显示。

2. 对于手机不存在系统级的计步器,如vivo手机,开启“微信运动”后,也无法获取到已经运动的步数,只会显示0;但是后面会显示步数,是可以通过实现Android自带的 步测器传感器 来记录步数。

(备注:具体记录步数的灵明度数值,步数统计算法... 微信的高大上,我也不知道具体的实现,就不去做过多猜想)

3. 另外,我们也值得注意,微信已经是手机常驻型级别的应用,所以它在手机的后台进程中会存在后台服务,这也为 记录步数 这样行为提供了监听的环境。

4. 虽然 Android自带的计步传感器(Sensor.TYPE_STEP_COUNTER)可以在应用关闭的时候继续工作,因为是Android系统自带的,但是它是重启以来用户迈出的步数,所以这个统计出来的数据并不是每天的步数,只是个总数,而且每次手机重启后,都会置0!所以需要实现 持久的监听步数,就需要存在常驻型的服务,得到手机系统的认可,不会杀掉你的进程,这对于现在对于Android 权限越来越重视的情况下,我研究不来这样的“技术”!(欢迎讨论...)


5. 如果我们的App必须要实现实时准确隔天计步的功能,其实还有一个方式可以,对接微信运动小程序来同步微信运动的数据,具体怎么对接,欢迎去百度,Google。

如果要实现打开App来准确计步的功能:其实也可以用Android自带传感器来实现;

以下简单介绍下两个传感器:

#2. Android自带传感器

1. 使用计步器传感器

以下代码展示如何获取默认计步器传感器的实例:

val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)

计步器传感器 提供自已激活传感器后最后一次重启以来用户迈出的步数。与步测器传感器相比,计步器的延迟时间更长(最多 10 秒),但精确度更高。

⚠️ 注意:如要保护运行应用的设备上的电池,您应使用 JobScheduler 类,从而以特定的时间间隔从计步器传感器检索当前值。尽管不同类型的应用需要不同的传感器读取间隔,但是除非您的应用需要来自传感器的实时数据,否则应尽可能延长此间隔。

⚠️ 注意:因为是重启以来用户迈出的步数,所以这个数据并不是每天的步数,只是个总数,而且每次手机重启后,都会置0! 

2. 使用步测器传感器

以下代码展示如何获取默认步测器传感器的实例:

val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR)

每次用户迈步时,步测器传感器都会触发事件。延迟时间预计将低于 2 秒。

⚠️  注意:使用 传感器 您必须声明 ACTIVITY_RECOGNITION 权限,以便您的应用在运行 Android 10 (API 级别 29) 或更高版本的设备上使用此传感器。

需要在manifest中添加:

<!--    您必须声明 ACTIVITY_RECOGNITION 权限,以便您的应用在运行 Android 10 (API 级别 29) 或更高版本的设备上使用此传感器。--><uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

在需要的地方(Activity)中添加申请权限:

    private const val COARSE_REQUEST = 1001/*** Permissions required to make the app work!*/private val CHECK_PERMISSIONS = arrayOf(Manifest.permission.ACTIVITY_RECOGNITION)// 请求权限private fun requestPermissions() {ActivityCompat.requestPermissions(this,CHECK_PERMISSIONS,COARSE_REQUEST)}// 处理权限后回调方法override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray) {when (requestCode) {COARSE_LOCATION_REQUEST -> {if (allPermissionsGranted()) {// 同意了授权}else{// 拒绝了授权}}}}/*** Check if all permission specified in the manifest have been granted*/private fun allPermissionsGranted(): Boolean {return CHECK_PERMISSIONS.all {ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED}}


http://www.ppmy.cn/news/695332.html

相关文章

Elasticsearch同义词自定义词库未生效原因

检查文件及目录是否存在所有节点配置完之后都要重启检查测试脚本是否正确的,我遇到的问题就是脚本不正确但是确能执行,就是拿不到正确结果 错误脚本: PUT test_idx_analyzer3 {"settings": {// 这里是分析器 不是分词器; 分词器可以包含设置过滤器和分词器"an…

论文教程之如何写教学类研究方法

五大常用教学研究方法 1.文献研究法 2.行动研究法 3. 问卷调查法 4. 课堂观察法 5. 访谈法模版 1.文献研究法 本研究在理论分析阶段和xxxx模型构建阶段应用文献分析法&#xff0c;通过 CNKI、IEE 等数据库搜集、查阅相关研究文献。首先以“计算思维”为主题进行文献检索&…

论文写作的常用方法

写论文时&#xff0c;经常要介绍自己所使用的研究方法。那么&#xff0c;常用的研究方法有哪些呢?以下是论文网站小编搜集整理的论文写作的常用研究方法&#xff0c;供大家阅读参考。 一、方法 系统科学方法 思维方法 数学方法 描述法 经验总结法 信息研究方法 探索法 模拟法(…

C++实现websocket单server单client全双工通信(基于boost!!!)

自身环境&#xff1a;ubuntu18.04gcc7.5.0boost1.7,3 环境配置 gcc或者g一般都有&#xff0c;这里主要介绍一下boost的配置方法   执行如下代码&#xff1a; wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.bz2 --no-check-cert…

如何通过Python下载GSMap数据集(解决.dat无法打开的问题)?

目录 01 前言 02 GSMap-MVK的存储方式和数据集介绍 03 代码实现 01 前言 这么晚了我还是希望将这篇博客写一下&#xff0c;记录生活。 我所下载的数据集为GSMap-MVK数据集&#xff0c;延迟大概2.5月左右我记得.边下载我就想着先处理着吧。 例如&#xff0c;其中一个文件如…

MACBOOK快捷键输入

快捷键输入 通用 Command Z 撤销Command X 剪切Command C 拷贝&#xff08;Copy&#xff09;Command V 粘贴Command A 全选&#xff08;All&#xff09;Command S 保存&#xff08;Save)Command F 查找&#xff08;Find&#xff09; 截图 Command Shift 3 截取全部…

Macbook常用快捷键

1. Mac常用快捷键符号 2. 快捷键操作 2.1 基本 操作 Command-Z 撤销Command-X 剪切  Command-C 拷贝&#xff08;Copy&#xff09;  Command-V 粘贴  Command-A 全选&#xff08;All&#xff09;Command-S 保存&#xff08;Save) Command-F 查找&#xff08;Find&…

Incase City 不同尺寸背包选择,根据不同 Macbook Pro 尺寸,尺寸汇总

Incase City 不同尺寸背包选择&#xff0c;根据不同 Macbook Pro 尺寸&#xff0c;尺寸汇总 最近才发现 Incase 这个品牌&#xff0c;背包确实好看。不像那些烂大街的方方正正的背包&#xff0c;太jb难看了。 打算买一个 Incase&#xff0c;去官网 Incase 背包 看了半天&#x…