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>
अनुमतियों के बारे में ज़्यादा पढ़ें और शुरू करने के लिए, Easyअनुमतियां का इस्तेमाल करने के बारे में सोचें.
वर्तमान स्थान पाएं
जिस जगह पर डिवाइस मौजूद है वहां का स्थानीय कारोबार या कोई दूसरी जगह ढूंढने के लिए, यह तरीका अपनाएं:
ContextCompat.checkSelfPermission
को कॉल करके पता लगाएं कि उपयोगकर्ता ने अपने डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति दी है या नहीं. आपके ऐप्लिकेशन में कोड भी शामिल होना चाहिए, ताकि उपयोगकर्ता को अनुमति दी जा सके और नतीजे को हैंडल कर सके. ज़्यादा जानकारी के लिए, ऐप्लिकेशन अनुमतियों का अनुरोध करना देखें.- एक
FindCurrentPlaceRequest
बनाएं, जोPlace.Field
में सेList
पास करेगा. साथ ही, यह भी बताना होगा कि आपके ऐप्लिकेशन को किस तरह का डेटा टाइप अनुरोध करना चाहिए. - पिछले चरण में बनाए गए
FindCurrentPlaceRequest
को पास करते हुएPlacesClient.findCurrentPlace()
को कॉल करें. FindCurrentPlaceResponse
सेPlaceLikelihood
की सूची पाएं.
फ़ील्ड, जगह के हिसाब से खोज के नतीजों से मेल खाते हैं और इन्हें तीन बिलिंग कैटगरी में बांटा जाता है: बेसिक, संपर्क, और माहौल. बुनियादी फ़ील्ड की बिलिंग, मूल दर के हिसाब से होती है. इसके लिए अलग से शुल्क नहीं लिया जाता. संपर्क और वायुमंडल के फ़ील्ड की लागत ज़्यादा होती है. 'जगह की जानकारी के डेटा के लिए अनुरोधों' का बिल भेजने के तरीके के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल और बिलिंग देखें.
एपीआई
Task
में
FindCurrentPlaceResponse
दिखाता है.
FindCurrentPlaceResponse
में PlaceLikelihood
ऑब्जेक्ट की एक सूची होती है. इस सूची में उन जगहों की जानकारी होती है जहां डिवाइस हो सकता है. हर जगह के लिए, नतीजे में इस बात का संकेत दिया जाता है कि वह जगह सही है या नहीं. अगर दी गई डिवाइस से जुड़ी जगह की जानकारी मौजूद नहीं है, तो सूची खाली हो सकती है.
Place
ऑब्जेक्ट को वापस लाने के लिए, PlaceLikelihood.getPlace()
को कॉल करें और संभावना की रेटिंग पाने के लिए PlaceLikelihood.getLikelihood()
पर कॉल करें. ज़्यादा वैल्यू का मतलब है कि
इस बात की ज़्यादा संभावना है कि जगह से सबसे ज़्यादा मेल खाए.
कोड का यह नमूना उन जगहों की सूची बनाता है जहां आपके डिवाइस के मौजूद होने की संभावना सबसे ज़्यादा है. साथ ही, हर जगह के नाम और संभावना की जानकारी देता है.
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(); }
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() }
संभावित मानों के बारे में नोट:
- संभावना से यह पता चलता है कि किसी एक अनुरोध के लिए, बताई गई जगहों की सूची में उस जगह का सबसे अच्छा मिलान क्या है. अलग-अलग अनुरोधों की संभावना की तुलना नहीं की जा सकती.
- संभावना का मान 0.0 और 1.0 के बीच होगा.
उदाहरण के लिए, सही जगह स्थान A की 55% संभावना है और संभावना है कि 35% संभावना है कि यह जगह B है, तो जवाब के दो सदस्य हैं, जगह A की संभावना 0.55 है, और स्थान B 0.35 संभावना है.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना
जब आपका ऐप्लिकेशन
PlacesClient.findCurrentPlace()
से मिली जानकारी दिखाता है,
तो ऐप्लिकेशन में भी एट्रिब्यूशन दिखने चाहिए. एट्रिब्यूशन से जुड़े दस्तावेज़ देखें.