AvNav-Android

AvNav Android

Nachdem die Navigations-App für die Nutzung mit dem Raspberry Pi  bereits einige Jahre erfolgreich im Einsatz ist, gibt es jetzt auch eine Version, die direkt (ohne einen Raspberry) auf Android läuft. Sie erfordert Android ab 4.4 (KitKat).

Die aktuellste Version kann man unter Downloads herunterladen. Oder im AppStore.
Ältere Versionen oder daily builds findet man über die Installationsbeschreibung.

Sie verpackt im Wesentlichen die Web-App (siehe Beschreibung) in eine Android Applikation - siehe dort auch zum Erzeugen/Konvertieren der Karten.

Funktion 

(neu ab 20210424)

Die App besteht intern aus mehreren Funktionsblöcken .

Der NMEA Multiplexer verarbeitet NMEA0183 Daten von den verschiedenen Quellen. Neben dem internen GPS können die Daten von Quellen wie TCP Verbindunge, UDP Ports, USB Geräten oder Bluetooth Verbindungen kommen. Die meisten Quellen unterstützen das gleichzeitige Senden und Empfangen von Daten. Es können jeweils mehrere Quellen des gleichen Typs konfiguriert werden (in der App Konfiguration existiert für jede Quelle ein "Handler").

Name in der App Beschreibung
InternalGPS Die Daten des internen GPS werden als NMEA Daten eingespeist.
TcpReader Eine TCP Verbindung zu einem externen System. AvNav ist dabei ein TCP client und öffnet die Verbindung.
Als Adresse kann sowohl eine IP Adresse als auch ein hostname (auch ein mdns Name wie avnav.local) angegeben werden.
TcpWriter AvNav ermöglicht es einer anderen App oder einem anderen System sich zu verbinden und Daten zu empfangen. AvNav ist hier der TCP Server.
UdpReader AvNav empfängt UDP Daten auf dem konfigurierten Port
UdpWriter AvNav sendet UDP Daten zur konfigurierten Adresse und dem konfigurierten Port
UsbConnection Daten können über einen angeschlossenen USB-Seriell Wandler gesendet umd empfangen werden (erfordert USB-OTG Funktionalität auf dem Gerät)
Bluetooth Eine Verbindung zu einem Bluetooth Gerät. Das Pairing des Gerätes muss vorher ausserhalb von AvNav erfolgen.
NMEA0183 service Eine Verbindung zu einem System, das seine NMEA0183 Daten als TCP Service über mdns (Bonjour/Avahi) bereitstellt.
AvNav öffnet eine TCP Verbindung zu einem solchen Gerät.

Der NMEA Multiplexer kann sehr flexibel konfiguriert werden. Zu jeder Verbindung lassen sich Eingangs- und Ausgangsfilter festlegen.

Der Mulitplexer reicht intern die Daten auch an die anderen Bestandteile weiter. Der Dekoder bereitet die Daten für die Nutzung innerhalb der App auf.

Die eigentliche App mit der Kartendarstellung und den Anzeigen kann einerseits ganz normal als Android App genutzt werden. Parallel dazu kann der integrierte Web Server aktiviert werden. Das ermöglicht den Zugriff mit einem Browser von weiteren Geräten (so wie auch in der Server-Variante).

Der Anzeige-Teil der App kann beendet werden, so das der Multiplexer alleine im Hintegrund weiter läuft. Damit kann AvNav auch genutzt werden, um NMEA Daten für andere Android Apps bereitzustellen. In AvNav konfiguriert man dazu einen TcpWriter und in den anderen Apps verbindet man sicht dann mit 127.0.0.1 und dem konfigurierten Port).

Karten und gespeicherte Daten

Die Karten werden im gemf Format erwartet.Ab Version 20200325 auch als mbtiles oder xml files. Sie können in 2 Verzeichnissen liegen:

  • im charts Verzeichnis unterhalb des Arbeitsverzeichnisses (kann beim Start gewählt werden). Dieses muß beschreibbar sein und wird daher bei Android 4.4 und höher auf dem internen Speicher liegen müssen
  • in einem beliebigen anderen Verzeichnis (vorzugsweise auf der SD Karte) - "additional charts dir" in den Einstellungen
    Hier können allerdings keine mbtiles Karten genutzt werden, diese müssen erst in das interne Verzeichnis hochgeladen werden.

Die Karten müssen auf das Gerät in eines der Verzeichnisse kopiert oder in der App hochgeladen werden . Zusätzlich sind einige Demo-Karten vorhanden, die allerdings eine Online-Verbindung erfordern.

