我一直在开发一个基于位置的应用程序,除了位置实现之外,一切都很好,这是核心点。
我知道位置非常昂贵,但我无法通过考虑电池消耗来处理这个问题。
这是我当前的算法:
第1步:创建时间间隔为1分钟的警报管理器。
第2步:当警报触发时,启动位置监听器
if(settings.getBoolean("use_gps", false))
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,listener);
manager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0,listener);
第 3 步:最多等待 15 秒以获取位置
第 4 步:收到位置信息后,停止位置监听器。
问题之一是这样的:在0秒、0米定位精度下,CPU使用率急剧增加——触发警报时CPU使用率达到45%,警报时间为0-15秒。
但是当我查看应用的电池使用情况时,1-2 小时后电池使用量增加,与预期不符:电池使用量仅为 ~ 4% - 5%。
当用户想要通过 GPS 获取其位置时,就会出现第二个问题。由于通过 GPS 获取位置需要很长时间,与从网络提供商获取位置相比,我无法通过 GPS 获取位置。
我在实现了很多不同的方法之后实现了这个算法。
我正在寻找已成功通过 GPS 实现定期位置检索且 CPU 使用率较低的人的推荐。
最佳答案
一起使用接收器和服务。为此,您可以在this link中找到完整的示例。 。里面有一个倾听者。可以在您的 Activity 中使用监听器来通知您已准备好新位置。还有一个带有 AlarmManager 的服务。
关于Android 最佳位置监听器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950775/