Android: Google Play सेवाओं के लिए स्थान प्रबंधक


151

मैं एक ऐसा ऐप बनाना चाहता हूं जो उपयोगकर्ता के वर्तमान स्थान को प्राप्त करने के आसपास केंद्र हो और फिर रुचि के बिंदु (जैसे बार, रेस्तरां, आदि) ढूंढें जो Google स्थल एपीआई के माध्यम से उसके पास हैं ।

शुरू करने के लिए एक जगह के लिए वेब पर खोज करने पर मुझे कुछ ट्यूटोरियल मिले जो LocationManagerकक्षा का उपयोग करते हैं और कुछ अन्य जो उपयोगकर्ताओं को खोजने के लिए Google Play Services का उपयोग करते हैं।

पहली नजर में दोनों एक ही काम करते हैं, लेकिन जब से मैं इस बारे में नया आया हूं मैं थोड़ा उलझन में हूं और मुझे नहीं पता कि कौन सा तरीका मेरी जरूरतों के हिसाब से सबसे अच्छा है। इसलिए, मैं आपसे पूछना चाहता हूं:

स्थानों को खोजने के इन दो तरीकों के बीच क्या अंतर हैं (यदि कोई हैं)?


जवाबों:


320

Android पर उपयोगकर्ता स्थान

Android पर उपयोगकर्ता का स्थान प्राप्त करना iOS पर थोड़ा कम सीधा है। भ्रम शुरू करने के लिए, दो अलग-अलग तरीके हैं जो आप कर सकते हैं। पहला Android APIs का उपयोग कर रहा है android.location.LocationListener, और दूसरा Google Play Services API का उपयोग कर रहा है com.google.android.gms.location.LocationListener। चलो दोनों के माध्यम से जाना।

  1. Android का स्थान API

    Android का स्थान API स्थान पाने के लिए तीन अलग-अलग प्रदाताओं का उपयोग करता है -

    • LocationManager.GPS_PROVIDER- यह प्रदाता उपग्रहों का उपयोग करके स्थान निर्धारित करता है। शर्तों के आधार पर, स्थान तय करने के लिए इस प्रदाता को कुछ समय लग सकता है।
    • LocationManager.NETWORK_PROVIDER- यह प्रदाता सेल टॉवर और वाईफाई पहुंच बिंदुओं की उपलब्धता के आधार पर स्थान निर्धारित करता है। परिणाम नेटवर्क लुकअप के माध्यम से प्राप्त होते हैं।
    • LocationManager.PASSIVE_PROVIDER- यह प्रदाता अन्य प्रदाताओं द्वारा उत्पन्न स्थानों को लौटाएगा। जब आप अन्य एप्लिकेशन या सेवाएं वास्तव में स्वयं स्थानों का अनुरोध किए बिना अनुरोध करते हैं, तो आप स्थान अपडेट प्राप्त करते हैं।

इसका सार यह है कि आपको LocationManagerसिस्टम से एक ऑब्जेक्ट मिलता है, इसे लागू करना है LocationListener, और इस requestLocationUpdatesपर कॉल करना है LocationManager

यहाँ एक कोड स्निपेट है:

    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

स्थान रणनीतियों पर Google का एपीआई गाइडबहुत अच्छी तरह से कोड बताते हैं। लेकिन वे यह भी उल्लेख करते हैं कि ज्यादातर मामलों में, आपको Google स्थान सेवा API का उपयोग करके बेहतर बैटरी प्रदर्शन, साथ ही अधिक उपयुक्त सटीकता प्राप्त होगी । अब भ्रम शुरू होता है!

  1. Google का स्थान सेवाएँ API

Google का स्थान सेवाएँ API Google Play Services APK का एक हिस्सा है ( यहाँ इसे कैसे सेट किया जाए )। वे Android के API के ऊपर बने हैं। ये एपीआई उपर्युक्त प्रदाताओं के बजाय "फ्यूज्ड लोकेशन प्रोवाइडर" प्रदान करते हैं। यह प्रदाता सटीकता, बैटरी उपयोग आदि के आधार पर स्वचालित रूप से किस अंतर्निहित प्रदाता का उपयोग करता है, यह चुनता है क्योंकि यह तेज़ है क्योंकि आपको सिस्टम-वाइड सेवा से स्थान मिलता है जो इसे अपडेट करता रहता है। और आप अधिक उन्नत सुविधाओं का उपयोग कर सकते हैं जैसे कि जियोफेंसिंग।