Wenn das gewählte Arbeitsverzeichnis  (Standard: interne-sd-Karte/avnav) noch nicht da ist, wird es beim ersten Start angelegt.

Die Track-Daten und Log Dateien werden in das Verzeichnis tracks unterhalb des Arbeitsverzeichnisses geschrieben.

Im Unterverzeichnis routes werden die Routen im gpx Format gespeichert. Routen und Tracks können aus der App über die Download Funktion an andere Apps weitergegeben werden (siehe Beschreibung der App). Um sie in andere Verzeichnisse zu speichern oder Routen aus anderen Verzeichnissen zu laden (upload Funktion), sollte sinnvollerweise ein Dateimanager installiert sein.

Benutzung

Nach dem erstmaligen Start der App befindet man sich auf einer Einführungsseite:


Nach dem Klick kommt man auf die Einstellungsseite:

Hier können z.B. die Verzeichnisse  für Karten und Tracks gewählt werden, sowie einige weitere Einstellungen.
Eine Liste der Einstellungen findet sich hier.
Die Einstellungen für die NMEA Datenquellen (und einige weitere) erreicht man in der App über die Server/Status Seite .

Die Settings Seite kann über den OK button (oben rechts) oder über den Zurück-Button verlassen werden. Man erreicht die Hauptseite der App.


Im Bild ist wird eine gültige Position (oberer grüner Punkt) und bisher noch keine gültigen AIS Daten (unterer roter Punkt) empfangen.
Um zu den Android Einstellungen zu gelangen, zunächst die Einstellungsseite in der App aufrufen, dort dann auf den Android Button klicken.
Bei weiteren Starts erreicht man sofort die Hauptseite der App.

Externer Zugriff

(neu ab 20210424).

Die App ermöglicht es, das man sich mit einem Browser von anderen Geräten verbinden kann. Dazu muss in der App der Web Server aktiviert werden (Status/Server Seite ).
Bei der Aktivierung des Web Servers muss dann "externalAccess" aktiviert werden. Mit "mdnsEnabled wird dafür gesorgt, das eine Bonjour-fähige App (z.B. BonjourBrowser)sich mit dem Server verbinden kann.

In älteren Versionen hat die App dafür 2 Modi genutzt.

  • Normal
  • External Browser
Im Normal-Modus ist der Browser in der App integriert und sie wird wie eine normale Android App genutzt.
Im External-Browser Mode startet die App einen kleinen Webserver (also spielt so ein wenig Raspberry...) auf einem einstellbaren Port (34567).



Hintergrund

Der NMEA Multiplexer (und auch der Web Server) von AvNav kann im Hintergrund laufen. Das kann genuzt werden, wenn die eigentliche Anzeige auf einem anderen Gerät erfolgen soll - oder wenn eine andere App für die Navigation genutzt wird und nur der Multiplexer von AvNav benötigt wird.

Dazu nach dem Start auf der Hauptseite über den Beenden-Dialog aufrufen und dort "BACKGROUND" auswählen.

Über die Benachrichtigung (in der Android Nachrichten Zeile) kann die App wieder in den Vordergrund geholt - oder direkt beendet werden.


Einstellungen

Die Einstellungen gliedern sich in zwei Teile:

  • Spezielle Android Einstellungen
  • Einstellungen für den Multiplexer und andere Hauptbestandteile

Die Android-Einstellungen erreicht man über den Button auf der Einstellungsseite bzw. der Server/Status Seite.

Android Main Einstellungen

Name Bedeutung Default
working directory das Arbeitsverzeichnis (mit den Unterverzeichnissen charts,tracks, routes) /storage/sdcard/avnav
additional charts directory ein zusätzliches Kartenverzeichnis (sinnvoll auf der externen SD Karte) /storage/sdcard/avnav/charts
show demo charts Anzeige der Demo Karten (erfordert Internet Verbindung) ein
Alarm sounds Hier können die durch den Server erzeugten Alarm-Sounds abgeschaltet werden. Im external Browser mode müssen diese im Browser ggf. zusätzlich abgeschaltet werden.
Hide System Bars Verberge die Android Kopf- und Fusszeile
reset to defaults Rücksetzen der Multiplexer-Einstellungen auf default-Werte


Android Sound Einstellungen

Name Bedeutung Default
Sound for XXX alarm Hier kann der Ton für die verschiedenen Alarme gewählt werden
reset to defaults Rücksetzen der Sound-Einstellungen auf Defaults

Multiplexer Einstellungen

(neu ab 20210424)

