Wear OS पर जगह की जानकारी का पता लगाएं

स्मार्टवॉच का छोटा साइज़ और आसानी से दिखने वाला फ़ॉर्म फ़ैक्टर, Wear OS को ऐसे ऐप्लिकेशन के लिए एक बेहतरीन प्लैटफ़ॉर्म बनाता है जो उपयोगकर्ता की जगह की जानकारी को रिकॉर्ड करते हैं, उसकी रिपोर्ट करते हैं, और उसके हिसाब से जवाब देते हैं. उदाहरण के लिए, ऐसे ऐप्लिकेशन बनाए जा सकते हैं जो उपयोगकर्ताओं को उनकी दूरी, स्पीड, और दिशा के बारे में रीयल-टाइम अपडेट देते हैं. इसके अलावा, ऐसे ऐप्लिकेशन भी बनाए जा सकते हैं जो उपयोगकर्ताओं को उनके आस-पास की जगहों के बारे में एक नज़र में जानकारी देते हैं.

ज़्यादा जानकारी के लिए, जगह की जानकारी का पता लगाने वाले ऐप्लिकेशन बनाना लेख पढ़ें.

कुछ स्मार्टवॉच में बिल्ट-इन जीपीएस सेंसर होता है. यह सेंसर, कनेक्ट किए गए फ़ोन की ज़रूरत के बिना ही जगह की जानकारी का डेटा इकट्ठा करता है. स्मार्टवॉच ऐप्लिकेशन में जगह की जानकारी का डेटा पाने का अनुरोध करने पर, सिस्टम फ़ोन या स्मार्टवॉच से जगह की जानकारी को सबसे कम बैटरी खर्च करने वाले तरीके से हासिल करता है. इसलिए, घड़ी में जीपीएस सेंसर न होने पर भी, आपको जगह की जानकारी मिल सकती है.

जगह की जानकारी के डेटा को इकट्ठा करने से बैटरी लाइफ़ पर पड़ने वाले असर को कम करने के लिए, PRIORITY_BALANCED_POWER_ACCURACY वैल्यू के साथ setPriority() को कॉल करें. प्राथमिकता की अलग-अलग सेटिंग, चिप को अलग-अलग तरीके से ऑप्टिमाइज़ कर सकती हैं.

जब भी हो सके, setInterval() का इस्तेमाल करके, हर मिनट में एक से ज़्यादा बार जगह की जानकारी न मांगें. इससे बैटरी की बचत होगी.

बाद के सेक्शन में बताए गए तरीके के मुताबिक, जब सेंसर के बिना वाली कोई स्मार्टवॉच, फ़ोन से डिसकनेक्ट हो जाती है, तब आपके ऐप्लिकेशन को जगह की जानकारी के डेटा के नुकसान को मैनेज करना होगा.

अपनी पसंद का तरीका चुनें

Wear OS ऐप्लिकेशन को जगह की जानकारी देने के दो तरीके हैं. फ़्यूज़्ड लोकेशन प्रोवाइडर (एफ़एलपी) या Wear Health Services (डब्ल्यूएचएस) का इस्तेमाल किया जा सकता है. FLP, Google Play services API है.

इन स्थितियों में FLP का इस्तेमाल करें:

  • आपको जगह की जानकारी का डेटा सिर्फ़ कुछ समय के लिए चाहिए, लगातार नहीं. जैसे, पार्क की गई कार की जगह की जानकारी को मार्क करना.
  • आपको जगह की जानकारी लगातार चाहिए, लेकिन जगह की जानकारी का इतिहास नहीं चाहिए.

इन स्थितियों में WHS का इस्तेमाल करें:

  • आपको अन्य सेंसर से डेटा चाहिए या आने वाले समय में अन्य सेंसर से डेटा चाहिए.
  • आपका ऐप्लिकेशन, कसरत या व्यायाम से जुड़ा है. इसे किसी तय समय के दौरान, जगह की जानकारी को ट्रैक करने की ज़रूरत है.

कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई का इस्तेमाल करना

घड़ी पर, FusedLocationProviderClient का इस्तेमाल करके जगह की जानकारी का डेटा पाएं. FLP, फ़ोन की जगह की जानकारी के डेटा का इस्तेमाल कर सकता है. ज़्यादा जानकारी के लिए, लोकेशन सेवाओं का क्लाइंट बनाना लेख पढ़ें.

