नेविगेशन इवेंट के लिए सुनें

जब उपयोगकर्ता किसी रास्ते पर नेविगेट करता है, तब आपका ऐप्लिकेशन उन इवेंट को सुन सकता है.

खास जानकारी

नेविगेशन इवेंट सुनने के लिए, नीचे दिए गए इंटरफ़ेस का इस्तेमाल करें:

  • Navigator.ArrivalListener onArrival() की सेवा देता है कॉलबैक, जो डिवाइस के किसी डेस्टिनेशन पर पहुंचने पर ट्रिगर होता है.
  • RoadSnappedLocationProvider.LocationListener onLocationChanged() कॉलबैक, डिवाइस की जगह में बदलाव होने पर ट्रिगर होता है.
  • Navigator.RemainingTimeOrDistanceChangedListener onRemainingTimeOrDistanceChanged() कॉलबैक देता है, जो तब ट्रिगर होता है, जब अगली मंज़िल के लिए समय या दूरी में किसी दी गई राशि से ज़्यादा का बदलाव होता है.
  • Navigator.RouteChangedListener onRouteChanged() कॉलबैक, रूट बदलने पर ट्रिगर होता है.

कोड देखें

मंज़िल पर पहुंचने के समय का पता लगाएं

यहां, गंतव्य का मतलब आखिरी मंज़िल या वेपॉइंट से है. यहां की यात्रा पर हूं पहुंचने का पता लगाएं, Navigator.addArrivalListener() पर कॉल करें, जो डिवाइस के गंतव्य पर पहुंचने पर कॉलबैक के लिए रजिस्टर होता है.

पहुंचने पर, Android के लिए नेविगेशन SDK टूल चालू हो जाता है यह onArrival() कॉलबैक और मोड़-दर-मोड़ दिशा-निर्देश को रोकता है. आपको स्पष्ट रूप से कॉल करना होगा आगे बढ़ने के लिए Navigator.continueToNextDestination() और Navigator.startGuidance() को अगले वेपॉइंट पर मोड़-दर-मोड़ नेविगेशन जारी रखें.

जब आप continueToNextDestination() को कॉल करते हैं, तो नेविगेटर सभी को खारिज कर देता है पिछले डेस्टिनेशन की जानकारी. अगर आपको यह विश्लेषण करना है पिछले मार्ग सेगमेंट के बारे में जानकारी, आपको जानकारी फिर से प्राप्त करनी होगी नेविगेटर से continueToNextDestination() को कॉल करने से पहले.

मेमोरी लीक से बचने के लिए, आपको removeArrivalListener(listener) को तब कॉल करना होगा, जब आप लंबे समय तक लिसनर की ज़रूरत होती है.

mNavigator.addArrivalListener(new Navigator.ArrivalListener() {
    @Override
    public void onArrival(ArrivalEvent arrivalEvent) {
        displayMessage("onArrival: You've arrived at a waypoint: "
                + mNavigator.getCurrentRouteSegment().getDestinationWaypoint().getTitle(),
                DISPLAY_BOTH);
        // Start turn-by-turn guidance for the next leg of the route.
        if (arrivalEvent.isFinalDestination()) {
            displayMessage("onArrival: You've arrived at the final destination.",
                    DISPLAY_BOTH);
        } else {
            mNavigator.continueToNextDestination();
            mNavigator.startGuidance();
        }
    }
});

जगह की जानकारी से जुड़े अपडेट पाएं

इससे RoadSnappedLocationProvider पाएं NavigationApi, इसके बाद कॉल करें RoadSnappedLocationProvider.addLocationListener() डिवाइस की जगह या हेडिंग में बदलाव होने पर कॉलबैक के लिए रजिस्टर करें. नोट करें कि यह स्थान किसी सड़क पर स्नैप किया गया है, और इसलिए यह इससे अलग हो सकता है Google Play में, कई तरह से जांची गई सही जगह की जानकारी देने वाली कंपनी से मिली जगह की जानकारी सेवा स्थान API.

नेविगेशन SDK टूल, जगह की जानकारी के अपडेट उतनी बार देता है जितनी बार किया जा सकता है. जब जगह की जानकारी का अपडेट उपलब्ध होता है, तो नेविगेशन SDK टूल, onLocationChanged() कॉलबैक.

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

mRoadSnappedLocationProvider =
        NavigationApi.getRoadSnappedLocationProvider(getApplication());
if (mRoadSnappedLocationProvider != null) {
    mRoadSnappedLocationProvider.addLocationListener(
            new RoadSnappedLocationProvider.LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    displayMessage("onLocationUpdated: Navigation engine has provided a new"
                                    + " road-snapped location: "
                                    + location.toString(),
                            DISPLAY_LOG);
                }
            });
} else {
    displayMessage("ERROR: Failed to get a location provider", DISPLAY_LOG);
}

