Nav SDK – Monitorloser Modus

Einführung

Das Navigation SDK (Nav SDK) bietet eine erstklassige Turn-by-Turn-Funktion, die für Kunden und Fahrer sehr hilfreich sein kann, insbesondere für neue Fahrer oder Fahrer, die sich in der Region nicht auskennen. Es gibt jedoch bestimmte Anwendungsfälle, in denen Unternehmen die Aufmerksamkeit der Fahrer nicht durch eine Benutzeroberfläche für die Turn-by-Turn-Navigation ablenken möchten, aber trotzdem Fahrzeugstandorte erfassen und auf Ereignisse im Zusammenhang mit der gefahrenen Route reagieren möchten. Ein Beispiel sind Lkw-Fahrer, insbesondere wenn sie Gefahrgut transportieren. Bei anderen Unternehmen, die Lieferungen mit anderen Verkehrsmitteln durchführen, z. B. zu Fuß für kurze Strecken, ist die Turn-by-Turn-Navigation möglicherweise nicht erforderlich. Dadurch wird die Akkulaufzeit des Geräts verlängert.

Ebene

In diesem Dokument wird beschrieben, wie Unternehmen die Navigationskarte (Ansicht) im Nav SDK ausblenden und trotzdem alle Funktionen des Nav SDK in Bezug auf Standortbestimmung, Ereignisabos und Rückrufe nutzen können. Die im Headless-Modus vom Nav SDK erfassten Daten können verwendet werden, um die Möglichkeit zu verbessern, Fahrzeuge zu verfolgen und Ankunftszeiten genauer zu ermitteln, was letztendlich zu mehr Transparenz und Effizienz führt.

Das Navigation SDK ist eine native Android-/iOS-Bibliothek, die der Fahrer-App hinzugefügt wird. Im Mobilitätskontext ist es für Folgendes verantwortlich:

  • Abrufen von Standorten, die an Straßen ausgerichtet sind, von der App, die die Route ausführt. An Straßen angepasste Standorte sind genauer als der FusedLocationProvider (FLP) von Android, da das Straßennetz von Google verwendet wird, um Standorte an das nächste Straßensegment anzupassen. Dadurch sind die voraussichtlichen Ankunftszeiten und andere Informationen des FLP viel genauer.
  • Eine detaillierte Wegbeschreibung, die es Fahrern ermöglicht, unter Berücksichtigung von Echtzeit-Verkehrsinformationen und anderen Routenbeschränkungen effizient von A nach B zu gelangen.
  • Ereignisse basierend auf dem Routenfortschritt, dem Standort, der Geschwindigkeit usw. über Event-Listener und registrierte Callbacks auslösen.

Standardverhalten

Wenn Kunden das Nav SDK implementieren, wird davon ausgegangen, dass sie die Funktion für die detaillierte Wegbeschreibung benötigen. In der Dokumentation zum Nav SDK (Android und iOS) finden Sie daher eine Anleitung zur Implementierung des Nav SDK mit aktivierter Turn-by-Turn-Navigation.

Unter Android wird die detaillierte Karte in der App mit einem SupportNavigationFragment oder einer NavigationView gerendert, unter iOS mit einer GMSMapView. Diese UI-Elemente fügen Ihrer App die interaktive Karte und die Benutzeroberfläche für die detaillierte Routenführung hinzu.

Im nächsten Abschnitt vergleichen wir den Standardcode des Nav SDK mit dem Code des Headless Nav SDK für Android und iOS und heben die erforderlichen Änderungen hervor.

Lösung

Android

Unter Android ist das der Java-Code, der Teil der Nav SDK-Beispiel-App ist.

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

Wie Sie sehen, verweist die Ansicht auf das Layout, das zum Rendern der Navigation verwendet werden soll. In diesem Fall wird ein SupportNavigationFragment anstelle der NavigationView erstellt.

Damit das Nav SDK im Headless-Modus gestartet wird, müssen wir diese beiden Anweisungen einfach entfernen. Wenn Sie zwischen dem monitorlosen und dem nicht monitorlosen Modus (aktive Navigation) wechseln möchten, können Sie eine Variable verwenden, um festzulegen, ob der monitorlose Modus verwendet werden muss. Beispiel:

Boolean mHeadless = true;

Sie kann dann so verwendet werden:

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

Die Variable mHeadless kann mit einer UI-Komponente (z. B. einem Schalter) verknüpft werden, mit der der Headless-Modus aktiviert oder deaktiviert wird.

alt_text alt_text
Nav SDK mit aktiver Navigation (Headless-Modus deaktiviert) Dieselbe App, aber jetzt mit dem Nav SDK im Headless-Modus

Wie Sie im Beispiel rechts sehen, wird die Navigation des Nav SDK im Hintergrund ausgeführt, die detaillierte Wegbeschreibung ist jedoch deaktiviert.

iOS

Unter iOS kann der Headless-Modus ganz einfach aktiviert werden, indem Sie bei der Initialisierung von MapView die folgende Einstellung hinzufügen: \

mapView.isHidden = true


Beispiel:

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

So sieht es aus – der Bildschirm hängt von der Implementierung der Benutzeroberfläche ab. Der Screenshot dient nur zur Veranschaulichung der Auswirkungen des Ausblendens der mapView:

alt_text alt_text
Aktive Navigation auf

iOS-Beispiel-App

Dieselbe App im monitorlosen Modus

Hinweise zur Implementierung

Da im Headless-Modus lediglich die Navigationskarte auf dem Display ausgeblendet wird, wird nur die Displayzeit eingespart, was zu einer längeren Akkulaufzeit des Geräts führt. Da das Nav SDK jedoch weiterhin ausgeführt wird, werden Standortaktualisierungen und alle Event-Callbacks normal ausgelöst. Die Verwendung dieser Konfiguration hat also keine Nebenwirkungen.

Fazit

In diesem Dokument wird beschrieben, wie flexibel das Nav SDK ist und was wir in verschiedenen Betriebssystemen angesichts ihrer Einschränkungen erreichen können. Außerdem können Kunden die Fahreransicht anpassen, um Ablenkungen zu vermeiden und die Sicherheit zu erhöhen.

Zusätzliche Ressourcen

Wenn Benachrichtigungen während der Navigation aus den oben genannten Gründen deaktiviert werden müssen, ist dies ebenfalls möglich. Weitere Informationen finden Sie unter Turn-by-Turn-Benachrichtigungen im Nav SDK ändern.