2011-10-04 8 views
5

हमारे पास एक ऐप है जो उपयोगकर्ता कार्रवाई पर स्थान को ठीक करने का प्रयास करता है। यह जीपीएस और नेटवर्क दोनों पर सुनता है और यह निर्धारित करने के लिए कि कब रुकना बंद करना है और क्या ठीक करना है, यह निर्धारित करने के लिए समय/सटीकता आधारित निर्णय मैट्रिक्स है।स्थानमैंजर पुराने गेटटाइम-टाइमस्टैम्प के साथ पुराने स्थान को ठीक क्यों करता है?

हमने कभी-कभी, एक बहुत अजीब व्यवहार देखा है। हम तो जैसे क्लासिक तरीके से उपयोग को देखने के लिए कितनी पुरानी ठीक है,:

long age = now - newLocation.getTime(); 
if(age >= prefs.getLocationMaxAge()){ 
    Log.d(TAG, "location too old."); 
    return; 
} 

लेकिन कभी कभी, location.getTime ओएस से लौटे शायद 15-20 सेकंड के इस दौर है, लौटे टाइमस्टैम्प के अनुसार, हालांकि हम निश्चित रूप से बता सकते हैं कि यह बहुत पुराना है। उदाहरण के लिए, यदि रेखांश/अक्षांश फिक्स उस स्थिति से है जो हैंडसेट 30 मिनट पहले था!

ऐसा लगता है कि वाई-फाई और नेटवर्क दोनों, लेकिन जीपीएस नहीं है। मेरे लिए, यह पूरी तरह पागल है। क्या किसी और ने इसे देखा है और इसके आसपास कोई रास्ता है?

हम इसे दो अलग-अलग फोन पर प्राप्त कर चुके हैं, हाल ही में Samsung Galaxy S II है।

सहायता का स्वागत किया जाएगा।

संपादित: वास्तव में स्पष्ट रूप से, समस्या यह है कि "onlocationchanged" कॉलबैक शायद सेकंड के एक जोड़े की एक टाइमस्टैम्प उम्र के साथ एक स्थान के साथ ओएस से बुलाया जाता है जब मैं निश्चित रूप से कह कि देशांतर/"नया" फिक्स में अक्षांश एक ऐसा स्थान है जहां फ़ोन कम से कम 30 मिनट तक नहीं रहा है।

इस बनाता है एक तरह से कठिन सही रूप में निर्धारित करने के लिए जहां हैंडसेट यह ...

उत्तर

0

यह वाई-फाई और नेटवर्क से दोनों हो रहा है, लेकिन नहीं जीपीएस

यह उचित लगता है , क्योंकि वाई-फाई और नेटवर्क सेल साइट आधारित त्रिभुज में, सटीकता बहुत खराब है। वे शायद कैश किए गए स्थानों का उपयोग कर रहे हैं जो 30 मिनट पहले की तारीख है। जब तक आप अपनी सेल-साइट नहीं बदलते हैं या किसी अन्य भवन में नहीं जाते हैं, तो नया APs खोजा जा सकता है, मुझे डर है कि आपको केवल कैश किए गए स्थान मिलेंगे। यदि आप ताजा स्थान जीपीएस प्रदाता का उपयोग करना चाहते हैं।

+1

मुझे लगता है कि आप मेरी बात याद कर रहे हैं। कैश किए गए स्थान ठीक होंगे, यदि स्थान का टाइमस्टैम्प इसे प्रतिबिंबित करेगा। लेकिन एक कैश, पुराना फिक्स लेना, और एक वर्तमान टाइमस्टैम्प लगाने के लिए पागल है। मैं अपने प्रश्न को भी स्पष्ट करने के लिए अद्यतन कर दूंगा। – Mathias

+0

इसे साफ़ करने के लिए धन्यवाद; मैंने पाया [अपराधी] (http://www.netmite.com/android/mydroid/frameworks/base/location/java/com/android/internal/location/LocationCollector.java) – Reno

+0

HI guyz, इसके सापेक्ष मुझे स्थान उचित मिला लेकिन जब मैं यह पता लगाने की कोशिश करता हूं कि यह स्थान कितना पुराना है - >> लंबी आयु = System.currentTimeMillis() -location.getTime(); और इस मूल्य पर निर्भर करता है कि मैं गणना करता हूं कि मेरा स्थान कैसा है लेकिन समस्या कभी-कभी मुझे नकारात्मक मूल्य (आयु) मिलती है। समझ में नहीं आता क्यों क्योंकि वह उम्र नकारात्मक में कभी नहीं आती है – Anjan

संबंधित मुद्दे