我想每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.为自己研究这个问题,你可以为你的问题添加答案.