शुरुआती जानकारी
Navigation SDK (Nav SDK) में, मोड़-दर-मोड़ रास्ते की जानकारी देने वाली बेहतरीन सुविधा मिलती है. यह सुविधा, ग्राहकों और ड्राइवर, दोनों के लिए बहुत मददगार साबित हो सकती है. खास तौर पर, नए ड्राइवरों या उन ड्राइवरों के लिए जो उस इलाके से परिचित नहीं हैं. हालांकि, कुछ खास मामलों में कंपनियां, रास्ते के दिशा-निर्देश देने वाले यूज़र इंटरफ़ेस (यूआई) की मदद से, ड्राइवरों का ध्यान सड़क से नहीं हटाना चाहतीं. हालांकि, वे अब भी वाहनों की जगह की जानकारी ट्रैक करना और उनके रूट से जुड़े इवेंट के बारे में जानना चाहती हैं. इसका एक उदाहरण ट्रक ड्राइवर हैं. खास तौर पर, अगर वे खतरनाक सामान ले जा रहे हों. अन्य कंपनियां, अलग-अलग तरीकों से डिलीवरी करती हैं. जैसे, कम दूरी के लिए पैदल चलना. इन्हें भी मोड़-दर-मोड़ रास्ते की जानकारी देने की सुविधा की ज़रूरत नहीं हो सकती. इससे डिवाइस की बैटरी लाइफ़ भी बचेगी.
स्कोप
इस दस्तावेज़ में बताया गया है कि कंपनियां, Nav SDK से नेविगेशन मैप (व्यू) को कैसे छिपा सकती हैं. इसके बावजूद, वे जगह की जानकारी ट्रैक करने, इवेंट की सदस्यताएं, और कॉलबैक के मामले में, Nav SDK की सभी सुविधाओं का फ़ायदा उठा सकती हैं. हेडलेस मोड में Nav SDK से कैप्चर किए गए डेटा का इस्तेमाल, वाहनों को ट्रैक करने की क्षमता को बेहतर बनाने और ईटीए को ज़्यादा सटीक तरीके से समझने के लिए किया जा सकता है. इससे पारदर्शिता और कार्यक्षमता बढ़ती है.
Navigation SDK
Navigation SDK, Android / iOS की एक नेटिव लाइब्रेरी है, जिसे ड्राइवर ऐप्लिकेशन में जोड़ा जाता है. मोबिलिटी के मामले में, यह इन कामों के लिए ज़िम्मेदार है:
- इसे चलाने वाले ऐप्लिकेशन से, सड़क पर मौजूद जगहों की जानकारी पाना. सड़क पर मौजूद जगहों की जानकारी, Android के FusedLocationProvider (FLP) से ज़्यादा सटीक होती है. ऐसा इसलिए, क्योंकि यह जगहों को सड़क के सबसे नज़दीकी सेगमेंट पर स्नैप करने के लिए, Google के सड़क नेटवर्क का इस्तेमाल करता है. इससे, FLP से मिलने वाले ईटीए और अन्य जानकारी ज़्यादा सटीक होती है.
- मोड़-दर-मोड़ रास्ते की जानकारी देने की सुविधा. इससे ड्राइवर, रीयल-टाइम ट्रैफ़िक और रूट से जुड़ी अन्य पाबंदियों को ध्यान में रखते हुए, पॉइंट A से पॉइंट B तक आसानी से पहुंच सकते हैं.
- इवेंट लिसनर और रजिस्टर किए गए कॉलबैक के ज़रिए, रूट की प्रोग्रेस, जगह की जानकारी, स्पीड वगैरह के आधार पर इवेंट ट्रिगर करना.
डिफ़ॉल्ट रूप से 'Play कंसोल' का नया वर्शन चुनें
जब ग्राहक, Nav SDK को लागू करते हैं, तो यह मान लिया जाता है कि उन्हें मोड़-दर-मोड़ रास्ते की जानकारी देने वाली सुविधा की ज़रूरत है. इसलिए, Nav SDK के दस्तावेज़ (Android और iOS) में, मोड़-दर-मोड़ रास्ते की जानकारी देने की सुविधा के साथ Nav SDK को लागू करने का तरीका बताया गया है.
Android पर, ऐप्लिकेशन में मोड़-दर-मोड़ रास्ते की जानकारी देने वाला मैप दिखाने के लिए, SupportNavigationFragment या NavigationView का इस्तेमाल किया जाता है. वहीं, iOS पर GMSMapView का इस्तेमाल किया जाता है. इन यूज़र इंटरफ़ेस (यूआई) एलिमेंट को अपने ऐप्लिकेशन में जोड़ने पर, उसमें इंटरैक्टिव मैप और रास्ते के दिशा-निर्देश देने वाला यूज़र इंटरफ़ेस (यूआई) जुड़ जाता है.
अगले सेक्शन में, हम Android और iOS, दोनों के लिए, डिफ़ॉल्ट Nav SDK के मोड़-दर-मोड़ रास्ते की जानकारी देने वाली सुविधा के साथ काम करने वाले कोड की तुलना, हेडलेस Nav SDK के कोड से करेंगे. साथ ही, ज़रूरी बदलावों को हाइलाइट करेंगे.
समाधान
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);
जैसा कि आप देख सकते हैं, व्यू उस लेआउट की ओर इशारा करता है जिसका इस्तेमाल, नेविगेशन की सुविधा दिखाने के लिए किया जाना चाहिए. इस मामले में, SupportNavigationFragment के बजाय NavigationView बनाया जाता है.
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 वैरिएबल को किसी यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट (जैसे, टॉगल) से लिंक किया जा सकता है. इससे हेडलेस मोड को चालू या बंद किया जा सकेगा.
|
|
| ऐक्टिव नेविगेशन के साथ काम करने वाला 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 को छिपाने के असर को दिखाने के लिए है:
|
|
| पर ऐक्टिव नेविगेशन काम कर रहा है
iOS का सैंपल ऐप्लिकेशन |
हेडलेस मोड में वही ऐप्लिकेशन |
लागू करने पर विचार
हेडलेस मोड में, स्क्रीन से नेविगेशन मैप को छिपाया जाता है. इससे सिर्फ़ स्क्रीन टाइम बचता है. इससे डिवाइस की बैटरी लाइफ़ बढ़ जाती है. हालांकि, Nav SDK काम करता रहेगा. इसलिए, जगह की जानकारी के अपडेट और सभी इवेंट कॉलबैक सामान्य तौर पर ट्रिगर होंगे. इसलिए, इस कॉन्फ़िगरेशन का इस्तेमाल करने पर कोई खराब असर नहीं होगा.
नतीजा
इस दस्तावेज़ से पता चलता है कि Nav SDK कितना फ़्लेक्सिबल है और अलग-अलग ऑपरेटिंग सिस्टम की पाबंदियों को ध्यान में रखते हुए, हम इससे क्या-क्या कर सकते हैं. इससे ग्राहकों को, ड्राइवर के अनुभव को अपनी पसंद के मुताबिक बनाने में मदद मिलती है, ताकि ड्राइवर का ध्यान न भटके और सुरक्षा बेहतर हो.
अतिरिक्त संसाधन
अगर ऊपर बताई गई वजहों से, नेविगेशन के दौरान सूचनाएं बंद करनी हैं, तो ऐसा भी किया जा सकता है. इसके लिए, कृपया Nav SDK में, मोड़-दर-मोड़ रास्ते की जानकारी देने वाली सूचनाओं में बदलाव करना लेख पढ़ें.