2010-11-13 14 views
9

देता है मैं Location.getAccuracy() का उपयोग करके अपनी वर्तमान जीपीएस सटीकता प्राप्त करने की कोशिश कर रहा हूं। हालांकि, यह 1 (या कभी-कभी 2) लौट रहा है जो संभव नहीं लगता है। Google मानचित्र मुझे बता रहा है कि मेरी वर्तमान स्थान सटीकता 40 मीटर है।एंड्रॉइड स्थान .getAccuracy() 1

किसी भी विचार?

int accuracy = (int) loc.getAccuracy(); 
// This will give me accuracy = 1 

उत्तर

8

documentation of getAccuracy से:

मीटर में ठीक की सटीकता देता है।

ऐसा क्यों प्रतीत नहीं होता है? 1 का रिटर्न-वैल्यू, कभी-कभी 2 मीटर, जीपीएस के लिए बिल्कुल ठीक है। एक अच्छी सिग्नल शक्ति के साथ, और कई उपग्रहों पर ताले, आप उस तरह की सटीकता प्राप्त कर सकते हैं।

(इसके अलावा, आप एक int अपने फर्श के लिए मूल्य कास्टिंग कर रहे हैं के बाद से। सटीकता वास्तव में उदाहरण के लिए 1.9 मीटर की दूरी पर हो सकता है।)

1

40 मीटर की दूरी अधिक सेलुलर नेटवर्क सटीकता की तरह दिखता है, लेकिन नहीं जीपीएस।

1

मेरे पास आमतौर पर 6-9 उपग्रह दिखाई देते हैं (स्कैंडिनेविया) और प्राप्त करने के लिए लगभग 2.0 मीटर प्राप्त करते हैं अकसरता() - और यह व्यावहारिक रूप से, + - 40 सेमी वास्तविकता में सटीक है।

3

क्या यह संभव है कि आप स्थान प्रदाता पर getAccuracy() पर कॉल कर रहे हों और स्थान नहीं? डॉक्स से:

public abstract int getAccuracy() 

के बाद से: एपीआई स्तर 1 इस प्रदाता की एक निरंतर का वर्णन क्षैतिज सटीकता देता है। यदि प्रदाता बेहतर अनाज या सटीक स्थान देता है, ACCURACY_FINE वापस कर दिया जाता है, अन्यथा यदि स्थान केवल अनुमानित है तो ACCURACY_COARSE वापस कर दिया गया है।

कहाँ ACCURACY_FINE और ACCURACY_COARSE के रूप में परिभाषित कर रहे हैं:

public static final int ACCURACY_COARSE 

के बाद से: एपीआई स्तर 1 एक निरंतर एक अनुमानित सटीकता आवश्यकता

Constant Value: 2 (0x00000002) 
public static final int ACCURACY_FINE 

यह दर्शाता है के बाद से: एपीआई स्तर 1 एक लगातार एक बेहतर स्थान सटीकता आवश्यकता

0 इंगित करता है
Constant Value: 1 (0x00000001) 
संबंधित मुद्दे