Android 最佳位置监听器实现

标签 android location cpu-usage power-management

我一直在开发一个基于位置的应用程序,除了位置实现之外,一切都很好,这是核心点。

我知道位置非常昂贵,但我无法通过考虑电池消耗来处理这个问题。

这是我当前的算法:

第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/

相关文章:

java - 寻找朝拜方向的通用逻辑

c# - 在 Visual C# 中获取 CPU 多核使用情况

javascript - 如何减少此 javascript 代码的 cpu 使用率?

android - 改造动态 HTTP 方法

android - 我可以在谷歌市场上以多种语言发布应用程序吗?

Python - 检查给定的邮政编码(或城市)是否位于捷克共和国

javascript - 在自定义谷歌地图中显示观看者的大致位置

java - 如何确定是什么持有锁并阻塞了我的 Java 线程?

java - 根据两个旋转器更改图像

android - 为 Android NDK 编译 C++11 源代码