在 Criteria
类中,有两个常量,ACCURACY_HIGH
和 ACCURACY_FINE
,显然是用来要求 LocationManager
以返回更准确的位置更新。这是documentation关于这些常量中的每一个:
public static final int ACCURACY_FINE (Added in API level 1)
A constant indicating a finer location accuracy requirement Constant Value: 1 (0x00000001)
public static final int ACCURACY_HIGH (Added in API level 9)
a constant indicating a high accuracy requirement - may be used for horizontal, altitude, speed or bearing accuracy. For horizontal and vertical position this corresponds roughly to an accuracy of less than 100 meters. Constant Value: 3 (0x00000003)
有谁知道这两个常量中哪一个提供(即要求)最高级别的准确度?
最佳答案
根据我在源代码中看到的内容,ACCURACY_FINE 与 ACCURACY_COARSE 分组,分别具有常量值 1 和 2。 ACCURACY_LOW、MEDIUM 和 HIGH 与常量值 1、2 和 3 组合在一起。
似乎 setAccuracy 期望并返回 COARSE 或 FINE,而 setVerticalAccuracy、setHorizontalAccuracy、setSpeedAccuracy 和 setBearingAccuracy 期望 LOW、MEDIUM 或 HIGH。此外,当您调用 setAccuracy 时,它会像这样设置水平精度:
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 中来源的链接,如果本地没有源,可以自己下载看看。
关于android - 哪个是更高的准确度标准 : ACCURACY_HIGH or ACCURACY_FINE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17874454/