समय और दूरी के अपडेट पाएं

Navigator.addRemainingTimeOrDistanceChangedListener() पर कॉल करें शेष समय (सेकंड) या दूरी होने पर कॉलबैक के लिए पंजीकृत करने के लिए (मीटर में), दी गई सीमा से ज़्यादा बार बदलता है.

जब समय या दूरी में बदलाव तय राशि से ज़्यादा हो जाता है, नेविगेशन SDK टूल, onRemainingTimeOrDistanceChanged() कॉलबैक.

शेष समय और दूरी जानने के लिए, कॉल करें Navigator.getTimeAndDistanceList(). ध्यान दें कि सूची में समय और दूरी कुल हैं: वे समय और दूरी दिखाते हैं वर्तमान स्थान से हर वेपॉइंट तक, न कि किसी एक वेपॉइंट से दूसरे तक. TimeAndDistance ऑब्जेक्ट अब delaySeverity भी दिखाता है. इस ईनम में भारी, सामान्य, हल्का या अनजाना हो. यह उस रंग से मेल खाता है, मैप के यूज़र इंटरफ़ेस (यूआई) में eta की जानकारी देखें (बहुत ज़्यादा = लाल, मीडियम = पीला, हल्का = हरा). यह है इससे आपको अपना ईटीए फ़ुटर खुद बनाने में मदद मिलेगी.

मेमोरी लीक होने से बचने के लिए, आपको कॉल करना होगा Navigator.removeRemainingTimeOrDistanceChangedListener(listener) जब आपको सुनने वाले की ज़रूरत न हो.

अगर बचा हुआ समय इससे ज़्यादा बदलता है, तो नीचे दिया गया सैंपल कॉलबैक का अनुरोध करता है 60 सेकंड या बाकी दूरी में 100 मीटर से ज़्यादा का बदलाव हो सकता है.

mNavigator.addRemainingTimeOrDistanceChangedListener(60, 100,
        new Navigator.RemainingTimeOrDistanceChangedListener() {
            @Override
            public void onRemainingTimeOrDistanceChanged() {
                displayMessage("onRemainingTimeOrDistanceChanged: Time or distance estimate"
                        + " has changed.",
                        DISPLAY_LOG);
            }
        });

बिल्ट-इन सुविधा का इस्तेमाल करके, बचे हुए समय और दूरी की जानकारी दिखाई जा सकती है setEtaCardEnabled() तरीके का इस्तेमाल करके दिखाएं और TRUE वैल्यू वाला पैरामीटर पास करना. समय/दूरी को कम करने के लिए दिखाने के लिए, इस मान को FALSE पर सेट करें.

इसका इस्तेमाल करके आप एक से ज़्यादा वेपॉइंट के लिए ETA भी दिखा सकते हैं getTimeAndDistanceList() तरीका.

रास्ते के अपडेट पाएं

Navigator.addRouteChangedListener() को यहां कॉल करें रूट बदलने पर कॉलबैक के लिए रजिस्टर करें.

रास्ता बदलने पर, नेविगेशन SDK टूल onRouteChanged() कॉलबैक. कॉल किया जा सकता है Navigator.getRouteSegments और Navigator.getCurrentRouteSegment() रूट

मेमोरी लीक से बचने के लिए, आपको removeRouteChangedListener(listener) को तब कॉल करना होगा, जब आप लंबे समय तक लिसनर की ज़रूरत होती है.

mNavigator.addRouteChangedListener(new Navigator.RouteChangedListener() {
    @Override
    public void onRouteChanged() {
        displayMessage("onRouteChanged: The driver's route has changed. Current waypoint: "
                + mNavigator.getCurrentRouteSegment().getDestinationWaypoint().getTitle(),
                DISPLAY_LOG);
    }
});

नाइट मोड बदलने पर सूचना पाएं

NavigationView.addOnNightModeChangedListener पर कॉल करें या SupportNavigationFragment.addOnNightModeChangedListener ताकि नाइट मोड बदलने पर कॉलबैक के लिए रजिस्टर किया जा सके.

नीचे दिए गए उदाहरण में, नेविगेशन फ़्रैगमेंट.

mNavFragment.addOnNightModeChangedListener(new NavigationView.OnNightModeChangedListener() {
    @Override
    public void onNightModeChanged(NightModeChangedEvent nightModeChangedEvent) {
        displayMessage("Night mode is active: " + nightModeChangedEvent.inNightMode(),
        DISPLAY_LOG);
    }
});