java - 提高 Android GPS 性能

标签 java android gps

如何改善 Android 平台上较慢的 GPS 信号采集?

我正在测试一个基于 this open source code 的简单 GPS 记录器,虽然它似乎可以工作,但它可能需要 10-15 分钟才能首先获取信号并开始显示 GPS 坐标。然而,在同一台设备上运行谷歌地图应用程序似乎几乎可以立即获得信号(它甚至能够实时检测我所面对的方向),而 GPS 记录器服务仍然说它找不到信号。

为什么 Google map 获取 GPS 信号的速度如此之快,而标准 GPS 系统服务却需要很长时间?

我启动 GPS 服务的具体代码是:

private void startLoggerService() {
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationListener = new MyLocationListener();
    lm.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        2000, 
        1,
        locationListener);
}

最佳答案

在使用位置数据时,您应该注意并明确考虑以下几点:

  • 不要只依赖 GPS 传感器。尽管 GPS 可能会为您提供最准确的结果,但它相对较慢并且非常耗电。相反,还向网络提供商请求位置更新:LocationManager.NETWORK_PROVIDER。在大多数情况下,这将提供足够准确的结果以在您的应用程序中使用(我玩过的大多数设备似乎在最坏情况下产生大约 60~65m 的准确度),但更重要的是:它快得多。请注意,与 GPS 一样,用户可以在系统设置中自行启用和禁用功能。有关详细信息,请参阅 Using the Location Manager .
  • 想想您需要多长时间更新一次位置信息。如果可能,请防止持续更新(这会立即耗尽电池电量)并在收到所需数据后立即释放传感器。此外,一个好的做法是在一定程度上缓存位置——即使它不完全准确,用户也会立即得到反馈。您可以将其与一些考虑时间戳的逻辑结合起来。
  • 使用 Android 开发者网站上已有的资源。例如Location Strategies上有一个话题这将是值得一读的。另一个很好的资源是 blog post by Reto Meier和他的 open source project实现了他的 Android Protips for Location。如果你有时间,也去看看他的Google I/O 2011 presentation讨论基于位置/位置感知 Android 应用的最佳实践。

附带说明:您所面对方向的实时指示与位置无关,而是来自磁场传感器(读作:数字罗盘)或陀螺仪。两者都处理设备的方向,而不是位置。

关于java - 提高 Android GPS 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548196/

相关文章:

java - 关于 Java 中私有(private)静态嵌套类的合成访问器的 Eclipse 警告?

android - 在模型对象中引用 Strings.XML 以支持本地化

gps - 在寻找合适的 GPS 时遇到问题

Swift 将十进制坐标转换成度、分、秒、方向

python - 解析和转换 GPS Dongle 的输出

java - 我需要通过jdt插件中的eclipse Imarker找出代码中错误的位置

java - Jackson-JsonLD 嵌套对象

c# - 将 C# 泛型转换为 Java 泛型

安卓 WebView :How to display only part of webpage

android - 在抽屉导航关闭之前加载 fragment