首页 > 解决方案 > STEP_COUNTER 和 STEP_DETECTOR 适用于 SDK 28,但不适用于 SDK 29?

问题描述

我已经提供了一项服务,该服务会定期广播来自 STEP_COUNTER 和 STEP_DETECTOR 传感器的计数步数。在一个应用程序中,我让它完美运行,但在将完全相同的代码复制到另一个项目后,它停止了工作。经过几个小时的调试,我想出了如何解决它。当我将 build.gradle 中的 compileSdkVersion 更改为 28 时,它可以正常工作,但是将其更改为 29 会使其停止工作。这是为什么?

标签: androidsdksensorssensormanager

解决方案


根据Android 10 中的隐私更改(适用于 atargetSdkVersion为 29 或更高的应用程序):

Android 10android.permission.ACTIVITY_RECOGNITION为需要检测用户步数或对用户的身体活动(例如步行、骑自行车或在车辆中移动)进行分类的应用引入了运行时权限。这旨在让用户了解设备传感器数据在“设置”中的使用方式。

设备上唯一需要您声明此权限的内置传感器是计步器计步器传感器。

因此,您必须:

  1. 将 添加android.permission.ACTIVITY_RECOGNITION到应用的清单中。

  2. 在运行时请求权限并让用户授予该权限。


推荐阅读