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) Geräten mit Android läuft, z.B Tablets oder Handys. 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 die Verfahren 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 Geräte-GPS können die Daten von Quellen wie TCP Verbindungen, 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 sogenannter "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 angegeben werden. Auch ein mDNS-Name wie avnav.local kann benutzt 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 zum konfigurierten Port.
UsbConnection Daten können über einen angeschlossenen USB-Seriell-Wandler gesendet umd empfangen werden. Das erfordert allerdings USB-OTG-Funktionalität auf dem Gerät.
Bluetooth Eine Verbindung zu einem Bluetooth-Gerät. Das Pairing des Gerätes muss vorher außerhalb von AvNav erfolgen.
NMEA0183 service Eine Verbindung zu einem System, das seine NMEA0183 Daten als TCP-Service über mDNS (Bonjour/Avahi) bereit stellt.
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 Multiplexer reicht intern die Daten auch an die anderen Bereiche der App weiter. Der Dekoder bereitet die Daten dann 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 Webserver aktiviert werden. Das ermöglicht den Zugriff mit einem Browser von weiteren Geräten aus, so wie auch in der Server-Variante.

Der Anzeige-Teil der App kann beendet werden, sodass der Multiplexer allein im Hintergrund 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, in den zugreifenden Apps verbindet man sich über die Adresse 127.0.0.1 und den vorher 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. Das Verzeichnis kann beim Start der App ausgewählt werden. Das Verzeichnis muß beschreibbar sein, es wird daher ab Android 4.4 und höher auf dem internen Speicher liegen müssen
  • in einem beliebigen anderen Verzeichnis, vorzugsweise auf der SD Karte, als - "additional charts dir" in den Einstellungen
    Hier können allerdings keine "mbtiles"-Karten genutzt werden, diese müssen zwingend 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 vorinstalliert, die allerdings eine Online-Verbindung erfordern.

Wenn das gewählte Arbeitsverzeichnis  (Standard: interne-sd-Karte/avnav) noch nicht existiert, 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 auch die Beschreibung der App). Um sie in andere Verzeichnisse zu speichern oder Routen aus anderen Verzeichnissen zu laden (Upload-Funktion), sollte sinnvollerweise ein Dateimanager auf dem Android-Gerät 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 neben anderen Einstellungen z. B. die Verzeichnisse  für Karten und Tracks gesetzt werden.
Eine Liste aller 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 dadurch 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, muss zunächst die Einstellungsseite in der App aufgerufen werden, dort klickt man dann auf den "Android"-Button.
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 zunächst "externalAccess" aktiviert werden. Mit "mdnsEnabled wird dafür gesorgt, dass sich eine Bonjour-fähige App (z.B. BonjourBrowser)sich mit dem Server der App verbinden kann.

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

  • Normal
  • External Browser
Im Normal-Modus ist der Browser in die App integriert, sie wird wie eine normale Android-App genutzt.
Im "External-Browser"-Modus startet die App einen kleinen Webserverauf über einen einstellbaren Port (voreingestellt: 34567).



Hintergrund

Der NMEA-Multiplexer und auch der Web Server von AvNav können ohne Anzeige nur im Hintergrund laufen. Das kann genuzt werden, wenn die Anzeige für Benutzer 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 wird nach dem Start auf der Hauptseite über der Beenden-Dialog aufgerufen und dort "BACKGROUND" ausgewählt.

Über die Benachrichtigung (in der Android-Nachrichtenzeile) 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, das sinnvollerweise auf einer externen SD-Karte angelegt werden sollte /storage/sdcard/avnav/charts
show demo charts Anzeige der Demo-Karten. Das erfordert eine aktive Internetverbindung) ein
Alarm-Sounds Hier können die durch den Server erzeugten Alarm-Sounds abgeschaltet werden. Im Browser müssen diese ggf. zusätzlich abgeschaltet werden.
Hide System Bars Verbergen der 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. wird "UsbConnection" nur angezeigt, wenn auch 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 jeweilige Parameter auf seinen Default-Wert zurückgesetzt werden.

Einige Parameter tauchen bei mehreren Handlern auf:

Name Beschreibung default
enabled aktviert/deaktiviert diesen Handler je nach Handler
name Name für den Handler. Dieser kann in Blacklists verwendet werden. leer
port TCP- oder UDP-Port
filter/readerFilter/ sendFilter Das ist ein NMEA-Filter. Hier kann definiert werden, welche NMEA-Daten durchgelassen werden sollen. Mehrere Filter werden durch ein Komma (,) getrennt. Für Datensätze, die mit dem Dollarzeichen ($) 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
Ausschließlich für alle AIS-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 Kommas (,) 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 für die GPS-Position (in sec), nach dieser Zeit wird der Eintrag gelöscht, wenn keine neuen GPS-Daten empfangen wurden 10
nmeaAge erlaubtes Alter für NMEA-Daten (in sec), die keine Positionsdaten enthalten 600
aisAge erlaubtes Alter für AIS-Daten 1200
readTimeout Timeout in s für die Anzeige ob 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 sec) 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 sec) bevor ein neuer Trackpunkt geschrieben wird 10
length Länge des angezeigten Tracks in Stunden (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 sich auch andere Geräte verbinden (sonst nur auf dem eigenen Gerät).
Hinweis: Dieser Parameter sollte mit Vorsicht und nur in vetrauenswürdigen Netzen aktiviert werden. Innerhalb der App gibt es keinen weiteren Schutz!
aus
mdnsEnabled macht 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. Ansonsten wird nur emfangen. aus
readTimeout Markiere die Verbindung als inaktiv, wenn keine Daten nach der eingestellten Zeit (sec) eingegangen sind. 10
writeTimeout Schliesse die Verbindung, wenn ein NMEA-Datensatz nicht innerhalb der eingestellten Zeit (sec) geschrieben werden konnte. 5
connectTimeout Timeout für den Verbindungsaufbau (in sec, 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 auch andere Geräte sich verbinden. Andernfalls können sich nur Apps auf dem selben Gerät verbinden. aus
writeTimeout Schliesse die Verbindung, wenn ein NMEA-Datensatz nicht innerhalb der eingestellten Zeit (sec) geschrieben werden konnte. 5
readData Wenn aktiv, empfängt AvNav auch NMEA-Daten über eine aufgebaute Verbindung aus
mdnsEnabled mache den Service per mDNS im Netz 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, auf dem Daten empfangen werden ---
externalAccess wenn aktiv, können Daten von anderen Geräten empfangen werden, sonst nur innerhalb des selben Gerätes. aus
readTimeout zeige die Verbindung als inaktiv, wenn für die eingestellte Zeit (sec) keine Daten empfangen wurden. 10

UdpWriter

Ein UDP-Writer 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, die IP-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 sind, geben diese ihre NMEA-Ausgänge auf diese Weise im Netzwerk bekannt.
Der Vorteil ist, dass auch bei Wechsel des Netzwerkes der Zugriff im Normalfall wieder funktionieren wird und Verbindungen so automatisch wieder aufgebaut werden können.

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 der eingestellten Zeit (sec) aufgelaufen sind. 10
writeTimeout Schliesse die Verbidung, wenn ein Satz nicht innerhalb der eingestellten Zeit (sec) geschrieben werden konnte 5
connectTimeout Timeout für den Verbindungsaufbau (in sec, 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 angeschlossen wird. Es ist daher sinnvoll, zunächst AvNav zu starten und danach das USB-Gerät anzuschließen. Das Gerät kann dann direkt so konfiguriert werden, dass AvNav immer auf dieses Gerät zugreifen darf. AvNav startet dann 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 Markiere die Verbindung als inaktiv, wenn keine Daten nach der eingestellten Zeit (sec) aufgelaufen sind. 10

Bluetooth

Zum Verbinden z.B.  mit einem Bluetooth-GPS. Das Gerät muss zunächst über die Bluetooth-Einstellungen des Android-Geräts verbunden werden ("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 Markiere die Verbindung als inaktiv, wenn keine Daten nach der eingestellten Zeit (sec) aufgelaufen sind. 10