Die Einstellungen für den Multiplexer sind auf der Status/Server Seite verfügbar. Für jede Funktion (z.B. für jede Quelle im Multiplexer) ist ein sogenannter "Handler" vorhanden, der hier konfiguriert werden kann.

Weitere Quellen können über den Button hinzugefügt werden. Es werden dann die Handler angeboten, die möglich sind (z.B. UsbConnection nur, wenn ein USB Gerät angeschlossen ist).

Neben den angezeigten Handlern in der Status übersicht existiert im Normalfall ein Button, mit dem man den Handler bearbeiten kann.
Die im Bearbeitungs-Dialog angezeigten Parameter haben meist einen Button, über den eine Hilfe angezeigt wird. Mit dem Button kann der jeweile Parameter auf seinen default Wert zurückgesetzt werden.

Einige Parameter tauchen bei mehreren Handlern auf:

Name Beschreibung default
enabled Aktviert/Deaktiviert diesen Handler ja nach Handler
name Name für den Handler. Dieser kann in blacklists verwendet werden. leer
port TCP oder UDP port
filter/readerFilter/ sendFilter ein NMEA filter. Hier kann definiert werden, welche NMEA Daten durchgelassen werden sollen. Mehrere Filter werden durch , getrennt. Für Datensätze, die mit $ beginnen, werden die nächsten beiden Zeichen ignoriert (die Talker Id). Ein Filter für alle RMC Sätze sieht z.B. so aus:
$RMC
Für alle AIS Daten (aber keine anderen NMEA Daten):
!
Alle RMC und RMB Sätze:
$RMC,$RMB
Falls der Filter negiert werden soll, muss ein ^ dem Ausdruck vorangestellt werden.
^$RMB,^$APB
leer
blacklist eine durch , getrennte Liste von Namen. NMEA Daten von diesen Quellen werden nicht ausgesendet.

Die vorhandenen "Handler" und ihre Parameter (es werden nur die spezifischen Parameter beschrieben)

Decoder

Parameter Beschreibung default
ownMMSI eigene MMSi, diese wird in der AIS Anzeige ausgeblendet leer
posAge erlaubtes Alter (in s) für die GPS Position, nach dieser Zeit wird sie gelöscht, wenn keine neue empfangen wurde 10
nmeaAge erlaubtes Alter (in s) für NMEA Daten, die keine Position sind 600
aisAge erlaubtes Alter für AIS Daten 1200
readTimeout Timeout in s für die Anzeige pb valide NMEA Daten empfangen werden 10

Route

Parameter Beschreibung default
computeRMB erzeuge NMEA RMB Datensätze, wenn ein Routing aktiv ist an

Track

Parameter Beschreibung default
interval Intervall in s für das Schreiben des Tracks als gpx Datei. 300
distance Minimaler Abstand in m bevor ein neuer Trackpunkt geschrieben wird 25
minTime Minimale Zeit in s bevor ein neuer Trackpunkt geschrieben wird 10
length Länge des angezeigten Tracks in h 25

Logger

NMEA logger

WebServer

Parameter Beschreibung default
port der TCP Port, auf dem der Server Verbindungen annimmt 8080
external Wenn aktiv, dann können auch andere Geräte sich verbinden (sonst nur auf dem eigenen Gerät).
Hinweis: Das sollte mit Vorsicht aktiviert werden (nur in vetrauenswürdigen Netzen). Innerhalb der App gibt es keinen weiteren Schutz!
aus
mdnsEnabled mache den Service per mdns bekannt an
mdnsService Der Name unter dem die App per mdns erreichbar ist avnav-android

InternalGPS

Das GPS des Gerätes.

MDNSResolver

Der Handler für die Auflösung und das Bekanntmachen von MDNS (Bonjour/Avahi) Services.

TcpReader

Parameter Beschreibung default
ipAddress Die IP Adresse oder der Hostname für den Server, der kontaktiert werden soll. Das kann auch ein MDNS Name wie z.B. avnav.local sein. ---
port Der Ip Port zu dem eine Verbindung aufgebaut werden soll. ---
sendOut Wenn aktiviert, werden auch NMEA Daten gesendet (sonst nur emfangen) aus
readTimeout Zeige die Verbindung inaktiv, wenn keine Daten nach dieser Zeit (Sekunden) 10
writeTimeout Schliesse die Verbidung, wenn ein Satz nicht innerhalb dieser Zeit (Sekunden) geschrieben werden konnte 5
connectTimeout Timeout für den Verbindungsaufbau (Sekunden, 0 - System-default) 0
closeOnTimeout Schliesse die Verbindung (und öffne sie erneut) wenn das readTimeout erreicht wird an

