Android स्थान प्रदाता - GPS या नेटवर्क प्रदाता?


128

अपने आवेदन में मैं उपयोगकर्ता के वर्तमान स्थान का निर्धारण करना चाहूंगा। हालाँकि मेरे पास इस संबंध में कुछ सवाल हैं:

  1. अलग-अलग स्थान प्रदाता हैं, कौन सा सबसे सटीक है? जीपीएस प्रदाता या नेटवर्क प्रदाता ?

  2. वे उपलब्ध प्रदाता कितनी दूर हैं? वे कैसे कार्य करते हैं?

  3. क्या आप मुझे कुछ कोड-स्निपेट या ट्यूटोरियल प्रदान कर सकते हैं कि कैसे अपने आवेदन में जीपीएस कार्यक्षमता को लागू करने के साथ आरंभ करें?


18
फिर से खोलने के लिए वोट - सवाल अच्छा है और उत्तर दिया गया उपयोगी है। उत्तर भी पुराना है क्योंकि अब फ्यूजड लोकेशन प्रोवाइडर है - सवाल खोलने से उसे अपडेट किया जा सकेगा।
रिचर्ड ले मेसुरियर

जवाबों:


281

Android में 3 स्थान प्रदाता हैं।

वो हैं:

जीपीएस -> (जीपीएस, एजीपीएस): जीपीएस स्थान प्रदाता का नाम। यह प्रदाता उपग्रहों का उपयोग करके स्थान निर्धारित करता है। शर्तों के आधार पर, स्थान तय करने के लिए इस प्रदाता को कुछ समय लग सकता है। Android.permission.ACCESS_FINE_LOCATION की अनुमति की आवश्यकता है।

network -> (AGPS, CellID, WiFi MACID): नेटवर्क लोकेशन प्रोवाइडर का नाम। यह प्रदाता सेल टॉवर और वाईफाई पहुंच बिंदुओं की उपलब्धता के आधार पर स्थान निर्धारित करता है। परिणाम नेटवर्क लुकअप के माध्यम से प्राप्त होते हैं। किसी भी अनुमति की आवश्यकता है android.permission.ACCESS_COARSE_LOCATION या android.permission.ACCESS_FINE_LOCATION।

निष्क्रिय -> (CellID, WiFi MACID): वास्तव में स्थान निर्धारण आरंभ किए बिना स्थानों को प्राप्त करने के लिए एक विशेष स्थान प्रदाता। इस एप्लिकेशन को निष्क्रिय रूप से स्थान अपडेट प्राप्त करने के लिए उपयोग किया जा सकता है जब अन्य एप्लिकेशन या सेवाएं वास्तव में स्वयं स्थानों का अनुरोध किए बिना उनसे अनुरोध करते हैं। यह प्रदाता अन्य प्रदाताओं द्वारा उत्पन्न स्थानों को लौटाएगा। Android.permission.ACCESS_FINE_LOCATION की अनुमति की आवश्यकता है, हालाँकि यदि GPS सक्षम नहीं है तो यह प्रदाता केवल मोटे सुधार लौटा सकता है। यह वही है जो एंड्रॉइड इन लोकेशन प्रदाताओं को कॉल करता है, हालांकि, इस सामान को बनाने के लिए अंतर्निहित प्रौद्योगिकियों को हार्डवेयर और टेल्को द्वारा प्रदान की गई क्षमताओं (नेटवर्क सेवा) के विशिष्ट सेट में मैप किया जाता है।

सबसे अच्छा तरीका है कि पहले "नेटवर्क" या "निष्क्रिय" प्रदाता का उपयोग करें, और फिर "जीपीएस" पर कमबैक करें, और कार्य के आधार पर, प्रदाताओं के बीच स्विच करें। यह सभी मामलों को कवर करता है, और सबसे कम सामान्य भाजक सेवा (सबसे खराब स्थिति में) और महान सेवा (सर्वोत्तम मामले में) प्रदान करता है।

यहाँ छवि विवरण दर्ज करें

लेख संदर्भ: एंड्रॉइड लोकेशन प्रोवाइडर्स - जीपीएस, नेटवर्क, पैसिव बाय नज़्मुल इदरीस

कोड संदर्भ: https://stackoverflow.com/a/3145655/28557

-----------------------अपडेट करें-----------------------

अब एंड्रॉइड में फ्यूज्ड लोकेशन प्रोवाइडर है

