我一直在研究基于位置的应用程序,除了位置实现之外,一切都很好,这是核心要点 .
我知道位置非常昂贵,但考虑到电池消耗,我无法解决这个问题 .
这是我目前的算法:
步骤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使用率成功实现定期位置检索的人的推荐 .
2 回答
一起使用接收器和服务 . 为此,您可以在this link中找到完整的示例 . 里面有一个听众 . 可以在您的活动中使用监听器,以便为您准备好新位置 . 还有一个带有AlarmManager的服务 .
查看Little Fluffy位置库,它可以完成所有位置'heavy'提升并遵循Google的位置专业提示 - > https://code.google.com/p/little-fluffy-location-library/