TcpWriter

Ein TCPWriter stellt die NMEA Daten für andere Anwendungen bereit.

Parameter Beschreibung default
port Der Port, auf dem der Server Verbindungen annimmt ---
externalAccess Wenn aktiv können andere Geräte sich verbinden (sonst nur Apps auf dem gleichen Gerät). aus
writeTimeout Schliesse die Verbidung, wenn ein Satz nicht innerhalb dieser Zeit (Sekunden) geschrieben werden konnte 5
readData Wenn aktiv, empfängt AvNav auch NMEA Daten über eine aufgebaute Verbindung aus
mdnsEnabled mache den Service per mdns bekannt (type: _nmea-0183._tcp) aus
mdnsService Der Name unter dem dieser Server per mdns erreichbar ist

UdpReader

Ein UDP Reader empfängt Daten von anderen Apps/Systemen.

Parameter Beschreibung default
port der UDP port, uaf dem Daten empfangen werden ---
externalAccess wenn aktiv können Daten von anderen Geräten empfangen werden, sonst nur innerhalb des Gerätes aus
readTimeout zeige die Verbindung als inaktive, wenn für diese Zeit (Sekunden) keine Daten empfangen wurden. 10

UdpWriter

Ein UdpWriter sendet NMEA Daten per UDP an eine andere App.

Parameter Beschreibung default
ipaddress die IP Adresse oder der Hostname des Ziel-Computers. Es kann auch ein mdns Name wie avnav.local genutzt werden ---
port Der Ziel-Port , an den Daten gesendet werden sollen ---
broadcast Sende die Daten als Broadcast (Adresse muss dann eine gültige Broadcast Adresse sein) aus

NMEA0183 Service

Ein NMEA0183 Service arbeitet im Wesentlichen wie ein TcpReader. Allerdings werden hier nicht Zieladresse und Port vorgegeben. Stattdessen wird der Name eines (MDNS) Services (type: _nmea-0183._tcp) aus einer Liste der verfügbaren Services gewählt. Falls z.B. im Netz ein SignalK server oder ein AvNav Server (> 20210415) vorhanden ist, machen diese ihre NMEA Ausgänge auf diese Weise bekannt.
Der Vorteil ist, das auch bei Wechsel des Netzwerkes der Zugriff im Normalfall wieder funktionieren wird und die Verbindung wieder aufgebaut werden kann.

Parameter Beschreibung default
service der Name des Services (Auswahl aus der Liste der gefundenen) ---
sendOut sende NMEA Daten auf dieser Verbindung
readTimeout Zeige die Verbindung inaktiv, wenn keine Daten nach dieser Zeit (Sekunden) 10
writeTimeout Schliesse die Verbidung, wenn ein Satz nicht innerhalb dieser Zeit (Sekunden) geschrieben werden konnte 5
connectTimeout Timeout für den Verbindungsaufbau (Sekunden, 0 - System-default) 0
closeOnTimeout Schliesse die Verbindung (und öffne sie erneut) wenn das readTimeout erreicht wird an

UsbConnection

AvNav wird aktiv, wenn ein USB Gerät engeschlossen wird. Es ist sinnvoll zunächst AvNav zu starten und danach das USB Gerät anzustecken. Es kann dann direkt ausgewählt werden, das AvNav immer auf dieses Gerät zugreifen darf und AvNav startet auch sofort den Dialog zur Konfiguration des Gerätes.

Parameter Beschreibung default
device Das angeschlossene USB Gerät (genauer: der Anschluss des Gerätes), Auswahl aus einer Liste ---
baud rate Die Baudrate 9600
flowControl none|xon/xoff|rts/cts - Auswahl der Flusssteuerung (muss vom Adapter unterstützt werden) none
sendOut sende NMEA Daten auf dieser Verbindung aus
readTimeout Zeige die Verbindung inaktiv, wenn keine Daten nach dieser Zeit (Sekunden) 10

Bluetooth

Zum Verbinden z.B.  mit einem Bluetooth GPS, dieses zunächst über die Bluetooth Einstellungen (ausserhalb der Applikation) "pairen".
Parameter Beschreibung default
device Das Bluetooth Gerät. Bei der Einrichtung werden alle Geräte angeboten, die bereits bekannt sind, erst danach wird versucht, das Gerät zu erreichen. ---
sendOut sende NMEA Daten auf dieser Verbindung aus
readTimeout Zeige die Verbindung inaktiv, wenn keine Daten nach dieser Zeit (Sekunden) 10