首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个是较高的准确度标准: ACCURACY_HIGH还是ACCURACY_FINE?

哪个是较高的准确度标准: ACCURACY_HIGH还是ACCURACY_FINE?
EN

Stack Overflow用户
提问于 2013-07-26 06:33:04
回答 3查看 9.8K关注 0票数 14

Criteria类中,有两个常量,ACCURACY_HIGHACCURACY_FINE,它们显然被用来要求LocationManager返回更高精度的位置更新。下面是文档对每一个常量的说明:

公共静态最终int ACCURACY_FINE (在API级别1中添加) 表示较高定位精度的常数:1 (0x00000001) 公共静态最终int ACCURACY_HIGH (在API级9中添加) 表示高精度要求的常数--可用于水平、高度、速度或轴承精度。对于水平和垂直位置,这大致相当于不到100米的精度。常数:3 (0x00000003)

有谁知道这两个常量中哪一个提供(即要求)最高的精确度?

EN

回答 3

Stack Overflow用户

发布于 2013-07-26 06:42:23

从源代码中可以看到,ACCURACY_FINE是与ACCURACY_COARSE一起分组的,其常量值分别为1和2。ACCURACY_LOW,中等和高分组与常量值1,2和3。

setAccuracy似乎期望并返回粗或细,而setVerticalAccuracy、setHorizontalAccuracy、setSpeedAccuracy和setBearingAccuracy则期望低、中或高。此外,当您调用setAccuracy时,它设置了如下所示的水平精度:

代码语言:javascript
复制
public void setAccuracy(int accuracy) {
    if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_COARSE) {
        throw new IllegalArgumentException("accuracy=" + accuracy);
    }
    if (accuracy == ACCURACY_FINE) {
        mHorizontalAccuracy = ACCURACY_HIGH;
    } else {
        mHorizontalAccuracy = ACCURACY_LOW;
    }
}

真让人费解,但我希望我能帮你澄清一下。这里有一个指向grepcode源代码的链接,您可以下载它,如果本地没有源代码,您可以自己查看。

票数 22
EN

Stack Overflow用户

发布于 2014-04-06 09:54:50

这两个常数都意味着最高的精度,但适用于不同的方法。从文件(问题提出后可能已经更新):

ACCURACY_FINEsetAccuracy的有效输入。

ACCURACY_HIGHsetBearingAccuracysetHorizontalAccuracysetSpeedAccuracysetVerticalAccuracy的有效输入。

我相信这种建模的思想是,FINECOARSE只给您两个对立面的选择,而LOWMEDIUMHIGH允许一个更微妙的区别。(问题仍然存在,为什么setSpeedAccuracy只允许LOWHIGH来嘲笑这种建模。但是,这可能是文档或设计中的一个错误。*)

正如OP所提到的,他们在后面引入了这些值,即API级别9,而API级别1用于细粗。npace发现的代码简单地揭示了在内部,安卓开发人员现在将所有东西映射到低到高值范围的名称和值,以获得内部的一致性。

票数 8
EN

Stack Overflow用户

发布于 2015-07-23 12:35:38

确定定位精度的标准有几个。

一旦设备开始提供实时位置,我的建议是检查每个结果的准确性,并考虑拒绝那些大于一定数量的,根据您的要求。定位提供商运行的时间越长,如果设备有通畅的天空视野和良好的蜂窝连接,那么通常情况下,精确度会提高到某个点,然后平稳下来,然后就会波动。下面是一个伪代码片段,展示了如何检查每个GPS定位结果的准确性:

代码语言:javascript
复制
1
2
3

以下是一些精度阈值的粗略示例。对于这些不同的阈值将如何影响应用程序的行为,您的需求可能有所不同;这些是需要地理编码的示例,它们将当前位置转换为近似地址。根据结果,应用程序向用户提供了不同的反馈:

代码语言:javascript
复制
Rooftop  <= 10 meters (desired result)
Street >10 meters and <= 100 meters (let user know it’s close but not perfect. Good enough?)
Neighborhood > 100 meters and  <= 500 meters (give visual feedback that accuracy is low)
City > 500 meters and <= 2000 meters (ask user to verify city name from a list)
County > 2000 meters (prompt for manual location input)

考虑到您自己独特的用例。如果你的应用程序只是帮助人们在NFL游戏中找到开放的停车场,你可能会完全拒绝任何大于100米(328英尺)的精确值。您可以使用一个应用程序,返回5英里(8000米)半径范围内的牙医诊所列表。或者,天气应用程序只需大致了解您所在的城市。这些只是帮助你思考的想法。

代码语言:javascript
复制
public void onLocationChanged(Location location) {
         if(location.getAccuracy() < 100.0 && location.getSpeed() < 6.95){
              //Do something
         }
         else{
              //Continue listening for a more accurate location
         }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17874454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档