नेविगेशन SDK टूल - बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला मोड

शुरुआती जानकारी

Navigation SDK (Nav SDK) में, टर्न-बाय-टर्न नेविगेशन की बेहतरीन सुविधा मिलती है. यह सुविधा, ग्राहकों और ड्राइवर के लिए बहुत मददगार हो सकती है. खास तौर पर, नए ड्राइवर या ऐसे ड्राइवर जो उस इलाके से वाक़िफ़ नहीं हैं. हालांकि, कुछ ऐसे मामले होते हैं जिनमें कंपनियां, ड्राइवर का ध्यान सड़क से हटाने के लिए टर्न-बाय-टर्न नेविगेशन यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल नहीं करना चाहती हैं. इसके बावजूद, वे वाहन की लोकेशन ट्रैक करना चाहती हैं और उस रास्ते से जुड़े इवेंट के बारे में जानना चाहती हैं जिस पर वे चल रहे हैं. इसका एक उदाहरण ट्रक ड्राइवर हैं. खास तौर पर, अगर वे खतरनाक सामान ले जा रहे हैं. डिलीवरी करने वाली अन्य कंपनियां, डिलीवरी के लिए अलग-अलग तरीकों का इस्तेमाल करती हैं. जैसे, कम दूरी के लिए पैदल चलना. ऐसे में, उन्हें भी बारी-बारी से निर्देश पाने की सुविधा की ज़रूरत नहीं पड़ सकती. इससे डिवाइस की बैटरी लाइफ़ भी बचेगी.

स्कोप

इस दस्तावेज़ में बताया गया है कि कंपनियां, Nav SDK से नेविगेशन मैप (व्यू) को कैसे छिपा सकती हैं. साथ ही, लोकेशन ट्रैकिंग, इवेंट सदस्यताएं, और कॉलबैक के मामले में, Nav SDK की सभी सुविधाओं का फ़ायदा कैसे पा सकती हैं. हेडलेस मोड में Nav SDK से कैप्चर किए गए डेटा का इस्तेमाल, वाहनों को ट्रैक करने की सुविधा को बेहतर बनाने के लिए किया जा सकता है. साथ ही, इससे ईटीए को ज़्यादा सटीक तरीके से समझने में मदद मिलती है. इससे पारदर्शिता और बेहतर परफ़ॉर्मेंस मिलती है.

Navigation SDK, Android / iOS की एक नेटिव लाइब्रेरी है. इसे ड्राइवर ऐप्लिकेशन में जोड़ा जाता है. मोबिलिटी के संदर्भ में, यह इन कामों के लिए ज़िम्मेदार है:

  • सड़क के हिसाब से जगह की जानकारी को ऐक्सेस करने वाले ऐप्लिकेशन से जगह की जानकारी पाना. सड़क के हिसाब से जगह की जानकारी, Android के FusedLocationProvider (FLP) से ज़्यादा सटीक होती है. ऐसा इसलिए, क्योंकि यह Google के सड़क नेटवर्क का इस्तेमाल करके, जगहों की जानकारी को सड़क के सबसे नज़दीकी सेगमेंट से जोड़ता है. इससे FLP से मिलने वाली ईटीए और अन्य जानकारी ज़्यादा सटीक हो जाती है.
  • ड्राइवरों को एक जगह से दूसरी जगह पर जाने के लिए, बारी-बारी से निर्देश मिलते हैं. इसमें रीयल-टाइम में ट्रैफ़िक और रास्ते से जुड़ी अन्य पाबंदियों को ध्यान में रखा जाता है.
  • इवेंट लिसनर और रजिस्टर किए गए कॉलबैक की मदद से, रूट की प्रोग्रेस, जगह, स्पीड वगैरह के आधार पर इवेंट ट्रिगर करना.

डिफ़ॉल्ट रूप से 'Play कंसोल' का नया वर्शन चुनें

जब खरीदार Nav SDK लागू करते हैं, तो यह मान लिया जाता है कि उन्हें बारी-बारी से निर्देश देने वाली सुविधा की ज़रूरत है. इसलिए, Nav SDK के दस्तावेज़ (Android और iOS) में, बारी-बारी से निर्देश देने की सुविधा के साथ Nav SDK को लागू करने के तरीके के बारे में निर्देश दिए गए हैं.

Android पर, ऐप्लिकेशन में मोड़-दर-मोड़ मैप को रेंडर करने के लिए, SupportNavigationFragment या NavigationView का इस्तेमाल किया जाता है. वहीं, iOS पर इसके लिए GMSMapView का इस्तेमाल किया जाता है. इन यूज़र इंटरफ़ेस (यूआई) एलिमेंट की मदद से, आपके ऐप्लिकेशन में इंटरैक्टिव मैप और मोड़-दर-मोड़ नेविगेशन यूज़र इंटरफ़ेस (यूआई) जोड़ा जाता है.

