首页 文章

Android最佳位置监听器实现

提问于
浏览
2

我一直在研究基于位置的应用程序,除了位置实现之外,一切都很好,这是核心要点 .

我知道位置非常昂贵,但考虑到电池消耗,我无法解决这个问题 .

这是我目前的算法:

步骤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 回答

  • 2

    一起使用接收器和服务 . 为此,您可以在this link中找到完整的示例 . 里面有一个听众 . 可以在您的活动中使用监听器,以便为您准备好新位置 . 还有一个带有AlarmManager的服务 .

  • 1

    查看Little Fluffy位置库,它可以完成所有位置'heavy'提升并遵循Google的位置专业提示 - > https://code.google.com/p/little-fluffy-location-library/

相关问题