Navigasyon etkinliklerini dinleme

Uygulamanız, kullanıcı bir rota üzerinde gezinirken gerçekleşen etkinlikleri dinleyebilir.

Genel Bakış

Gezinme etkinliklerini dinlemek için aşağıdaki arayüzleri kullanın:

Kodu inceleyin

Bir hedefe varışı algılama

Bu durumda hedef, son bir hedefi veya ara noktayı ifade eder. Alıcı: varış algıla, Navigator.addArrivalListener() numaralı telefonu ara, Cihaz bir hedefe ulaştığında bir geri çağırma kaydedilir.

Hedefe varıldığında Android için Navigasyon SDK'sı etkinleşiyor onArrival() geri arama yapar ve adım adım yardımı durdurur. Bu durumda açıkça İlerlemek için Navigator.continueToNextDestination() bir sonraki ara noktaya ve Navigator.startGuidance() adım adım navigasyona devam etme.

continueToNextDestination() öğesini çağırdığınızda kılavuz, tüm öğeleri siler önceki varış noktası hakkındaki bilgileri gösterir. Belirli bir içeriği analiz etmek önceki güzergâh segmenti hakkında bilgiler varsa, bu bilgileri continueToNextDestination() adlı kişiyi aramadan önce kılavuzdan.

Bellek sızıntısını önlemek için şu durumlarda removeArrivalListener(listener)'ı aramanız gerekir: dinleyiciye ihtiyaç duyulma ihtimali yüksektir.

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();
        }
    }
});

Konum güncellemelerini alma

Şu konumdan bir RoadSnappedLocationProvider edinin: NavigationApi, ardından sesli arama yapın RoadSnappedLocationProvider.addLocationListener() kullanarak bir geri arama kaydı oluşturun. Bu konumun bir yola sabitlendiğini ve bu nedenle yönden farklı olabileceğini unutmayın Google Play'de çok kaynaklı konum sağlayıcısı tarafından döndürülen konum hizmet konum API'leri.

Navigasyon SDK'sı, konum güncellemelerini mümkün olduğunca sık sağlar. yapmasını sağlar. Bir konum güncellemesi mevcut olduğunda, Navigasyon SDK'sı onLocationChanged() geri arama.

Yola sığdırılan konum güncellemeleri navigasyondan bağımsızdır ve ve navigasyon durduktan sonra da devam edebilir. Konum güncellemelerine abone olmak pilin bitmesine, bellek sızıntısına veya cihazın konumunun yanlışlıkla toplanmasına neden olur konum güncellemelerini arka planda çalışır durumda bırakırsanız Telefonla arama RoadSnappedLocationProvider.removeLocationListener bu sayede dinleyiciye ihtiyaç duymazsınız.

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);
}

Süre ve mesafe güncellemelerini alın

Navigator.addRemainingTimeOrDistanceChangedListener() numaralı telefonu arayın kalan süre (saniye) veya mesafe olduğunda bir geri çağırma için kaydolun (metre) belirli bir eşikten daha fazla değişir.

Süre veya mesafedeki değişiklik belirtilen tutarı aştığında, Navigasyon SDK'sı onRemainingTimeOrDistanceChanged() geri arama.

Kalan süreyi ve mesafeyi öğrenmek için şu numarayı arayın: Navigator.getTimeAndDistanceList(). Lütfen saatler ve mesafeler kümülatiftir: süreyi ve mesafeyi gösterir başka bir ara noktaya değil, her bir ara noktaya yönlendirmenizi sağlar. TimeAndDistance nesnesi artık delaySeverity değerini de döndürüyor. Bu sıralama ağır, orta, hafif veya bilinmeyen olabilir. Bu, belirttiğiniz renge CANNOT TRANSLATE Bu kendi eta altbilginizi oluşturmanız gerektiğinde faydalıdır.

Bellek sızıntılarını önlemek için şunu arayın: Navigator.removeRemainingTimeOrDistanceChangedListener(listener) bu sayede dinleyiciye ihtiyaç duymazsınız.

Aşağıdaki örnekte, kalan süre şundan daha fazla değişirse geri aranma isteğinde bulunulur: 60 saniye veya kalan mesafe 100 metreden fazla değişir.

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

Kalan süre ve mesafe bilgilerini yerleşik olarak setEtaCardEnabled() yöntemini kullanarak görüntüleyin ve TRUE değerine sahip bir parametre iletilmelidir. Zamanı/mesafeyi azaltmak için bu değeri FALSE olarak ayarlayın.

Ayrıca getTimeAndDistanceList() yöntemini kullanabilirsiniz.

Rota güncellemelerini alın

Şu numara için Navigator.addRouteChangedListener() numaralı telefonu arayın: rota değiştiğinde bir geri çağırma için kaydolun.

Rota değiştiğinde, Navigasyon SDK'sı onRouteChanged() geri arama. Şu numarayı arayabilirsiniz: Navigator.getRouteSegments ve Navigator.getCurrentRouteSegment() yeni yol gösterir.

Bellek sızıntısını önlemek için şu durumlarda removeRouteChangedListener(listener)'ı aramanız gerekir: dinleyiciye ihtiyaç duyulma ihtimali yüksektir.

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);
    }
});

Gece modu değiştiğinde algıla

Şu numarayı arayın: NavigationView.addOnNightModeChangedListener veya SupportNavigationFragment.addOnNightModeChangedListener gece modu değiştiğinde geri aranmak için kaydolun.

Aşağıdaki örnekte, bir cihazda gece modu değişikliklerini dinleme gezinme parçasına sahip olabilir.

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