gpt4 book ai didi

java - 使用 getAccuracy 错误

转载 作者:行者123 更新时间:2023-11-29 05:49:38 25 4
gpt4 key购买 nike

我正在构建一个基于位置的应用程序,我想避免使用这种位置:“Tel Aviv, Tel Aviv, Israel”,这是非常不准确的。

我在使用位置之前使用以下条件:

if(!(this.location == null || this.location.getAccuracy() > 700))
// use the location

但我一直在获取这些位置(特拉维夫、特拉维夫、以色列),而特拉维夫还不够小,无法通过此条件。

我错过了什么?怎么了?

最佳答案

你还没有指定一些涉及的参数,但我会试一试。

确切的 Location 参数取决于特定 Location 的来源,即它是如何获得的以及使用什么地理位置来源。例如:

  • 如果您使用 GPS,Location 将具有可靠的accuracy 值。
  • 如果您使用蜂窝网络广播电台 (BTS),您接收到的准确性将受限于全局 BTS 的数据库、它们的位置和范围。
  • 如果您使用 Wi-Fi 网络及其报告的信号强度,则准确性将取决于 Wi-Fi 网络数据库的质量。不幸的是,维护和创建此类数据库并不便宜。例如,Google 购买此类数据库并使用 Google 街景汽车扫描此类网络。
  • 如果您使用基于公共(public) IP 地址的本地化,您的准确性将仅限于一个城镇,因为这是 IANA IP 地址空间注册表中包含的最准确的信息。此外,它可以通过使用代理服务器来欺骗。

您将从位置服务接收到的准确度表示与报告位置的距离(以米为单位),在获取位置时设备可能位于该位置。

因此(如果我正确理解您的问题),我假设您使用的是一种低准确度的方法来获取当前设备位置。您只需要更准确地切换到 Location 源即可。

另请注意,位置服务使用的位置获取方法(即如上所述用于查找位置的服务)实际上可能无法为返回的 提供准确性位置。要理解我的意思,请考虑以下场景及其两个结果 - 请注意,它们都来自基于 Wi-Fi 网络的相同定位方法:

  1. 您处于多个 Wi-Fi 网络的覆盖范围内。您向定位服务询问设备位置。范围内的所有 Wi-Fi 网络恰好在位置服务数据库中。因此,定位服务能够准确地获取您的位置。
  2. 您处于多个 Wi-Fi 网络的覆盖范围内。然而,它们都不是定位服务所熟知的,因为它们的起源(城镇)是已知的,但它们的确切位置和范围是未知的。在这种情况下,定位服务能够告诉您您所在的国家/城镇,但不知道您的确切位置。反过来,位置服务可以为您提供不准确的位置。

您必须通过测试是否完全可用来为这种情况做好准备。您可以通过发出 Location.hasAccuracy() 来执行此操作。如果返回值为 false,您不能调用 Location.getAccuracy()(实际上您可以,但要注意 - 它会返回0!)。所以,你的情况应该更像是:

if (this.location != null && this.location.hasAccuracy() && this.location.getAccuracy() < 700) {
// do something
}

关于java - 使用 getAccuracy 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com