android – 获取用户在后台发送到服务器的每日步数的最佳方法

我想每24小时向我的服务器发送一下我走了几步.我有一个AlarmManager来关闭alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1000 * 60 * 60 * 24,pendingIntent1)

现在这就是我被困的地方……我应该如何衡量每日步骤?(记住我需要在后台发送这个)我可以使用这个可以覆盖此函数的服务public void onSensorChanged(SensorEvent event)this doesn’因为我的服务可能被破坏(电池会很快耗尽),所以看起来很准确.

要么

我可以尝试使用Google健身,但我每次尝试获取数据时都需要用户连接mGoogleApiClient.connect()(我需要在后台获取此数据)

有人有这方面的经验吗?

解决方法

onSensorChanged()确实可以正常工作.传感器应该在设备中足够好,它不应该将振动计为一个步骤.但是,使用onSencorChanged()捕获步数时唯一的问题是,如果我们摇动设备,它会将其视为一个步骤.为避免这种情况,大多数解决方案将实现跟踪位置并发送到后端,以便后端计算设备是否实际移动.它将实际步数发送回可以显示的设备.

除此之外,如果您认为服务被破坏是您的问题,您可以保证重新启动它.请参阅我对Unable to restart the service的回答.这解释了当应用程序被最近的任务或低内存情况下的系统杀死时如何使用UncaughtExceptionHandler重新启动服务.您的服务无法在深度睡眠模式下运行.您可以使用WakefulBroadcastReceiver and startWakefulService()运行它.

您应该尽可能减少向后端发送数据的频率,以避免耗尽电池电量.

我不确定GoogleFit API.为自己研究这个问题,你可以为你的问题添加答案.

相关文章

ADB Remote ATV Android TV 的遥控器,基于 ADB Shell 命令 ...
使用Flutter自带的SearchDelegate组件实现搜索界面,通过魔改...
上篇文章讲解了怎么使用Kotlin的协程配合Retrofit发起网络请...
安卓开发——WebView+Recyclerview文章详情页,解决高度...
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...