android - 如何使用 JobScheduler 从后台应用程序获取步数

标签 android background android-sensors android-jobscheduler pedometer

STEP_COUNTER 传感器的 Android 文档有点困惑。

根据这个:Android Sensor doc我应该始终注册 STEP_COUNTER 传感器,否则计步器传感器根本不会计数。这一切都很好并且按预期工作,直到我认为 Android 10 传感器事件不再发送到后台应用程序时。

然后我尝试听取 this other step counter doc 的建议建议使用 JobScheduler 定期读取最后一个值。现在,afaik 无法从传感器获取最新值,我必须像往常一样注册一个 SensorEventListener。

所以,现在我尝试结合这两个建议,总是注册计步器传感器,这样硬件传感器就会开始计数,因为当我注册我的监听器时我总是会收到一个新事件,我尝试注销并重新注册这个监听器当 JobScheduler 执行时,但无论我尝试了哪种方法,我都无法在运行 Android 11 的 Pixel 后台获得最新的步数。

我知道我们有 Google Fit,但对于这种特定情况,如果我也可以在 JobScheduler 按照文档中的指示运行时读出最新值,那么使用基本计步器就足够了。

有人知道这是否仍然可行,还是只是文档没有更新?

最佳答案

您的应用应处于前台模式以获取传感器数据。通过将前台通知附加到工作人员 (workmanager + setForegroundAsync) 为我工作。我认为如果前台服务处于 Activity 状态,您的解决方案也会起作用。

关于android - 如何使用 JobScheduler 从后台应用程序获取步数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64171907/

相关文章:

swift - 垂直移动 Swift 背景中的黑线

android - 背景图像拉伸(stretch)

android - Android camera2 CameraCharacteristics API 对于传感器尺寸的可靠性如何?

字段中最大值的Android SQLite语法

java - 为什么Android线程在完成执行之前就被终止了?

css - 没有固定定位的假背景透明度/效果

Android HAL 使系统卡在 poll() 函数中

android - 从加速度计数据中去除重力的 Alpha 值

android - 如何在 android 服务中调用振动器

android - 使用带有挂起功能 block 的接口(interface)类的 Hilt 进行依赖注入(inject)