अगले सेक्शन में, हमने Android और iOS, दोनों के लिए डिफ़ॉल्ट NavSDK और टर्न-बाय-टर्न नेविगेशन की सुविधा चालू करने वाले कोड की तुलना, हेडलेस NavSDK कोड से की है. साथ ही, ज़रूरी बदलावों को हाइलाइट किया है.

समाधान

Android

Android पर, यह Java कोड है. यह Nav SDK के सैंपल ऐप्लिकेशन का हिस्सा है.

@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   // Obtain a reference to the NavigationFragment
   setContentView(R.layout.activity_nav_fragment);
   mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

जैसा कि आप देख सकते हैं, व्यू उस लेआउट की ओर इशारा करता है जिसका इस्तेमाल नेविगेशन के लिए किया जाना चाहिए. इस मामले में, NavigationView के बजाय SupportNavigationFragment बनाया गया है.

Nav SDK को हेडलेस मोड में शुरू करने के लिए, हमें बस उन दो निर्देशों को हटाना होगा. अगर बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले ब्राउज़र और ग्राफ़िक यूज़र इंटरफ़ेस वाले ब्राउज़र (ऐक्टिव नेविगेशन) के बीच टॉगल करना है, तो यह तय करने के लिए किसी वैरिएबल का इस्तेमाल किया जा सकता है कि बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले ब्राउज़र का इस्तेमाल करना ज़रूरी है या नहीं. उदाहरण के लिए:

Boolean mHeadless = true;

इसके बाद, इसका इस्तेमाल इस तरह किया जा सकता है:

@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   // Obtain a reference to the NavigationFragment
   if(!mHeadless) {
       setContentView(R.layout.activity_nav_fragment);
       mNavFragment =
               (SupportNavigationFragment)
                       getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
   }

mHeadless वैरिएबल को यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट (जैसे, टॉगल) से लिंक किया जा सकता है. इससे हेडलेस मोड को चालू या बंद किया जा सकेगा.

alt_text alt_text
ऐक्टिव नेविगेशन के साथ Nav SDK चल रहा है (हेडलेस मोड बंद है) एक जैसा ऐप्लिकेशन, लेकिन अब इसमें बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला Nav SDK काम कर रहा है

ऊपर दिए गए उदाहरण में दाईं ओर देखा जा सकता है कि Nav SDK नेविगेशन, बैकग्राउंड में चल रहा है. हालांकि, इसमें बारी-बारी से निर्देश पाने की सुविधा बंद है.

iOS

iOS पर हेडलेस मोड को बहुत आसानी से चालू किया जा सकता है. इसके लिए, MapView को शुरू करते समय यह सेटिंग जोड़ें: \

mapView.isHidden = true


उदाहरण के लिए:

  /// The main map view.
  private lazy var mapView: GMSMapView = {
    let mapView = GMSMapView(frame: .zero)
    mapView.isHidden = true /// Make it headless!
    mapView.isNavigationEnabled = true
    mapView.settings.compassButton = true
    mapView.delegate = self
    return mapView
  }()

देखें कि यह कैसा दिखेगा - स्क्रीन, यूज़र इंटरफ़ेस (यूआई) को लागू करने के तरीके पर निर्भर करेगी. स्क्रीनशॉट सिर्फ़ mapView को छिपाने के असर को दिखाने के लिए है:

alt_text alt_text
इस डिवाइस पर नेविगेशन की सुविधा चालू है

iOS का सैंपल ऐप्लिकेशन

हेडलेस मोड में एक ही ऐप्लिकेशन

लागू करने पर विचार

हेडलेस मोड में, नेविगेशन मैप को स्क्रीन से छिपा दिया जाता है. इसलिए, सिर्फ़ स्क्रीन टाइम सेव होता है. इससे डिवाइस की बैटरी ज़्यादा देर तक चलती है. हालांकि, Nav SDK काम करता रहेगा. इसलिए, जगह की जानकारी के अपडेट और सभी इवेंट कॉलबैक सामान्य रूप से ट्रिगर होंगे. इसलिए, इस कॉन्फ़िगरेशन का इस्तेमाल करने से कोई बुरा असर नहीं पड़ता.

नतीजा

इस दस्तावेज़ में बताया गया है कि Nav SDK कितना फ़्लेक्सिबल है. साथ ही, यह भी बताया गया है कि अलग-अलग ऑपरेटिंग सिस्टम में, उनकी पाबंदियों को ध्यान में रखते हुए क्या-क्या किया जा सकता है. इससे खरीदारों को, ड्राइवर के अनुभव को अपनी पसंद के मुताबिक बनाने की सुविधा भी मिलती है. इससे उन्हें ड्राइविंग के दौरान ध्यान भटकने से बचने और सुरक्षा को बेहतर बनाने में मदद मिलती है.

अतिरिक्त संसाधन

अगर ऊपर बताई गई वजहों से, नेविगेशन के दौरान सूचनाएं बंद करनी हैं, तो ऐसा भी किया जा सकता है. इसके लिए, कृपया Nav SDK में बारी-बारी से मिलने वाली सूचनाओं में बदलाव करना लेख पढ़ें.