Google की स्थान सेवाओं का उपयोग करने के लिए, आपके ऐप को कनेक्ट करना होगा GooglePlayServicesClient। क्लाइंट से कनेक्ट करने के लिए, आपकी गतिविधि (या टुकड़ा, या तो) को लागू करने GooglePlayServicesClient.ConnectionCallbacksऔर GooglePlayServicesClient.OnConnectionFailedListenerइंटरफेस करने की आवश्यकता है । यहाँ एक नमूना कोड है:

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        locationClient = new LocationClient(this, this, this);
    }

    @Override
    public void onConnected(Bundle bundle) {
    Location location = locationClient.getLastLocation() ;
        Toast.makeText(this, "Connected to Google Play Services", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDisconnected() {
    Toast.makeText(this, "Connected from Google Play Services.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        // code to handle failed connection
        // this code can be found here — http://developer.android.com/training/location/retrieve-current.html 
    }
  • locationClient.getLastLocation()अशक्त क्यों है ?

locationClient.getLastLocation()ग्राहक से अंतिम ज्ञात स्थान हो जाता है। हालाँकि, फ़्यूस्ड स्थान प्रदाता केवल पृष्ठभूमि स्थान बनाए रखेगा यदि कम से कम एक क्लाइंट इससे जुड़ा हो। एक बार जब पहला ग्राहक जुड़ जाता है, तो यह तुरंत एक स्थान पाने की कोशिश करेगा। अपनी गतिविधि पहले ग्राहक कनेक्ट करने के लिए है और आप कहते हैं तो getLastLocation()सही में दूर onConnected(), कि काफी समय पहले स्थान में आने के लिए नहीं हो सकता है। इस में परिणाम होगा locationजा रहा है null

इस समस्या को हल करने के लिए, आपको (अनिश्चित काल तक) इंतजार करना होगा जब तक कि प्रदाता को स्थान न मिल जाए और फिर कॉल करें getLastLocation(), जिसे जानना असंभव है। एक और (बेहतर) विकल्प com.google.android.gms.location.LocationListenerआवधिक स्थान अपडेट प्राप्त करने के लिए इंटरफ़ेस को लागू करना है (और पहला अपडेट प्राप्त करने के बाद इसे बंद कर दें)।

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
    // . . . . . . . . more stuff here 
    LocationRequest locationRequest;
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // . . . . other initialization code
        locationClient = new LocationClient(this, this, this);
    locationRequest = new LocationRequest();
    // Use high accuracy
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        // Set the update interval to 5 seconds
    locationRequest.setInterval(UPDATE_INTERVAL);
        // Set the fastest update interval to 1 second
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    }
    // . . . . . . . . other methods 
    @Override
    public void onConnected(Bundle bundle) {
        Location location = locationClient.getLastLocation();
        if (location == null)
            locationClient.requestLocationUpdates(locationRequest, this);
        else
            Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
    }
    // . . . . . . . . other methods
    @Override
    public void onLocationChanged(Location location) {
        locationClient.removeLocationUpdates(this);
        // Use the location here!!!
    }

इस कोड में, यदि ग्राहक पहले से ही अंतिम स्थान (में onConnected) है , तो आप जाँच कर रहे हैं । यदि नहीं, तो आप onLocationChanged()जैसे ही स्थान अपडेट के लिए अनुरोध कर रहे हैं, और जैसे ही आपको अपडेट प्राप्त होता है, अनुरोध ( कॉलबैक में) स्विच करना ।

ध्यान दें कि कॉलबैक के locationClient.requestLocationUpdates(locationRequest, this);अंदर रहना होगा onConnected, या फिर आपको IllegalStateExceptionइसलिए मिलेगा क्योंकि आप Google Play Services क्लाइंट से कनेक्ट किए बिना स्थानों के लिए अनुरोध करने का प्रयास करेंगे।

  • उपयोगकर्ता ने स्थान सेवाएँ अक्षम कर दी हैं

कई बार, उपयोगकर्ता स्थान सेवाओं को निष्क्रिय कर दिया जाएगा (बैटरी, या गोपनीयता कारणों को बचाने के लिए)। ऐसे मामले में, उपरोक्त कोड अभी भी स्थान अपडेट के लिए अनुरोध onLocationChangedकरेगा , लेकिन कभी भी कॉल नहीं किया जाएगा। यदि उपयोगकर्ता ने स्थान सेवाओं को अक्षम कर दिया है, तो आप जाँच करके अनुरोधों को रोक सकते हैं।

यदि आपके ऐप को उन्हें स्थान सेवाएं सक्षम करने की आवश्यकता है, तो आप एक संदेश या एक टोस्ट दिखाना चाहेंगे। दुर्भाग्य से, यह जांचने का कोई तरीका नहीं है कि क्या उपयोगकर्ता ने Google के स्थान सेवा एपीआई में स्थान सेवाओं को अक्षम कर दिया है। इसके लिए आपको Android के API का सहारा लेना होगा।

आपकी onCreateविधि में:

    LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && !manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
    locationEnabled = false;
    Toast.makeText(getActivity(), "Enable location services for accurate data", Toast.LENGTH_SHORT).show();
}
else locationEnabled = true;

और locationEnabledअपनी onConnectedविधि में ध्वज का उपयोग इस प्रकार करें:

    if (location != null) {
    Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
}
else if (location == null && locationEnabled) {
    locationClient.requestLocationUpdates(locationRequest, this);
}

अपडेट करें

दस्तावेज़ अपडेट किया गया है, LocationClient हटा दिया गया है और एपीआई संवाद से एक क्लिक के साथ जीपीएस को सक्षम करने का समर्थन करता है:

task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
    // All location settings are satisfied. The client can initialize
    // location requests here.
    // ...
}
});