जगह की जानकारी के अपडेट का अनुरोध करने और किसी उपयोगकर्ता की जगह की जानकारी को लगातार ट्रैक करने के बारे में जानने के लिए, जगह की जानकारी के अपडेट का अनुरोध करना लेख पढ़ें.

वाहन में मौजूद जीपीएस का पता लगाना

अगर कोई व्यक्ति ऐसी स्मार्टवॉच पहनकर जॉगिंग करता है जिसमें जीपीएस सेंसर नहीं है और वह अपने फ़ोन को घर पर ही छोड़ जाता है, तो आपकी स्मार्टवॉच का ऐप्लिकेशन, कनेक्ट किए गए डिवाइस से जगह की जानकारी का डेटा नहीं पा सकता. अपने ऐप्लिकेशन में इस स्थिति का पता लगाएं और उपयोगकर्ता को चेतावनी दें कि जगह की जानकारी देने वाली सुविधाएं उपलब्ध नहीं हैं.

यह पता लगाने के लिए कि किसी स्मार्टवॉच में जीपीएस सेंसर पहले से मौजूद है या नहीं, PackageManager.FEATURE_LOCATION_GPS के साथ hasSystemFeature() तरीके को कॉल करें. गतिविधि शुरू करने पर, यह कोड पता लगाता है कि स्मार्टवॉच में जीपीएस सेंसर पहले से मौजूद है या नहीं:

class LocationActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // ...
    }
    fun hasGps(): Boolean =
        packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)
}

कनेक्शन टूटने से जुड़े इवेंट मैनेज करना

अगर किसी स्मार्टवॉच में जीपीएस सेंसर नहीं है और वह फ़ोन से डिसकनेक्ट हो जाती है, तो स्मार्टवॉच को जगह की जानकारी का डेटा नहीं मिलता. अगर आपके ऐप्लिकेशन को लगातार डेटा की ज़रूरत होती है, तो उसे कनेक्शन के बंद होने का पता लगाना चाहिए. साथ ही, उपयोगकर्ता को चेतावनी देनी चाहिए और ऐप्लिकेशन के फ़ंक्शन को कम कर देना चाहिए.

मोबाइल डिवाइस की तरह ही, FusedLocationProviderClient.requestLocationUpdates() का इस्तेमाल करके जगह की जानकारी के अपडेट का अनुरोध करते समय, आपको LocationCallback या PendingIntent में से किसी एक को पास करना होगा. इन दोनों में, जगह की जानकारी और LocationAvailability स्टेटस शामिल होता है.

LocationCallback विकल्प का इस्तेमाल करते समय, जगह की उपलब्धता की स्थिति के बारे में अपडेट पाने के लिए, onLocationAvailability() को बदलें.

PendingIntent विकल्प का इस्तेमाल करने पर, अगर Intent वापस मिलता है, तो LocationAvailability.extractLocationAvailability(Intent) तरीके का इस्तेमाल करके, Intent से जगह की उपलब्धता की स्थिति निकालें.

हैंडल की जगह की जानकारी नहीं मिली

जीपीएस सिग्नल न मिलने पर, उपयोगकर्ता की स्मार्टवॉच की आखिरी लोकेशन की जानकारी वापस पाई जा सकती है. जब जीपीएस ठीक से काम नहीं करता और स्मार्टवॉच में जीपीएस की सुविधा नहीं होती है, तब आखिरी बार इंटरनेट से कनेक्ट की गई जगह की जानकारी पाने में मदद मिलती है. ऐसा तब भी होता है, जब स्मार्टवॉच का कनेक्शन फ़ोन से टूट जाता है. ज़्यादा जानकारी के लिए, डिवाइस की जगह की जानकारी सेव करने की सेटिंग चालू करना लेख पढ़ें.

बैच किए गए कॉल के साथ जगह की जानकारी को फ़्लश करना

अगर बैच किए गए कॉल का इस्तेमाल किया जा रहा है, तो स्क्रीन के वापस चालू होने या ऐंबियंट मोड से वापस आने पर, flushLocations() को कॉल करें. इससे बैच की गई सभी जगहों की जानकारी, रजिस्टर किए गए सभी LocationListeners, LocationCallbacks, और Pending Intents को तुरंत वापस मिल जाएगी.