gpt4 book ai didi

android - Android 中的计步器 : always on?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:17 24 4
gpt4 key购买 nike

这是一个众所周知的问题,许多 Android 手机在 screen goes off 时关闭加速度计。 .然而,Android Fit(应用程序)似乎发生了一些变化。即使屏幕关闭,健身也会继续计算步数。如果安装了 Fit,则会在 Fit 环境中引发事件以进行步数计数,我可以使用

捕获它们
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)

我已经在三星 S4 和 Oneplus One 上对此进行了测试,在这两种情况下都计算了步数。他们是怎么做到的?他们使用什么 Android 类?我的理解是Kitkat之后引入的available方法是实现一个SensorEventListener。例如 theelfismike 提供的代码 implements this .然而,在许多手机上,当屏幕熄灭时计步停止。有趣的是,如果安装了 Google Fit 应用程序,计数似乎不会停止(因此我猜他们会保持加速度计开启)。

我错过了什么吗?凡人程序员是否可以使用屏幕关闭后保持计数步骤的功能?谢谢!

最佳答案

正如 Ilja 所说,您的代码即使在屏幕关闭后也会运行。但在这种情况下,我想我们需要一些不同的答案。

他们肯定使用了一个保留 wakelock 的服务他们向传感器查询数据。这里的重要部分是持有唤醒锁——如果你不想错过一些数据,你必须防止设备在你的服务生命周期内进入休眠状态。

但这种方法会很快耗尽电池电量,因为为了检测步数,您需要处理来自传感器的大量数据。

这就是为什么有 sensor batching .这使您即使不让设备保持唤醒状态也能获得连续的传感器数据。它基本上将传感器事件存储在芯片本身的基于硬件的队列中,并且仅按预定义的时间间隔将它们分批发送到您的应用程序(服务,..)。这使您可以进行 24/7 监控,而不会显着耗尽电池电量。请注意,只有受支持的芯片组才能做到这一点(您可以在 Android 文档中找到详细信息),如果是旧手机,您需要回退到可怕的唤醒锁保持方法才能获取数据。

您也可以只使用 Google Fit APIs ,但这仅在设备上同时安装了 Google Fit + Google Play 服务并打开监控时才有效。

关于android - Android 中的计步器 : always on?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com