task.addOnFailureListener(this, new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        if (e instanceof ResolvableApiException) {
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                ResolvableApiException resolvable = (ResolvableApiException) e;
                resolvable.startResolutionForResult(MainActivity.this,
                        REQUEST_CHECK_SETTINGS);
            } catch (IntentSender.SendIntentException sendEx) {
                // Ignore the error.
            }
        }
    }
});

लिंक https://developer.android.com/training/location/change-location-settings#prompt

नया स्थान क्लाइंट: FusedLocationProviderClient

  private FusedLocationProviderClient fusedLocationClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}

किसी भी स्थान कार्य को करने से पहले https://developer.android.com/training/location से गुजरने की सलाह दी जाती है।


9
आप यह SettingsApi.checkLocationSettings()जांचने के लिए उपयोग कर सकते हैं कि उपयोगकर्ता ने स्थान सेवाएँ सक्षम की हैं (यहाँ देखें: Developers.google.com/android/reference/com/google/android/gms/… )।
काओलिक

3
LocationClient अब मौजूद नहीं है। स्थान के लिए एक अद्यतन और स्पष्ट गाइड के लिए, कृपया इस लेख को देखें: blog.teamtreehouse.com/beginners-guide-location-android
lm2a

1
और SettingsApi उदाहरण के साथ प्रशिक्षण पृष्ठ: developer.android.com/training/location/…
एंड्रॉइडगूवाई

2
आप एक भू-बाड़ का उपयोग करके भी बना सकते हैं LocationManager! क्या फ़्यूज्ड लोकेशन एप उन उपकरणों पर काम करता है, जिनमें Google Play सेवाएं नहीं हैं?
मुहम्मद बाबर

GPS सक्षम / अक्षम स्थिति की जांच करने के लिए यह एक और बेहतर तरीका हो सकता है fun isLocationEnabled(context: Context): Boolean { val locationMode: Int try { locationMode = Settings.Secure.getInt( context.contentResolver, Settings.Secure.LOCATION_MODE ) } catch (e: SettingNotFoundException) { e.printStackTrace() return false } return locationMode != Settings.Secure.LOCATION_MODE_OFF }
Wahib Ul Haq

32

मेरे अनुभव में, "अधिक उपयुक्त सटीकता" किसी भी तरह से बेहतर नहीं है। जब तक मैं कुछ याद नहीं कर रहा हूं, अगर आप सुनिश्चित करना चाहते हैं कि जीपीएस का उपयोग किया जाता है, तो स्थान प्रबंधक एकमात्र रास्ता है। हम अपने ऐप के साथ वाहनों को ट्रैक करते हैं और फिर से, जब तक मैं कुछ याद नहीं कर रहा हूं, Google Play Services अक्सर बहुत ही गलत स्थान प्रदान करता है।


2
हां, मेरे अनुभव से Google Play Services कुछ समय के लिए गलत स्थान प्रदान करती है।
VY

2
हां, Google Play Services स्थान सेवा API बहुत भ्रामक स्थान जानकारी दे सकता है। वाईफाई मोडेम स्थानांतरित हो जाते हैं, वाईफाई मोडेम गलत स्थान की जानकारी के साथ अपडेट हो जाता है (यानी यदि स्थान एंड्रॉइड डिवाइस द्वारा वाईफाई मोडेम के स्थान को अपडेट करने पर खराब हो जाता है) और अन्य परिस्थितियों के एक मेजबान होते हैं, जिसके परिणामस्वरूप वाईफाई मॉडेम ट्राइएक्यूलेशन से गलत स्थान डेटा हो सकता है। हमारे सभी ऐप्स में जहां सटीक स्थान अनिवार्य है, हम केवल GPS का उपयोग करते हैं।
user1608385

