我需要在Android手机上进行后台GPS跟踪,目前我计划有两种情况:
1.当手机连接到(汽车)充电器时,获取频繁的GPS位置(每分钟一次)。
2.当手机未连接到充电器时,根据电池受影响程度每5-30分钟轮询一次位置。
我知道我需要在服务中实现跟踪,并可能显示通知以保持服务活动。但是,我了解到手机随时可能进入睡眠模式,这将停止GPS跟踪。
对于这些情况,最好的方法是什么,可以实现连续的后台GPS跟踪,而不会让手机进入睡眠状态,也不会耗费太多电量?
到目前为止,我收集了以下信息:
对于方案1,我可能需要获取一个WakeLock,并一直保持CPU处于唤醒状态(但屏幕可以休眠)。MyTracks应用程序似乎在TrackRecordingService中执行此操作。OpenGPSTracking似乎也是这样做的the same。
对于方案2,我可以使用AlarmManager每隔x分钟安排一个检查。我的服务将需要获取临时WakeLock,等待单个GPS位置,然后停止并释放WakeLock。
这两种方法(永久WakeLock vs AlarmManager)的功耗如何比较?当每30分钟只进行一次检查时,GPS能否在合理的时间内接收到准确的位置?
StackOverflow上有一些相关问题,但没有令人满意的答案。其中一些半有用:
1.当手机连接到(汽车)充电器时,获取频繁的GPS位置(每分钟一次)。
2.当手机未连接到充电器时,根据电池受影响程度每5-30分钟轮询一次位置。
我知道我需要在服务中实现跟踪,并可能显示通知以保持服务活动。但是,我了解到手机随时可能进入睡眠模式,这将停止GPS跟踪。
对于这些情况,最好的方法是什么,可以实现连续的后台GPS跟踪,而不会让手机进入睡眠状态,也不会耗费太多电量?
到目前为止,我收集了以下信息:
对于方案1,我可能需要获取一个WakeLock,并一直保持CPU处于唤醒状态(但屏幕可以休眠)。MyTracks应用程序似乎在TrackRecordingService中执行此操作。OpenGPSTracking似乎也是这样做的the same。
对于方案2,我可以使用AlarmManager每隔x分钟安排一个检查。我的服务将需要获取临时WakeLock,等待单个GPS位置,然后停止并释放WakeLock。
这两种方法(永久WakeLock vs AlarmManager)的功耗如何比较?当每30分钟只进行一次检查时,GPS能否在合理的时间内接收到准确的位置?
StackOverflow上有一些相关问题,但没有令人满意的答案。其中一些半有用: