Fab*_*ioC 12 android accelerometer google-fit
一个众所周知的问题是,许多Android手机在屏幕关闭时关闭加速度计.然而Android Fit(应用程序)似乎发生了一些变化.即使屏幕熄灭,Fit也会保持计数步数.如果安装了Fit,则会在Fit环境中引发事件以进行步数计数,并且我可以使用它来捕获它们
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
Run Code Online (Sandbox Code Playgroud)
我在三星S4和Oneplus One上测试了这个,在这两种情况下都计算了步数.他们是怎么做到的?他们使用什么Android类?我的理解是,自Kitkat以来引入的可用方法是实现SensorEventListener.例如,theelfismike提供了实现此功能的代码.然而,在许多手机上,当屏幕熄灭时,步数会停止.有趣的是,如果安装了Google Fit应用程序,计数似乎并没有停止(因此我猜他们会保持加速度计开启).
我错过了什么吗?屏幕关闭后保持计数步骤的功能是否可供凡人程序员使用?谢谢!
正如Ilja所说,即使屏幕关闭,您的代码也会运行.但在这种情况下,我想我们需要一个不同的答案.
他们肯定使用一个保留唤醒锁的服务,并向传感器查询数据.这里的重要部分是拿着唤醒锁 - 你必须防止设备在服务的整个生命周期内进入睡眠状态 - 如果你不想错过一些数据.
但是这种方法会很快耗尽电池电量,因为为了检测步骤,您需要处理来自传感器的大量数据.
这就是为什么有传感器批处理.这样,即使不保持设备唤醒,也可以获得连续的传感器数据.它基本上将传感器事件存储在芯片本身的基于hw的队列中,并且仅以预定间隔批量发送到您的应用程序(服务,...).这使您可以在不显着耗尽电池的情况下进行全天候监控.请注意,只有受支持的芯片组可以做到这一点(您可以在Android文档中找到详细信息),如果是旧手机,您需要回退到可怕的唤醒锁定方法以获取数据.
您也可以使用Google Fit API,但只有在设备上安装了Google Fit + Google Play服务时才会启用监控功能.
| 归档时间: |
|
| 查看次数: |
4812 次 |
| 最近记录: |