27

आपको स्थान प्रबंधक के बजाय Google Play Services के स्थान एपीआई का उपयोग करना चाहिए। डॉक्स के अनुसार:

Google Play सेवाएं स्थान API आपके ऐप में स्थान जागरूकता जोड़ने के एक तरीके के रूप में Android फ्रेमवर्क स्थान API (android.location) पर पसंद किए जाते हैं। यदि आप वर्तमान में एंड्रॉइड फ्रेमवर्क लोकेशन एपीआई का उपयोग कर रहे हैं, तो आपको जल्द से जल्द Google Play सेवाओं के स्थान API पर स्विच करने के लिए प्रोत्साहित किया जाता है।

स्विच करने के तरीके के कारण, Google यह कहता है:

Google स्थान सेवा API, Google Play Services का हिस्सा, एक अधिक शक्तिशाली, उच्च-स्तरीय ढांचा प्रदान करता है जो स्वचालित रूप से स्थान प्रदाताओं, उपयोगकर्ता आंदोलन और स्थान सटीकता को संभालता है। यह आपके द्वारा प्रदान किए जाने वाले बिजली की खपत के मापदंडों के आधार पर स्थान अपडेट शेड्यूलिंग भी संभालता है। अधिकांश मामलों में, आपको स्थान सेवा API का उपयोग करके बेहतर बैटरी प्रदर्शन, साथ ही अधिक उपयुक्त सटीकता प्राप्त होगी।


2
क्या आपके पास उस दस्तावेज़ के लिंक हैं जिनसे ये उद्धरण हैं? यह देखना दिलचस्प होगा कि क्या Google अब कुछ अलग कह रहा है।
एडवर्ड ब्रे

3
बेशक वे ऐसा कहते हैं, क्योंकि वे आपका स्थान डेटा चाहते हैं!
फ्लाईव्यू

जब आप अपने ऐप में Google play सेवाएं जोड़ते हैं, यदि कोई उपयोगकर्ता आपका ऐप इंस्टॉल करता है, तो उसे इस ऐप का उपयोग करने के लिए Google play सेवाओं को "अपडेट" करने के लिए कहा जाएगा। यदि उसका फोन लगभग भरा हुआ है (व्हाट्सएप मेम्स और सामान के साथ) या उपयोगकर्ता के पास डेटा नहीं है, तो आपको मेरे दोस्त के लिए खेद है
डॉ देओ

2
@Flyview हां! Lol, जिस तरह से वे इसे कहते हैं वह इसे एक जादुई समाधान की तरह लगता है! सबसे बड़ी कमी यह है कि आपको डिवाइस पर Google Play Services की आवश्यकता है !!!
वरुण

25

मैं काफी समय से Google स्थान सेवा API का उपयोग कर रहा हूं। इसके फायदे हैं, क्योंकि यह पदों के निर्धारण के लिए कई स्रोतों के होने की जटिलता का सामना करता है। हालाँकि यह बहुत भारी होता है , ताकि जब आप एक अजीब स्थिति प्राप्त करें, तो आपके पास यह निर्धारित करने का कोई तरीका नहीं है कि वह अजीब स्थिति कहाँ से आई है।

वास्तविक जीवन में मेरे पास कई सनकी मूल्य हैं, जो वास्तविक स्थिति से 10 किलोमीटर दूर है। एकमात्र विवरण यह है कि ये पागल स्थान Googles Wi-Fi या NWK डेटाबेस में त्रुटियों से उपजी हैं - त्रुटियां जो हमेशा रहेंगी, क्योंकि हर दिन वाई-फाई और नेटवर्क टोपोलॉजी बदलते हैं। लेकिन दुर्भाग्य से (और आश्चर्यजनक रूप से) एपीआई आपको कोई जानकारी नहीं देता है कि किसी व्यक्ति की स्थिति कैसे हुई।

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

यह आपको गति, त्वरण, असर आदि पर संभाव्यता जाँच के आधार पर फ़्रीक मानों को फ़िल्टर करने की समस्याओं के साथ छोड़ देता है।

... या अच्छे पुराने फ्रेमवर्क एपीआई पर वापस जाएं और केवल जीपीएस का उपयोग करें, जो कि मैंने तब तक करने का फैसला किया है जब तक कि Google जुड़े हुए एपीआई में सुधार नहीं करता है।


7

