STEP_COUNTER 和 STEP_DETECTOR 适用于 SDK 28,但不适用于 SDK 29?
STEP_COUNTER and STEP_DETECTOR works with SDK 28, but not SDK 29?
我做了一项服务,可以定期广播来自 STEP_COUNTER 和 STEP_DETECTOR 传感器的计步数。在一个应用程序中,我让它完美地工作,但在将完全相同的代码复制到另一个项目后它停止工作了。经过几个小时的调试,我想出了解决办法。当我将 build.gradle 中的 compileSdkVersion 更改为 28 时,它工作正常,但将其更改为 29 会使它停止工作。这是为什么?
根据 Privacy changes in Android 10(适用于 targetSdkVersion
为 29 或更高的应用):
Android 10 introduces the android.permission.ACTIVITY_RECOGNITION
runtime permission for apps that need to detect the user's step count or classify the user's physical activity, such as walking, biking, or moving in a vehicle. This is designed to give users visibility of how device sensor data is used in Settings.
The only built-in sensors on the device that require you to declare this permission are the step counter and step detector sensors.
因此你必须:
将 android.permission.ACTIVITY_RECOGNITION
添加到您应用的清单中。
在运行时请求权限并让用户授予该权限。
我做了一项服务,可以定期广播来自 STEP_COUNTER 和 STEP_DETECTOR 传感器的计步数。在一个应用程序中,我让它完美地工作,但在将完全相同的代码复制到另一个项目后它停止工作了。经过几个小时的调试,我想出了解决办法。当我将 build.gradle 中的 compileSdkVersion 更改为 28 时,它工作正常,但将其更改为 29 会使它停止工作。这是为什么?
根据 Privacy changes in Android 10(适用于 targetSdkVersion
为 29 或更高的应用):
Android 10 introduces the
android.permission.ACTIVITY_RECOGNITION
runtime permission for apps that need to detect the user's step count or classify the user's physical activity, such as walking, biking, or moving in a vehicle. This is designed to give users visibility of how device sensor data is used in Settings.
The only built-in sensors on the device that require you to declare this permission are the step counter and step detector sensors.
因此你必须:
将
android.permission.ACTIVITY_RECOGNITION
添加到您应用的清单中。在运行时请求权限并让用户授予该权限。