1. शुरू करने से पहले
अपने उपयोगकर्ताओं को उनकी मौजूदा जगह की जानकारी का पता लगाने के लिए, जगहों की सूची दिखाने का तरीका जानें. इसके लिए, Google Maps Platform और Places SDK for Android का इस्तेमाल करें.
ज़रूरी शर्तें
- Java की बुनियादी जानकारी
आपको क्या करना होगा
- Android ऐप्लिकेशन में मैप जोड़ना.
- उपयोगकर्ता की जगह की जानकारी का पता लगाने के लिए, जगह की जानकारी की अनुमतियों का इस्तेमाल करें.
- यह कुकी, उपयोगकर्ता की मौजूदा जगह के आस-पास की जगहों की जानकारी फ़ेच करती है.
- उपयोगकर्ता को उसकी मौजूदा जगह की पहचान करने के लिए, संभावित जगहों की जानकारी देना.
आपको क्या बनाना है
आपको अपना Android ऐप्लिकेशन शुरू से बनाना होगा. हालांकि, डीबग करते समय तुलना करने के लिए, सैंपल कोड डाउनलोड किया जा सकता है. GitHub से सैंपल कोड डाउनलोड करें. इसके अलावा, अगर आपने कमांड-लाइन के लिए Git सेट अप किया है, तो यह डालें:
git clone https://github.com/googlecodelabs/current-place-picker-android.git
अगर आपको इस कोडलैब को पूरा करते समय कोई समस्या (कोड में गड़बड़ियां, व्याकरण की गलतियां, शब्दों का सही इस्तेमाल न होना या कोई अन्य समस्या) आती है, तो कृपया कोडलैब के निचले बाएं कोने में मौजूद, गड़बड़ी की शिकायत करें लिंक के ज़रिए समस्या की शिकायत करें.
2. शुरू करें
इस कोडलैब को शुरू करने से पहले, आपको ये चीज़ें सेट अप करनी होंगी:
Android Studio
Android Studio को https://developer.android.com/studio से डाउनलोड करें.
अगर आपके पास पहले से ही Android Studio है, तो पक्का करें कि आपके पास इसका नया वर्शन हो. इसके लिए, Android Studio > अपडेट देखें... पर क्लिक करें.
इस लैब को Android Studio 3.4 का इस्तेमाल करके लिखा गया था.
Android SDK
Android Studio में, एसडीके मैनेजर का इस्तेमाल करके अपने हिसाब से एसडीके टूल कॉन्फ़िगर किए जा सकते हैं. इस लैब में Android Q SDK का इस्तेमाल किया जाता है.
- Android Studio की वेलकम स्क्रीन पर, कॉन्फ़िगर करें > SDK मैनेजर पर क्लिक करें.
- अपनी पसंद के एसडीके का चेकबॉक्स चुनें. इसके बाद, लागू करें पर क्लिक करें.
अगर आपके पास SDK टूल नहीं है, तो इससे आपके डिवाइस पर SDK टूल डाउनलोड होना शुरू हो जाएगा.
Google Play सेवाएं
SDK मैनेजर से, आपको Google Play services भी इंस्टॉल करनी होंगी.
- SDK टूल टैब पर क्लिक करें और Google Play सेवाएं चेकबॉक्स को चुनें.
अगर स्थिति अपडेट उपलब्ध है के तौर पर दिखती है, तो अपडेट करें.
3. एम्युलेटर तैयार करना
ऐप्लिकेशन को चलाने के लिए, अपने डिवाइस को कनेक्ट किया जा सकता है या Android Emulator का इस्तेमाल किया जा सकता है.
अगर आपको अपने डिवाइस का इस्तेमाल करना है, तो इस पेज के आखिर में दिए गए असली डिवाइस से जुड़े निर्देश: Google Play services को अपडेट करना पर जाएं.
इम्यूलेटर जोड़ना
- Android Studio की वेलकम स्क्रीन पर, कॉन्फ़िगर करें > AVD मैनेजर पर क्लिक करें.
इससे Android Virtual Device Manager डायलॉग खुलता है.
- Create Virtual Device... पर क्लिक करें. इससे, उन डिवाइसों की सूची खुल जाएगी जिन्हें चुना जा सकता है.
- Play Store कॉलम में, Play
आइकॉन वाला कोई डिवाइस चुनें और आगे बढ़ें पर क्लिक करें.
आपको सिस्टम इमेज का एक सेट दिखेगा, जिसे इंस्टॉल किया जा सकता है. अगर Android 9.+ (Google Play) को टारगेट करने वाले Q के बगल में Download लिखा है, तो Download पर क्लिक करें.
- अपने वर्चुअल डिवाइस को नाम देने के लिए, आगे बढ़ें पर क्लिक करें. इसके बाद, पूरा करें पर क्लिक करें.
इसके बाद, आपको आपके वर्चुअल डिवाइस की सूची पर वापस ले जाया जाएगा.
- अपने नए डिवाइस के बगल में मौजूद, शुरू करें
पर क्लिक करें:
कुछ ही देर में, एम्युलेटर खुल जाएगा.
एम्युलेटर के लिए निर्देश—Google Play services को अपडेट करना
- एम्युलेटर लॉन्च होने के बाद, दिखने वाले नेविगेशन बार में ... पर क्लिक करें**.**
इससे ज़्यादा कंट्रोल डायलॉग बॉक्स खुलता है.
- मेन्यू में जाकर, Google Play पर क्लिक करें.
अगर कोई अपडेट उपलब्ध है, तो अपडेट करें पर क्लिक करें.
- Google खाते से एम्युलेटर में साइन इन करें.
अपने निजी डेटा को टेस्टिंग से अलग रखने के लिए, अपने खाते का इस्तेमाल किया जा सकता है. इसके अलावा, बिना किसी शुल्क के नया खाता भी बनाया जा सकता है.
इसके बाद, Google Play services के लिए Google Play खुलता है.
- Google Play services का नया वर्शन पाने के लिए, अपडेट करें पर क्लिक करें.
अगर आपसे खाता सेटअप करने और पेमेंट का तरीका जोड़ने के लिए कहा जाता है, तो अभी नहीं पर क्लिक करें.
एम्युलेटर में जगह की जानकारी सेट करना
- इम्यूलेटर लॉन्च होने के बाद, Google Maps ऐप्लिकेशन का आइकॉन देखने के लिए, होम स्क्रीन पर मौजूद खोज बार में "maps" टाइप करें.
- लॉन्च करने के लिए आइकॉन पर क्लिक करें.
आपको एक डिफ़ॉल्ट मैप दिखता है.
- मैप के सबसे नीचे दाईं ओर, आपकी जगह की जानकारी
पर क्लिक करें.
आपको फ़ोन की जगह की जानकारी का इस्तेमाल करने के लिए, फ़ोन को अनुमतियां देने के लिए कहा जाता है.
- एक्सटेंडेड कंट्रोल मेन्यू खोलने के लिए, ... पर क्लिक करें.
- स्थान टैब पर क्लिक करें.
- अक्षांश और देशांतर डालें.
यहां अपनी पसंद के हिसाब से कुछ भी डालें. हालांकि, पक्का करें कि वह जगह ऐसी हो जहां कई जगहें मौजूद हों.
(इस कोडलैब से मिले नतीजों को दोहराने के लिए, हवाई के मॉई में किहेई शहर के लिए अक्षांश 20.7818 और देशांतर -156.4624 का इस्तेमाल करें.)
- भेजें पर क्लिक करें. इसके बाद, मैप पर यह जगह अपडेट हो जाएगी.
अब आपके पास ऐप्लिकेशन को चलाने और जगह की जानकारी के साथ उसकी जांच करने का विकल्प है.
असली डिवाइस के लिए निर्देश—Google Play services को अपडेट करना
अगर किसी Android डिवाइस का इस्तेमाल किया जा रहा है, तो यह तरीका अपनाएं:
- होम स्क्रीन पर मौजूद खोज बार का इस्तेमाल करके, Google Play services खोजें और खोलें.
- ज़्यादा जानकारी पर क्लिक करें.
अगर कोई अपडेट उपलब्ध है, तो अपडेट करें पर क्लिक करें.
4. Google Maps गतिविधि के साथ ऐप्लिकेशन शेल बनाना
- Android Studio की वेलकम स्क्रीन पर, Start a new Android Studio project को चुनें.
- फ़ोन और टैबलेट टैब पर, Google Maps गतिविधि चुनें.
अपने प्रोजेक्ट को कॉन्फ़िगर करें डायलॉग बॉक्स खुलता है. यहां आपको अपने ऐप्लिकेशन का नाम डालना होता है. साथ ही, अपने डोमेन के आधार पर पैकेज बनाना होता है.
यहां Current Place नाम के ऐप्लिकेशन की सेटिंग दी गई हैं. यह com.google.codelab.currentplace
पैकेज से जुड़ा है.
- भाषा के तौर पर Java चुनें और androidx. artifacts का इस्तेमाल करें* को चुनें.
बाकी सेटिंग के लिए डिफ़ॉल्ट वैल्यू का इस्तेमाल करें.
- पूरा करें पर क्लिक करें.
5. Gradle बिल्ड फ़ाइल में Google सेवाओं की डिपेंडेंसी जोड़ना
Android में जगह की जानकारी की अनुमतियां ऐक्सेस करने के लिए, आपको Google Play services से Google Location और Activity Recognition API की ज़रूरत होती है. इस और Google Play services के अन्य एपीआई को जोड़ने के बारे में ज़्यादा जानकारी के लिए, Google Play services सेट अप करना लेख पढ़ें.
Android Studio प्रोजेक्ट में आम तौर पर दो build.gradle
फ़ाइलें होती हैं. एक फ़ाइल पूरे प्रोजेक्ट के लिए होती है और दूसरी ऐप्लिकेशन के लिए. अगर आपके पास Android Studio प्रोजेक्ट एक्सप्लोरर में Android व्यू है, तो आपको ये दोनों फ़ाइलें Gradle Scripts
फ़ोल्डर में दिखेंगी. Google की सेवाएं जोड़ने के लिए, आपको build.gradle (Module: app)
फ़ाइल में बदलाव करना होगा.
- जगह की जानकारी और Places API के लिए Google की सेवाएं जोड़ने के लिए,
dependencies
सेक्शन में दो लाइनें जोड़ें ( कॉन्टेक्स्ट में सैंपल कोड).
build.gradle (Module: app)
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.google.codelab.currentplace"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.libraries.places:places:1.1.0'
}
6. Google Maps Platform API चालू करना और एपीआई पासकोड पाना
इसके बाद , आपको Android के लिए Maps SDK और Places API चालू करना होगा.
Google Maps Platform सेट अप करना
अगर आपके पास Google Cloud Platform खाता और बिलिंग की सुविधा वाला प्रोजेक्ट नहीं है, तो बिलिंग की सुविधा वाला खाता और प्रोजेक्ट बनाएं. ऐसा करने का तरीका जानने के लिए, कृपया Google Maps Platform का इस्तेमाल शुरू करना देखें.
- Cloud Console में, प्रोजेक्ट वाले ड्रॉप-डाउन मेन्यू पर क्लिक करें. इसके बाद, उस प्रोजेक्ट को चुनें जिसे इस कोडलैब के लिए इस्तेमाल करना है.
- इस कोडलैब के लिए ज़रूरी Google Maps Platform API और एसडीके को Google Cloud Marketplace में जाकर चालू करें. ऐसा करने के लिए, इस वीडियो या दस्तावेज़ में बताया गया तरीका अपनाएं.
- Cloud Console के क्रेडेंशियल पेज पर जाकर, एक एपीआई पासकोड जनरेट करें. ऐसा करने के लिए, इस वीडियो या दस्तावेज़ में बताया गया तरीका अपनाएं. Google Maps Platform का इस्तेमाल करने के लिए, एपीआई पासकोड ज़रूरी है.
अभी बनाई गई एपीआई कुंजी को कॉपी करें. Android Studio पर वापस जाएं और Android > app > res > values में जाकर, google_maps_api.xml
फ़ाइल ढूंढें.
YOUR_KEY_HERE
को उस एपीआई पासकोड से बदलें जिसे आपने कॉपी किया है.
आपका ऐप्लिकेशन अब कॉन्फ़िगर हो गया है.
7. लेआउट फ़ाइल में बदलाव करना
- प्रोजेक्ट एक्सप्लोरर में, Android >
app
>res
>layout
में मौजूदactivity_maps.xml
फ़ाइल खोलें.
- आपको स्क्रीन के दाईं ओर बुनियादी यूज़र इंटरफ़ेस (यूआई) दिखेगा. साथ ही, सबसे नीचे टैब दिखेंगे. इनकी मदद से, अपने लेआउट के लिए डिज़ाइन या टेक्स्ट एडिटर चुना जा सकता है. टेक्स्ट चुनें. इसके बाद, लेआउट फ़ाइल के पूरे कॉन्टेंट को इससे बदलें:
activity_maps.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:titleTextColor="@android:color/white"
android:background="@color/colorPrimary" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="349dp"
tools:context=".MapsActivity" />
<ListView
android:id="@+id/listPlaces"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
इससे आपको ऐसा यूज़र इंटरफ़ेस मिलेगा:
8. ऐप्लिकेशन बार सेट अप करना
जब उपयोगकर्ता को अपनी मौजूदा जगह चुननी हो, तब उसे क्लिक करने के लिए एक बटन दें. इसके लिए, ऐप्लिकेशन बार में एक ऐसा आइकॉन जोड़ें जो उपयोगकर्ता की मौजूदा जगह का पता लगाता हो और आस-पास की संभावित जगहों को दिखाता हो. यह कुछ ऐसा दिखाई देगा:
फ़ोन पर, सिर्फ़ आइकॉन दिखता है. ज़्यादा जगह वाले टैबलेट पर, टेक्स्ट भी शामिल किया जाता है.
आइकॉन बनाना
- प्रोजेक्ट एक्सप्लोरर में, Android > app पर क्लिक करें. इसके बाद, res फ़ोल्डर पर राइट क्लिक करें और नया > इमेज ऐसेट को चुनें.
ऐसेट स्टूडियो खुल जाएगा.
- आइकॉन टाइप मेन्यू में, ऐक्शन बार और टैब आइकॉन पर क्लिक करें.
- अपनी ऐसेट को नाम दें
ic_geolocate
. - ऐसेट टाइप के तौर पर क्लिप आर्ट चुनें**.**
- क्लिप आर्ट के बगल में मौजूद ग्राफ़िक पर क्लिक करें.
इससे आइकॉन चुनें विंडो खुलती है.
- एक आइकॉन चुनें.
अपने मकसद से जुड़े आइकॉन ढूंढने के लिए, खोज बार का इस्तेमाल किया जा सकता है.
location
खोजें और जगह से जुड़ा कोई आइकॉन चुनें.
मेरी जगह आइकॉन, Google Maps ऐप्लिकेशन में इस्तेमाल किए गए आइकॉन जैसा ही होता है. इसका इस्तेमाल तब किया जाता है, जब कोई उपयोगकर्ता कैमरे को अपनी मौजूदा जगह पर स्नैप करना चाहता है.
- ठीक है > अगला > खत्म करें पर क्लिक करें. इसके बाद,पुष्टि करें कि
drawable
नाम का एक नया फ़ोल्डर मौजूद है. इसमें आपके नए आइकॉन की फ़ाइलें मौजूद होंगी.
स्ट्रिंग रिसॉर्स जोड़ना
- प्रोजेक्ट एक्सप्लोरर में, Android > app > res > values पर क्लिक करें. इसके बाद,
strings.xml
फ़ाइल खोलें. <string name="title_activity_maps">Map</string>
के बाद ये लाइनें जोड़ें:
strings.xml
<string name="action_geolocate">Pick Place</string>
<string name="default_info_title">Default Location</string>
<string name="default_info_snippet">No places found, because location permission is disabled.</string>
पहली लाइन का इस्तेमाल आपके ऐप्लिकेशन बार में तब किया जाता है, जब आइकॉन के बगल में टेक्स्ट लेबल शामिल करने के लिए जगह होती है. अन्य कुकी का इस्तेमाल, मैप में जोड़े गए मार्कर के लिए किया जाता है.
अब फ़ाइल में मौजूद कोड ऐसा दिखता है:
<resources>
<string name="app_name">Current Place</string>
<string name="title_activity_maps">Map</string>
<string name="action_geolocate">Pick Place</string>
<string name="default_info_title">Default Location</string>
<string name="default_info_snippet">No places found, because location permission is disabled.</string>
</resources>
ऐप्लिकेशन बार जोड़ना
- प्रोजेक्ट एक्सप्लोरर में, Android > app पर क्लिक करें. इसके बाद,
res
फ़ोल्डर पर राइट क्लिक करें और नया > डायरेक्ट्री को चुनें. इससेapp/src/main/res
के नीचे एक नई सबडायरेक्ट्री बन जाएगी. - डायरेक्ट्री
menu
को नाम दें. menu
फ़ोल्डर पर राइट क्लिक करें और नया > फ़ाइल चुनें.- फ़ाइल को
menu.xml
नाम दें. - इस कोड को चिपकाएं:
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- "Locate me", should appear as action button if possible -->
<item
android:id="@+id/action_geolocate"
android:icon="@drawable/ic_geolocate"
android:title="@string/action_geolocate"
app:showAsAction="always|withText" />
</menu>
ऐप्लिकेशन बार का स्टाइल अपडेट करना
- प्रोजेक्ट एक्सप्लोरर में, Android >
app
>res
>values
को बड़ा करें. इसके बाद,styles.xml
फ़ाइल खोलें. <style>
टैग में, पैरंट प्रॉपर्टी को"Theme.AppCompat.NoActionBar"
के तौर पर बदलें.name
प्रॉपर्टी को नोट करें. इसका इस्तेमाल अगले चरण में किया जाएगा.
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
AndroidManifest.xml में ऐप्लिकेशन की थीम अपडेट करें
- Android >
app
>manifests
पर क्लिक करें. इसके बाद,AndroidManifest.xml
फ़ाइल खोलें. android:theme
लाइन ढूंढें और@style/AppTheme
के लिए वैल्यू में बदलाव करें या पुष्टि करें.
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
अब कोडिंग शुरू की जा सकती है!
9. ऐप्लिकेशन शुरू करना
- प्रोजेक्ट एक्सप्लोरर में जाकर,
MapsActivity.java
फ़ाइल ढूंढें.
यह उस फ़ोल्डर में होता है जो आपने पहले चरण में अपने ऐप्लिकेशन के लिए बनाया था.
- फ़ाइल खोलें. इसके बाद, आपको Java कोड एडिटर दिखेगा.
Places SDK और अन्य डिपेंडेंसी इंपोर्ट करना
इन लाइनों को MapsActivity.java
के सबसे ऊपर जोड़ें. साथ ही, इंपोर्ट करने के मौजूदा स्टेटमेंट बदलें.
इनमें मौजूदा इंपोर्ट शामिल हैं. साथ ही, इस कोडलैब में कोड में इस्तेमाल किए गए कई और इंपोर्ट भी शामिल हैं.
MapsActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.api.model.PlaceLikelihood;
import com.google.android.libraries.places.api.net.FindCurrentPlaceRequest;
import com.google.android.libraries.places.api.net.FindCurrentPlaceResponse;
import com.google.android.libraries.places.api.net.PlacesClient;
import java.util.Arrays;
import java.util.List;
क्लास के हस्ताक्षर अपडेट करना
Places API, AndroidX कॉम्पोनेंट का इस्तेमाल करता है, ताकि पुराने वर्शन के साथ काम करने की सुविधा दी जा सके. इसलिए, AppCompatActivity
को बढ़ाने के लिए आपको इसे तय करना होगा. यह FragmentActivity
एक्सटेंशन की जगह लेता है, जिसे मैप से जुड़ी गतिविधि के लिए डिफ़ॉल्ट रूप से तय किया जाता है.
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
क्लास वैरिएबल जोड़ना
इसके बाद, अलग-अलग क्लास के तरीकों में इस्तेमाल किए गए अलग-अलग क्लास वैरिएबल के बारे में बताएं. इनमें यूज़र इंटरफ़ेस (यूआई) एलिमेंट और स्टेटस कोड शामिल हैं. ये GoogleMap mMap
के लिए वैरिएबल के एलान के ठीक नीचे होने चाहिए.
// New variables for Current Place picker
private static final String TAG = "MapsActivity";
ListView lstPlaces;
private PlacesClient mPlacesClient;
private FusedLocationProviderClient mFusedLocationProviderClient;
// The geographical location where the device is currently located. That is, the last-known
// location retrieved by the Fused Location Provider.
private Location mLastKnownLocation;
// A default location (Sydney, Australia) and default zoom to use when location permission is
// not granted.
private final LatLng mDefaultLocation = new LatLng(-33.8523341, 151.2106085);
private static final int DEFAULT_ZOOM = 15;
private static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1;
private boolean mLocationPermissionGranted;
// Used for selecting the Current Place.
private static final int M_MAX_ENTRIES = 5;
private String[] mLikelyPlaceNames;
private String[] mLikelyPlaceAddresses;
private String[] mLikelyPlaceAttributions;
private LatLng[] mLikelyPlaceLatLngs;
onCreate तरीके को अपडेट करना
आपको onCreate
तरीके को अपडेट करना होगा. इससे जगह की जानकारी देने वाली सेवाओं के लिए, रनटाइम के दौरान उपयोगकर्ता की अनुमतियों को मैनेज किया जा सकेगा. साथ ही, यूज़र इंटरफ़ेस (यूआई) एलिमेंट सेट अप किए जा सकेंगे और Places API क्लाइंट बनाया जा सकेगा.
ऐक्शन टूलबार, व्यू सेटअप, और Places क्लाइंट के बारे में कोड की इन लाइनों को मौजूदा onCreate()
तरीके के आखिर में जोड़ें.
MapsActivity.java onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
//
// PASTE THE LINES BELOW THIS COMMENT
//
// Set up the action toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Set up the views
lstPlaces = (ListView) findViewById(R.id.listPlaces);
// Initialize the Places client
String apiKey = getString(R.string.google_maps_key);
Places.initialize(getApplicationContext(), apiKey);
mPlacesClient = Places.createClient(this);
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
}
ऐप्लिकेशन बार मेन्यू के लिए कोड जोड़ना
इन दोनों तरीकों से, ऐप्लिकेशन बार मेन्यू (जिसमें एक आइटम होता है, पिक प्लेस आइकॉन) जोड़ा जाता है. साथ ही, आइकॉन पर उपयोगकर्ता के क्लिक को हैंडल किया जाता है.
onCreate
तरीके के बाद, इन दोनों तरीकों को अपनी फ़ाइल में कॉपी करें.
MapsActivity.java onCreateOptionsMenu() और onOptionsItemSelected()
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_geolocate:
// COMMENTED OUT UNTIL WE DEFINE THE METHOD
// Present the current place picker
// pickCurrentPlace();
return true;
default:
// If we got here, the user's action was not recognized.
// Invoke the superclass to handle it.
return super.onOptionsItemSelected(item);
}
}
इसे आज़माएँ
- Android Studio में, Run या Run menu > Run ‘app' पर क्लिक करें.
- आपको डिप्लॉयमेंट का टारगेट चुनने के लिए कहा जाता है. इस सूची में, चालू एम्युलेटर दिखना चाहिए. इसे चुनें. इसके बाद, Android Studio आपके लिए ऐप्लिकेशन को एम्युलेटर पर डिप्लॉय कर देगा.
कुछ ही देर में ऐप्लिकेशन लॉन्च हो जाएगा. आपको ऑस्ट्रेलिया के सिडनी शहर का मैप दिखेगा. इसमें एक बटन और जगहों की खाली सूची होगी.
जब तक डिवाइस की जगह की जानकारी का ऐक्सेस पाने के लिए अनुमति का अनुरोध नहीं किया जाता, तब तक मैप का फ़ोकस उपयोगकर्ता की जगह की जानकारी पर नहीं जाता.
10. जगह की जानकारी की अनुमतियों का अनुरोध करना और उन्हें मैनेज करना
मैप तैयार होने के बाद, जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध करना
- उपयोगकर्ता की अनुमतियों का अनुरोध करने के लिए,
getLocationPermission
नाम का एक तरीका तय करें.
इस कोड को, अभी-अभी बनाए गए onOptionsSelected
तरीके के नीचे चिपकाएं.
MapsActivity.java getLocationPermission()
private void getLocationPermission() {
/*
* Request location permission, so that we can get the location of the
* device. The result of the permission request is handled by a callback,
* onRequestPermissionsResult.
*/
mLocationPermissionGranted = false;
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
} else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}
}
- ज़ूम कंट्रोल चालू करने और उपयोगकर्ता से जगह की जानकारी की अनुमतियों का अनुरोध करने के लिए, मौजूदा
onMapReady
तरीके के आखिर में दो लाइनें जोड़ें.
MapsActivity.java onMapReady()
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
//
// PASTE THE LINES BELOW THIS COMMENT
//
// Enable the zoom controls for the map
mMap.getUiSettings().setZoomControlsEnabled(true);
// Prompt the user for permission.
getLocationPermission();
}
अनुरोध की गई अनुमतियों से मिले नतीजे को मैनेज करना
जब उपयोगकर्ता, अनुमति के लिए अनुरोध करने वाले डायलॉग का जवाब देता है, तब Android इस कॉलबैक को कॉल करता है.
इस कोड को getLocationPermission()
तरीके के बाद चिपकाएं:
MapsActivity.java onRequestPermissionsResult()
/**
* Handles the result of the request for location permissions
*/
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String permissions[],
@NonNull int[] grantResults) {
mLocationPermissionGranted = false;
switch (requestCode) {
case PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
}
}
}
}
11. मौजूदा जगह की जानकारी पाना और संभावित जगहों की जानकारी पाना
जब उपयोगकर्ता ऐप्लिकेशन बार में मौजूद जगह चुनें पर क्लिक करता है, तो ऐप्लिकेशन pickCurrentPlace()
तरीके को कॉल करता है. यह तरीका, पहले से तय किए गए getDeviceLocation()
तरीके को कॉल करता है. getDeviceLocation
तरीका, डिवाइस की मौजूदा जगह की जानकारी पाने के बाद, getCurrentPlaceLikelihoods,
तरीके को कॉल करता है.
findCurrentPlace API को कॉल करना और जवाब को मैनेज करना
getCurrentPlaceLikelihoods
, findCurrentPlaceRequest
बनाता है और Places API findCurrentPlace
टास्क को कॉल करता है. अगर टास्क पूरा हो जाता है, तो यह findCurrentPlaceResponse
दिखाता है. इसमें placeLikelihood
ऑब्जेक्ट की सूची होती है. इनमें से हर एक की कई प्रॉपर्टी होती हैं. जैसे, जगह का नाम और पता. साथ ही, इस बात की संभावना भी होती है कि आप उस जगह पर हैं (0 से 1 तक की डबल वैल्यू). यह तरीका, placeLikelihoods
से जगह की जानकारी की सूचियां बनाकर जवाब को मैनेज करता है.
यह कोड, सबसे ज़्यादा संभावना वाली पांच जगहों के हिसाब से काम करता है. साथ ही, जिन जगहों के लिए संभावना 0 से ज़्यादा होती है उन्हें सूची में जोड़ता है. इसके बाद, यह कोड सूची को रेंडर करता है. अगर आपको पांच से ज़्यादा या कम आइटम दिखाने हैं, तो M_MAX_ENTRIES
कॉन्स्टेंट में बदलाव करें.
इस कोड को onMapReady
तरीके के बाद चिपकाएं.
MapsActivity.java getCurrentPlaceLikelihoods()
private void getCurrentPlaceLikelihoods() {
// Use fields to define the data types to return.
List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.ADDRESS,
Place.Field.LAT_LNG);
// Get the likely places - that is, the businesses and other points of interest that
// are the best match for the device's current location.
@SuppressWarnings("MissingPermission") final FindCurrentPlaceRequest request =
FindCurrentPlaceRequest.builder(placeFields).build();
Task<FindCurrentPlaceResponse> placeResponse = mPlacesClient.findCurrentPlace(request);
placeResponse.addOnCompleteListener(this,
new OnCompleteListener<FindCurrentPlaceResponse>() {
@Override
public void onComplete(@NonNull Task<FindCurrentPlaceResponse> task) {
if (task.isSuccessful()) {
FindCurrentPlaceResponse response = task.getResult();
// Set the count, handling cases where less than 5 entries are returned.
int count;
if (response.getPlaceLikelihoods().size() < M_MAX_ENTRIES) {
count = response.getPlaceLikelihoods().size();
} else {
count = M_MAX_ENTRIES;
}
int i = 0;
mLikelyPlaceNames = new String[count];
mLikelyPlaceAddresses = new String[count];
mLikelyPlaceAttributions = new String[count];
mLikelyPlaceLatLngs = new LatLng[count];
for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) {
Place currPlace = placeLikelihood.getPlace();
mLikelyPlaceNames[i] = currPlace.getName();
mLikelyPlaceAddresses[i] = currPlace.getAddress();
mLikelyPlaceAttributions[i] = (currPlace.getAttributions() == null) ?
null : TextUtils.join(" ", currPlace.getAttributions());
mLikelyPlaceLatLngs[i] = currPlace.getLatLng();
String currLatLng = (mLikelyPlaceLatLngs[i] == null) ?
"" : mLikelyPlaceLatLngs[i].toString();
Log.i(TAG, String.format("Place " + currPlace.getName()
+ " has likelihood: " + placeLikelihood.getLikelihood()
+ " at " + currLatLng));
i++;
if (i > (count - 1)) {
break;
}
}
// COMMENTED OUT UNTIL WE DEFINE THE METHOD
// Populate the ListView
// fillPlacesList();
} else {
Exception exception = task.getException();
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
Log.e(TAG, "Place not found: " + apiException.getStatusCode());
}
}
}
});
}
मैप कैमरे को डिवाइस की मौजूदा जगह की जानकारी पर ले जाएं
अगर उपयोगकर्ता अनुमति देता है, तो ऐप्लिकेशन उसकी मौजूदा जगह की जानकारी फ़ेच करता है. इसके बाद, कैमरे को उस जगह के हिसाब से सेट कर देता है.
अगर उपयोगकर्ता अनुमति नहीं देता है, तो ऐप्लिकेशन कैमरे को इस पेज की शुरुआत में दिए गए कॉन्स्टेंट में तय की गई डिफ़ॉल्ट जगह पर ले जाता है. सैंपल कोड में, यह जगह सिडनी, ऑस्ट्रेलिया है.
इस कोड को getPlaceLikelihoods()
तरीके के बाद चिपकाएं:
MapsActivity.java getDeviceLocation()
private void getDeviceLocation() {
/*
* Get the best and most recent location of the device, which may be null in rare
* cases when a location is not available.
*/
try {
if (mLocationPermissionGranted) {
Task<Location> locationResult = mFusedLocationProviderClient.getLastLocation();
locationResult.addOnCompleteListener(this, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if (task.isSuccessful()) {
// Set the map's camera position to the current location of the device.
mLastKnownLocation = task.getResult();
Log.d(TAG, "Latitude: " + mLastKnownLocation.getLatitude());
Log.d(TAG, "Longitude: " + mLastKnownLocation.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(mLastKnownLocation.getLatitude(),
mLastKnownLocation.getLongitude()), DEFAULT_ZOOM));
} else {
Log.d(TAG, "Current location is null. Using defaults.");
Log.e(TAG, "Exception: %s", task.getException());
mMap.moveCamera(CameraUpdateFactory
.newLatLngZoom(mDefaultLocation, DEFAULT_ZOOM));
}
getCurrentPlaceLikelihoods();
}
});
}
} catch (SecurityException e) {
Log.e("Exception: %s", e.getMessage());
}
}
जब उपयोगकर्ता 'जगह चुनें' पर क्लिक करे, तब जगह की जानकारी को ऐक्सेस करने की अनुमतियों की जांच करना
जब उपयोगकर्ता जगह चुनें पर टैप करता है, तो यह तरीका जगह की जानकारी ऐक्सेस करने की अनुमतियों की जांच करता है. अगर अनुमति नहीं दी गई है, तो उपयोगकर्ता को अनुमति देने के लिए कहा जाता है.
अगर उपयोगकर्ता ने अनुमति दी है, तो यह तरीका getDeviceLocation
को कॉल करता है, ताकि मौजूदा जगहों की जानकारी पाने की प्रोसेस शुरू की जा सके.
getDeviceLocation()
के बाद यह तरीका जोड़ें:
MapsActivity.java pickCurrentPlace()
private void pickCurrentPlace() {
if (mMap == null) {
return;
}
if (mLocationPermissionGranted) {
getDeviceLocation();
} else {
// The user has not granted permission.
Log.i(TAG, "The user did not grant location permission.");
// Add a default marker, because the user hasn't selected a place.
mMap.addMarker(new MarkerOptions()
.title(getString(R.string.default_info_title))
.position(mDefaultLocation)
.snippet(getString(R.string.default_info_snippet)));
// Prompt the user for permission.
getLocationPermission();
}
}
pickCurrentPlace
को तय करने के बाद,onOptionsItemSelected()
में वह लाइन ढूंढें जोpickCurrentPlace
को कॉल करती है. इसके बाद, उस लाइन से टिप्पणी हटाएं.
MapsActivity.java onOptionItemSelected()
case R.id.action_geolocate:
// COMMENTED OUT UNTIL WE DEFINE THE METHOD
// Present the Current Place picker
pickCurrentPlace();
return true;
इसे आज़माएँ
अगर अब ऐप्लिकेशन चलाया जाता है और जगह चुनें पर टैप किया जाता है, तो उसे जगह की जानकारी की अनुमतियों के लिए प्रॉम्प्ट करना चाहिए.
- अनुमति देने पर, आपकी प्राथमिकता सेव हो जाती है और आपको सूचना नहीं मिलती. अनुमति न देने पर, अगली बार बटन पर टैप करने पर आपको सूचना मिलेगी.
getPlaceLikelihoods
ने मौजूदा जगहों की जानकारी फ़ेच कर ली है, लेकिनListView
में अब तक यह जानकारी नहीं दिख रही है. Android Studio में, ⌘6 पर क्लिक करके, MapsActivity के तौर पर टैग किए गए स्टेटमेंट के लिए, Logcat में लॉग देखे जा सकते हैं. इससे यह पुष्टि की जा सकती है कि आपके नए तरीके ठीक से काम कर रहे हैं.- अगर आपने अनुमति दी है, तो लॉग में
Latitude:
औरLongitude:
के लिए एक स्टेटमेंट शामिल होता है. इसमें डिवाइस की जगह की जानकारी दिखती है. अगर आपने पहले Google Maps और एम्युलेटर के एक्सटेंड किए गए मेन्यू का इस्तेमाल करके, एम्युलेटर के लिए जगह की जानकारी दी थी, तो इन स्टेटमेंट में वह जगह दिखेगी. - अगर
findCurrentPlace
को कॉल करने पर सही जवाब मिलता है, तो लॉग में पांच स्टेटमेंट शामिल होते हैं. इनमें, सबसे ज़्यादा संभावना वाली पांच जगहों के नाम और उनकी जगह की जानकारी प्रिंट होती है.
12. Current Place पिकर में जानकारी भरना
चुनी गई जगहों के लिए हैंडलर सेट अप करना
आइए, इस बारे में सोचते हैं कि जब उपयोगकर्ता ListView
में मौजूद किसी आइटम पर क्लिक करे, तो हमें क्या करना है. उपयोगकर्ता की मौजूदा जगह की पुष्टि करने के लिए, मैप पर उस जगह पर मार्कर जोड़ा जा सकता है. अगर कोई व्यक्ति उस मार्कर पर क्लिक करता है, तो एक सूचना विंडो पॉप-अप होती है. इसमें जगह का नाम और पता दिखता है.
इस क्लिक हैंडलर को pickCurrentPlace
तरीके के बाद चिपकाएं.
MapsActivity.java listClickedHandler
private AdapterView.OnItemClickListener listClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
// position will give us the index of which place was selected in the array
LatLng markerLatLng = mLikelyPlaceLatLngs[position];
String markerSnippet = mLikelyPlaceAddresses[position];
if (mLikelyPlaceAttributions[position] != null) {
markerSnippet = markerSnippet + "\n" + mLikelyPlaceAttributions[position];
}
// Add a marker for the selected place, with an info window
// showing information about that place.
mMap.addMarker(new MarkerOptions()
.title(mLikelyPlaceNames[position])
.position(markerLatLng)
.snippet(markerSnippet));
// Position the map's camera at the location of the marker.
mMap.moveCamera(CameraUpdateFactory.newLatLng(markerLatLng));
}
};
ListView को पॉप्युलेट करना
अब आपके पास उन जगहों की सूची है जहां उपयोगकर्ता के मौजूद होने की सबसे ज़्यादा संभावना है. इसलिए, ListView
में उपयोगकर्ता को वे विकल्प दिखाए जा सकते हैं. आपने अभी जो क्लिक हैंडलर तय किया है उसका इस्तेमाल करने के लिए, ListView
क्लिक लिसनर भी सेट किया जा सकता है.
इस तरीके को क्लिक हैंडलर के बाद चिपकाएं:
MapsActivity.java fillPlacesList()
private void fillPlacesList() {
// Set up an ArrayAdapter to convert likely places into TextViews to populate the ListView
ArrayAdapter<String> placesAdapter =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mLikelyPlaceNames);
lstPlaces.setAdapter(placesAdapter);
lstPlaces.setOnItemClickListener(listClickedHandler);
}
अब fillPlacesList
को तय कर दिया गया है. इसलिए, findPlaceLikelihoods
के आखिर में मौजूद उस लाइन को ढूंढें जो fillPlacesList
को कॉल करती है. इसके बाद, उस लाइन से टिप्पणी हटाने के लिए, उसके आगे मौजूद # हटा दें.
MapsActivity.java fillPlaceLikelihoods()
// COMMENTED OUT UNTIL WE DEFINE THE METHOD
// Populate the ListView
fillPlacesList();
मौजूदा जगह की जानकारी चुनने वाले टूल के लिए, बस इतना ही कोड ज़रूरी है!
13. ऐप्लिकेशन चलाएं
कोई जगह चुनने की सुविधा को टेस्ट करना
- ऐप्लिकेशन को फिर से चलाएं.
अब जब जगह चुनें पर टैप किया जाता है, तो ऐप्लिकेशन, जगह के आस-पास की जगहों के नाम की सूची दिखाता है. मावी में इस जगह के आस-पास, उलुलानीज़ हवाईयन शेव आइस और शुगर बीच बेक शॉप जैसी जगहें हैं. कई जगहों के कोऑर्डिनेट, आपकी जगह के कोऑर्डिनेट के बहुत करीब हैं. इसलिए, यह उन जगहों की सूची है जहां आप हो सकते हैं.
ListView
में मौजूद किसी जगह के नाम पर क्लिक करें.
आपको मैप पर एक मार्कर दिखेगा.
- मार्कर पर टैप करें.
जगह की जानकारी देखी जा सकती है.
किसी दूसरी जगह के लिए टेस्ट करना
अगर आपको अपनी जगह की जानकारी बदलनी है और आपने एम्युलेटर का इस्तेमाल किया है, तो एम्युलेटर के एक्सटेंडेड मेन्यू में जगह की जानकारी के निर्देशांक अपडेट करने पर, डिवाइस की जगह की जानकारी अपने-आप अपडेट नहीं होती.
इस समस्या को हल करने के लिए, एमुलेटर की जगह की जानकारी को अपडेट करने के लिए, नेटिव Google Maps ऐप्लिकेशन का इस्तेमाल करने के लिए यह तरीका अपनाएं:
- Google मानचित्र खोलें.
- अक्षांश और देशांतर को नए निर्देशांकों में बदलने के लिए, ... > जगह की जानकारी पर टैप करें. इसके बाद, भेजें पर टैप करें.
- उदाहरण के लिए, कनाडा के वैंकूवर शहर के बीचोंबीच की जगह की जानकारी सेट करने के लिए, अक्षांश: 49.2768 और देशांतर: -123.1142 का इस्तेमाल किया जा सकता है.
- पुष्टि करें कि Google Maps, आपके नए निर्देशांकों के हिसाब से फिर से सेंटर हो गया है. मैप को मौजूदा जगह पर वापस लाने का अनुरोध करने के लिए, आपको Google Maps ऐप्लिकेशन में मेरी जगह बटन पर टैप करना पड़ सकता है.
- Current Place ऐप्लिकेशन पर वापस जाएं और जगह चुनें पर टैप करें. इससे आपको नए कोऑर्डिनेट पर मैप दिखेगा. साथ ही, आपको मौजूदा जगहों की नई सूची दिखेगी.
यह बहुत आसान है! आपने एक ऐसा ऐप्लिकेशन बनाया है जो मौजूदा जगह के हिसाब से, आस-पास की जगहों की जानकारी देता है. साथ ही, यह भी बताता है कि आप इनमें से किन जगहों पर मौजूद हैं. आनंद लें!
अब आगे बढ़ें और इस बोनस चरण को पूरा करने के लिए, ऐप्लिकेशन को उन बदलावों के साथ चलाएं जो आपने किए हैं!
14. अगले चरण
अपनी एपीआई कुंजी को चोरी होने से बचाने के लिए, आपको उसे सुरक्षित रखना होगा. ऐसा करने पर, सिर्फ़ आपका Android ऐप्लिकेशन ही उस कुंजी का इस्तेमाल कर पाएगा. अगर एपीआई पासकोड पर पाबंदी नहीं लगाई जाती है, तो जिस व्यक्ति के पास आपका पासकोड होगा वह Google Maps Platform API को कॉल करने के लिए इसका इस्तेमाल कर सकता है. इससे आपको बिल मिल सकता है.
अपना SHA-1 सर्टिफ़िकेट पाना
एपीआई कुंजियों को सीमित करने के लिए, आपको इसकी ज़रूरत बाद में पड़ेगी. यहां डीबग सर्टिफ़िकेट पाने के लिए निर्देशों का सेट दिया गया है.
Linux या macOS के लिए, टर्मिनल विंडो खोलें और यह डालें:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
Windows Vista और Windows 7 के लिए, यह कमांड चलाएं:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
आपको इससे मिलता-जुलता आउटपुट दिखेगा:
Alias name: androiddebugkey Creation date: Jan 01, 2013 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Android Debug, O=Android, C=US Issuer: CN=Android Debug, O=Android, C=US Serial number: 4aa9b300 Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033 Certificate fingerprints: MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9 SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75 Signature algorithm name: SHA1withRSA Version: 3
SHA1 से शुरू होने वाली लाइन में, सर्टिफ़िकेट का SHA-1 फ़िंगरप्रिंट होता है. फ़िंगरप्रिंट, कोलन से अलग किए गए दो अंकों वाले 20 हेक्साडेसिमल नंबर का क्रम होता है.
जब आपको कोई ऐप्लिकेशन रिलीज़ करना हो, तब इस दस्तावेज़ में दिए गए निर्देशों का इस्तेमाल करके, रिलीज़ सर्टिफ़िकेट पाएं.
अपनी एपीआई कुंजी पर पाबंदियां लगाना
- Cloud Console में, एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.
आपने इस ऐप्लिकेशन के लिए जिस कुंजी का इस्तेमाल किया है वह एपीआई कुंजियों में शामिल होनी चाहिए.
- कुंजी की सेटिंग में बदलाव करने के लिए,
पर क्लिक करें.
- एपीआई पासकोड वाले पेज पर, पासकोड से जुड़ी पाबंदियां के बाद, ऐप्लिकेशन से जुड़ी पाबंदियां सेट करें. इसके लिए, यह तरीका अपनाएं:
- Android ऐप्लिकेशन चुनें और निर्देशों का पालन करें.
- कोई आइटम जोड़ें पर क्लिक करें.
- अपना पैकेज नाम और SHA-1 सर्टिफ़िकेट फ़िंगरप्रिंट डालें. यह फ़िंगरप्रिंट, पिछले सेक्शन में मिला था.
उदाहरण के लिए:
com.google.codelab.currentplace
BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75s
- ज़्यादा सुरक्षा के लिए, एपीआई से जुड़ी पाबंदियां सेट करें. इसके लिए, यह तरीका अपनाएं.
- एपीआई से जुड़ी पाबंदियों के बाद, कुंजी को सीमित करें को चुनें.
- Android के लिए Maps SDK और Places API चुनें.
- हो गया और सेव करें पर क्लिक करें.
15. बधाई हो
आपने एक ऐसा ऐप्लिकेशन बनाया है जो मौजूदा जगह के आस-पास की सबसे संभावित जगहों की जानकारी देता है. साथ ही, उपयोगकर्ता की चुनी गई जगह के लिए मैप पर मार्कर जोड़ता है.
ज़्यादा जानें
- डेवलपमेंट को तेज़ करने के लिए, Android Utility लाइब्रेरी के लिए Maps SDK का इस्तेमाल करें. ये यूटिलिटी, Google Maps Platform का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, सबसे ज़्यादा इस्तेमाल किए जाने वाले कुछ टास्क को आसानी से पूरा करती हैं.
- Android के लिए Google Maps Platform SDK टूल की ज़्यादातर सुविधाओं को दिखाने वाले कोड सैंपल के लिए, Android के लिए Maps SDK टूल के सैंपल और Android के लिए Places SDK टूल के डेमो की रिपॉज़िटरी क्लोन करें.
- Android Q में, जगह की जानकारी की अनुमतियों को तीन स्थितियों में मैनेज करने का तरीका जानने के लिए, Android with Kotlin में जगह की जानकारी के अपडेट पाना कोडलैब पूरा करें.