Google स्थान सेवा API , Google Play Services का हिस्सा, एक अधिक शक्तिशाली, उच्च-स्तरीय ढांचा प्रदान करता है जो स्वचालित रूप से स्थान प्रदाताओं , उपयोगकर्ता आंदोलन और स्थान सटीकता को संभालता है । यह आपके द्वारा प्रदान किए जाने वाले बिजली की खपत के मापदंडों के आधार पर स्थान अपडेट शेड्यूलिंग भी संभालता है। अधिकांश मामलों में, आपकोस्थान सेवा API का उपयोग करके बेहतर बैटरी प्रदर्शन , साथ ही अधिक उपयुक्त सटीकताप्राप्त होगी।

दो एपीस गूगल प्ले सर्विस लोकेशन एपीआई और एंड्रॉइड फ्रेमवर्क लोकेशन एपीआई के बीच अधिक विस्तृत अंतर यहां देखे जा सकते हैं


मैंने अपने प्रश्न का उत्तर देने के लिए आपके उत्तर का उपयोग किया है यदि यह ठीक है। आपका बहुत बहुत धन्यवाद! stackoverflow.com/questions/39852955/…
लेनियाल

@ Leniaal तो आपको नहीं लगता कि मेरा जवाब सही है?
ध्रुवम गुप्ता

वह 3 साल पुराना दस्तावेज है। लेकिन यहाँ एक प्लस 1
ड्रू

5

हां, Google Play Services स्थान सेवा API बहुत भ्रामक स्थान जानकारी दे सकता है। वाईफाई मोडेम स्थानांतरित हो जाते हैं, वाईफाई मोडेम गलत स्थान की जानकारी के साथ अपडेट हो जाता है (यानी यदि स्थान एंड्रॉइड डिवाइस द्वारा वाईफाई मोडेम के स्थान को अपडेट करने पर खराब हो जाता है) और अन्य परिस्थितियों के एक मेजबान होते हैं, जिसके परिणामस्वरूप वाईफाई मॉडेम ट्राइएक्यूलेशन से गलत स्थान डेटा हो सकता है। हमारे सभी ऐप्स में जहां सटीक स्थान अनिवार्य है, हम केवल GPS का उपयोग करते हैं।


3

जीपीएस सेवा के आधार पर दो एपिस Google Play सर्विस लोकेशन एपीआई और एंड्रॉइड फ्रेमवर्क लोकेशन एपीआई के बीच की विभिन्नता

FusedLocationProviderClient

  1. 1 भ्रूण के लिए, स्थान शून्य नहीं होना चाहिए (यानी: कुछ अन्य ऐप को GoogleplayService डेटाबेस में अंतिम स्थान को अपडेट करने की आवश्यकता है। यदि यह शून्य है, तो इसके आसपास काम करने की आवश्यकता है)
  2. अगले अनुक्रमिक फ़ेच के लिए, यह requestLocationUpdates()स्थान लाने के लिए विधि का उपयोग करता है ।
  3. स्थान लाने का आधार केवल locationRequest.setInterval(milliseconds)और है setFastestInterval(milliseconds), न कि उपयोगकर्ता स्थान परिवर्तन के आधार पर
  4. लौटेलंग मान में केवल 7 दशमलव मान हैं (उदाहरण: 11.9557996, 79.8234599), सटीक नहीं
  5. अनुशंसित, जब आपकी एप्लिकेशन आवश्यकता वर्तमान स्थान की दूरी (50 - 100 मीटर सटीकता) के नगण्य हो जाती है
  6. बैटरी उपयोग में प्रभावी।

स्थान प्रबंधक Api

  1. उपयोक्ता स्थान लाने के लिए लोकेशन का उपयोग किया जाता है। manager.requestLocationUpdates ()
  2. उपयोगकर्ता स्थान परिवर्तन और समय अंतराल के आधार पर स्थान प्राप्त करना locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, milliseconds, mindistance, Mylocationlistener)

  3. लौटेलंग मान में 14 दशमलव मान हैं (उदाहरण: 11.94574594963342 79.81166719458997) सटीक स्थान मान

  4. स्थान आधारित ऐप के लिए अनुशंसित , जब मीटर में भी अधिक सटीकता की आवश्यकता होती है।
  5. बैटरी का उपयोग भ्रूण के अंतराल और भ्रूण की दूरी पर आधारित है

हे! 1 ° सबसे अधिक 111_111 मीटर (20_000_000 / 180) पर है। तो, 0.0000001 ° 0.011m = 1 सेमी है। मुझे नहीं पता कि आपको बेहतर GPS रिज़ॉल्यूशन की आवश्यकता कहाँ है। और मुझे यह भी पता नहीं है कि आप बेहतर जीपीएस रिज़ॉल्यूशन कैसे प्राप्त कर सकते हैं।
बाबई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.