Android के लिए Places SDK टूल का इस्तेमाल करके, डिवाइस की रिपोर्ट की गई मौजूदा जगह पर कोई जगह खोजी जा सकती है. जगहों के उदाहरणों में स्थानीय कारोबार, लोकप्रिय जगहें, और भौगोलिक जगहें शामिल हैं.
अनुमतियां
लाइब्रेरी का इस्तेमाल करने के लिए, आपको अपने ऐप्लिकेशन के मेनिफ़ेस्ट में किसी भी अतिरिक्त अनुमति के बारे में बताने की ज़रूरत नहीं है.
इसकी वजह यह है कि लाइब्रेरी, अपने मेनिफ़ेस्ट में इस्तेमाल की जाने वाली सभी अनुमतियों के बारे में बताती है. हालांकि, अगर आपका ऐप्लिकेशन
PlacesClient.findCurrentPlace()
का इस्तेमाल करता है, तो आपको रनटाइम के दौरान जगह की जानकारी की अनुमतियों का अनुरोध करना होगा.
अगर आपका ऐप्लिकेशन PlacesClient.findCurrentPlace()
का इस्तेमाल नहीं करता है, तो अपने मेनिफ़ेस्ट में इन चीज़ों को जोड़कर, लाइब्रेरी से मिली ACCESS_FINE_LOCATION
और ACCESS_COARSE_LOCATION
अनुमतियों को साफ़ तौर पर हटाएं:
<manifest ... xmlns:tools="http://schemas.android.com/tools"> ... <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/> ... </manifest>
अनुमतियों के बारे में और पढ़ें और शुरू करने के लिए EasyPermissions का इस्तेमाल करके देखें.
वर्तमान स्थान पाएं
इस तरीके का इस्तेमाल करके स्थानीय कारोबार या डिवाइस की मौजूदा जगह ढूंढने के लिए यह तरीका अपनाएं:
ContextCompat.checkSelfPermission
को कॉल करके पता करें कि उपयोगकर्ता ने अपने डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति दी है या नहीं. आपके ऐप्लिकेशन में कोड भी शामिल होना चाहिए, ताकि उपयोगकर्ता को अनुमति देने और नतीजे मैनेज करने के लिए कहा जा सके. ज़्यादा जानकारी के लिए, ऐप्लिकेशन अनुमतियों का अनुरोध करना देखें.- अपने ऐप्लिकेशन को जगह के लिए जिस तरह के डेटा का अनुरोध करना चाहिए उसकी जानकारी देने के लिए एक
FindCurrentPlaceRequest
बनाएं. इसमेंPlace.Field
काList
पास करें. - कॉल
PlacesClient.findCurrentPlace()
को उसFindCurrentPlaceRequest
पास करते हुए करें जो आपने पिछले चरण में बनाया था. FindCurrentPlaceResponse
सेPlaceLikelihood
की सूची पाएं.
फ़ील्ड, जगह के बारे में खोज के नतीजों के हिसाब से होते हैं और इन्हें तीन बिलिंग कैटगरी में बांटा जाता है: बुनियादी, संपर्क, और माहौल. बेसिक फ़ील्ड की बिलिंग, मूल दर के हिसाब से की जाती है. इसके लिए, अलग से कोई शुल्क नहीं देना पड़ता. संपर्क और वातावरण फ़ील्ड के लिए ज़्यादा शुल्क लिया जाता है. जगह के डेटा के अनुरोधों की बिलिंग कैसे की जाती है, इस बारे में ज़्यादा जानकारी के लिए इस्तेमाल और बिलिंग देखें.
एपीआई, Task
में
FindCurrentPlaceResponse
दिखाता है.
FindCurrentPlaceResponse
में
PlaceLikelihood
ऑब्जेक्ट की एक सूची होती है. यह ऐसी जगहों के बारे में बताती है जहां डिवाइस हो सकता है. हर जगह के लिए, नतीजे में यह बताया जाता है कि वह जगह सही है या नहीं. अगर दिए गए डिवाइस की जगह से जुड़ी कोई जगह मौजूद नहीं है, तो
सूची खाली हो सकती है.
किसी Place
ऑब्जेक्ट को फिर से हासिल करने के लिए, PlaceLikelihood.getPlace()
को कॉल करें. साथ ही, किसी जगह की संभावित रेटिंग पाने के लिए PlaceLikelihood.getLikelihood()
को कॉल करें. वैल्यू ज़्यादा होने का मतलब है कि इस बात की संभावना बढ़ जाएगी कि वह जगह सबसे ज़्यादा मेल खाती है.
नीचे दिया गया कोड सैंपल, उन जगहों की सूची हासिल करता है जहां डिवाइस के मौजूद होने की संभावना सबसे ज़्यादा है. साथ ही, यह हर जगह के नाम और उनकी संभावना की जानकारी लॉग करता है.
Kotlin
// Use fields to define the data types to return. val placeFields: List<Place.Field> = listOf(Place.Field.NAME) // Use the builder to create a FindCurrentPlaceRequest. val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields) // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { val placeResponse = placesClient.findCurrentPlace(request) placeResponse.addOnCompleteListener { task -> if (task.isSuccessful) { val response = task.result for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) { Log.i( TAG, "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}" ) } } else { val exception = task.exception if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } } } } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission() }
Java
// Use fields to define the data types to return. List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME); // Use the builder to create a FindCurrentPlaceRequest. FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields); // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request); placeResponse.addOnCompleteListener(task -> { if (task.isSuccessful()){ FindCurrentPlaceResponse response = task.getResult(); for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) { Log.i(TAG, String.format("Place '%s' has likelihood: %f", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } } else { Exception exception = task.getException(); if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } } }); } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission(); }
संभावित वैल्यू के बारे में नोट:
- संभावना से, एक अनुरोध के लिए, दिखाई गई जगहों की सूची में उस जगह की संभावना की जानकारी मिलती है जो सबसे अच्छी तरह मेल खाती है. अलग-अलग अनुरोधों के हिसाब से, मिलने वाली संभावना की तुलना नहीं की जा सकती.
- संभावना की वैल्यू 0.0 और 1.0 के बीच होगी.
उदाहरण के लिए, जगह A की सही जगह और 35% जगह B होने की संभावना 55% दिखाने के लिए, जवाब के दो सदस्य हैं. जगह A के लिए 0.55 और जगह B के 0.35 होने की संभावना है.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाएं
जब आपका ऐप्लिकेशन
PlacesClient.findCurrentPlace()
से मिली जानकारी दिखाता है,
तो ऐप्लिकेशन को एट्रिब्यूशन भी दिखाने चाहिए. एट्रिब्यूशन
से जुड़ा दस्तावेज़ देखें.