Android 计步器

您所在的位置:网站首页 三星健康步数修改怎么设置手机 Android 计步器

Android 计步器

2023-07-03 12:19| 来源: 网络整理| 查看: 265

#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)中添加申请权限:

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, 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 } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3