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

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

现在,这是我被卡住的地方...我应该如何测量每日步骤?(记住我需要在后台发送)我可以使用这个可以重写此功能的服务public void onSensorChanged(SensorEvent event) this doesn' t看起来非常准确,因为我的服务可能会被破坏(并且电池会很快耗尽)。

要么

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

任何人都有这样的经验吗?


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

如果你认为服务被破坏是你的担忧,那么留下这个,你可以保证重启它。 查看我的答案无法重新启动服务。 这解释了当应用程序在最近的任务中死亡或系统处于内存不足状态时如何使用UncaughtExceptionHandler重新启动服务。 您的服务不能在深度睡眠模式下运行。 你可以使用WakefulBroadcastReceiver和startWakefulService()来运行它。

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

我不确定GoogleFit API。 对此进行研究,您可以为您的问题添加答案。 ;-)

更新:
Android上传感器的漂亮文章 - Android设备如何应对待机模式(屏幕关闭)和挂起模式下的连续感应。

好的一点要注意:

“暂停”是SoC(片上系统)未通电的低功耗模式。 该模式下器件的功耗通常比“On”模式低100倍

链接地址: http://www.djcxy.com/p/89375.html

上一篇: Best way to get daily steps count of user to send to server in background

下一篇: Make T4MVC work with ASP.NET 5