फ़्यूज्ड लोकेशन प्रोवाइडर समझदारी से अंतर्निहित लोकेशन तकनीक का प्रबंधन करता है और आपको अपनी ज़रूरतों के हिसाब से सर्वश्रेष्ठ स्थान देता है। यह ऐप के लिए उपयोगकर्ता की वर्तमान स्थिति को बेहतर सटीकता और कम बिजली के उपयोग के साथ प्राप्त करने के तरीकों को सरल बनाता है

फ़्यूज्ड लोकेशन प्रोवाइडर को लोकेशन लाने के तीन तरीके उपलब्ध कराते हैं

  1. अंतिम स्थान: जब आप वर्तमान स्थान को एक बार जानना चाहते हैं तो उपयोग करें।
  2. श्रोता का उपयोग करके स्थान का अनुरोध करें : जब स्क्रीन / फ्रंटएंड पर एप्लिकेशन का उपयोग करें और स्थान जारी रखने की आवश्यकता हो।
  3. लंबित आशय का उपयोग करके स्थान का अनुरोध करें : पृष्ठभूमि में अनुप्रयोग का उपयोग करें और आवश्यकता के लिए स्थान जारी है।

संदर्भ:

आधिकारिक साइट: http://developer.android.com/google/play-services/location.html

जुड़े स्थान प्रदाता उदाहरण: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------


2
ध्यान दें कि Google Play Services फ़्यूस्ड लोकेटर प्रदाता भी है जिसका उपयोग कर सकते हैं।
रिचर्ड ले मेसुरियर

क्या अपना स्वयं का कस्टम स्थान प्रदाता बनाना संभव है? android.permission.INSTALL_LOCATION_PROVIDER पर हस्ताक्षर किए गए हैं या सिस्टम का अर्थ है कि मुझे रूट किए गए डिवाइस पर एक स्थापित करने में सक्षम होना चाहिए, नहीं?
जॉनीटेक्स

1
जुड़े स्थान प्रदाता केवल API> = 19 के लिए उपलब्ध है। हमें अभी भी पुराने संस्करणों को चलाने वाले डिवाइस के लिए पुरानी प्रक्रिया का पालन करने की आवश्यकता है, है ना?
शोभित पुरी

क्या कोई सैंपल कोड / मौजूदा API है जो GPS लोकेशन की तलाश करता है और कुछ समय बाद नेटवर्क प्रदाता को वापस आ जाता है, यदि GPS लोकेशन लाने में विफल रहता है? या इसे कुछ टाइमर लॉजिक द्वारा कोड में संभाला जाना चाहिए?
झाझा

निष्क्रिय प्रदाता "" "इस प्रदाता का उपयोग
स्थानिक

7

GPS आमतौर पर नेटवर्क की तुलना में अधिक सटीक होता है लेकिन कभी-कभी GPS उपलब्ध नहीं होता है, इसलिए आपको दोनों के बीच स्विच करने की आवश्यकता हो सकती है।

Android देव साइट को देखने के लिए एक अच्छी शुरुआत हो सकती है। उनके पास उपयोगकर्ता स्थान निर्धारित करने के लिए समर्पित एक अनुभाग था और इसमें आपके लिए आवश्यक सभी कोड नमूने हैं।

http://developer.android.com/guide/topics/location/obtaining-user-location.html


@ क्या आप अपना स्थान देशांतर और अक्षांश प्राप्त करना चाहते हैं?
निकुंज पटेल

@Scorpio मैं वास्तव में जानना चाहता था कि NETWORK PROViDER & GPS PROVIDER में से कौन सा विकल्प बेहतर है। । .मेरे सवाल के जवाब के रूप में मुझे एक लिंक भेजें जो कि आह ने मुझे बहुत मदद की ... अब मैं अपने ऐप में NETWORK PROVIDER का उपयोग कर रहा हूं :-)
नोमान

3

यहां कुछ बेहतरीन जवाब दिए गए हैं। एक और तरीका जो आप अपना सकते हैं, वह है Atooma, tranql और Neura जैसे ऑनलाइन उपलब्ध कुछ मुफ्त SDK का उपयोग करना, जो आपके Android एप्लिकेशन के साथ एकीकृत हो सकते हैं (इसे एकीकृत करने में 20 मिनट से कम समय लगता है)। आपको अपने उपयोगकर्ता का सटीक स्थान देने के साथ-साथ यह आपके उपयोगकर्ता की गतिविधियों के बारे में अच्छी जानकारी भी दे सकता है। साथ ही, उनमें से कुछ आपकी बैटरी का 1% से भी कम उपभोग करते हैं


1
क्या आप उल्लेख कर रहे एसडीके के संदर्भ प्राप्त कर सकते हैं?
किशोर रेलांगी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.