我正在尝试使用Location.getAccuracy()获得我目前的全球定位系统的精度。然而,这是返回1(有时是2),这似乎是不可能的。谷歌地图告诉我,我目前的定位精度是40米。
有什么想法吗?
int accuracy = (int) loc.getAccuracy();
// This will give me accuracy = 1发布于 2010-11-14 06:25:02
从documentation of getAccuracy
以米为单位返回修复的精度。
为什么这看起来不可能呢?对于GPS来说,返回值为1,有时是2米就足够了。有了良好的信号强度,并锁定在多个卫星上,你可以获得这种准确性。
(此外,由于您将地板的值强制转换为int。例如,精度实际上可以是1.9米。)
发布于 2012-06-07 08:37:35
是否可能是在LocationProvider上调用getAccuracy(),而不是在位置上调用?从文档中:
public abstract int getAccuracy ()API this: Level 1返回一个描述此提供程序的水平精度的常量。如果提供程序返回更细的粒度或精确的位置,则返回ACCURACY_FINE,否则,如果位置仅是近似的,则返回ACCURACY_COARSE。
其中,ACCURACY_FINE和ACCURACY_COARSE定义为:
public static final int ACCURACY_COARSEAPI级别1表示近似精度要求的常量
Constant Value: 2 (0x00000002)
public static final int ACCURACY_FINE自: API级别1指示更精细的定位精度要求的常量
Constant Value: 1 (0x00000001)发布于 2010-11-14 06:56:45
40米看起来更像是蜂窝网络的精确度,但不是GPS。
https://stackoverflow.com/questions/4175046
复制相似问题