Forum: PC-Programmierung Daten in Android App


von Alligator (Gast)


Lesenswert?

Hallo,

Ich habe eine Android App, die meinen elektrischen Bootsmotor 
kontrolliert. Damit kann ich das Boot auf Autopilot fahren lassen, zB 
indem ich eine Route per Google-Maps overlay zeichne, also direkt in der 
App. Blöd nur, dass das keine Seekarte ist und man im Zweifel Wegpunkte 
irgendwo und blaue setzt. Deshalb würde ich gern GPX Dateien in die App 
"laden".
Im Prinzip werden die Routen die man in der App zeichnet irgendwie 
gespeichert. Ich weiß nur nicht wie. Ich vermute Mal irgendeine 
Datenbank.
Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da 
heranzutasten, diese Datenbank zu bearbeiten?

von René H. (mumpel)


Lesenswert?

Hallo!

Da würde ich einfach den Programmierer der App fragen. Ändern kannst Du 
das aber m. W. nur wenn es XML-Dateien sind, meist aber nur mit 
Adminrechten (dazu muss das Smartphone gerootet werden). Und ohne 
XML-Kenntnisse wirst Du es schwer haben.

Gruß, René

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Bei einem Boot sollte man die Wegpunkte schon ins Blaue setzen. Das ist 
das Wasser. Grün wäre falsch.

von Rolf M. (rmagnus)


Lesenswert?

PittyJ schrieb:
> Bei einem Boot sollte man die Wegpunkte schon ins Blaue setzen. Das ist
> das Wasser. Grün wäre falsch.

Der Punkt ist, dass es bei einer Seekarte auf dem Wasser noch etwas mehr 
gibt als nur "das Blaue".

Alligator schrieb:
> Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da
> heranzutasten, diese Datenbank zu bearbeiten?

Du müsstest halt mehr über die App selbst herausfinden. Oder du 
schneidest die Kommunikation zwischen der App und der Steuerung mit und 
versuchst, das Protokoll nachzubilden.
Es kommt letztendlich auch darauf an, ob hier auf Standards gesetzt oder 
irgendwas durchweg proprietäres verwendet wird.

von Joachim (Gast)


Lesenswert?

Alligator schrieb:
> Im Prinzip werden die Routen die man in der App zeichnet irgendwie
> gespeichert. Ich weiß nur nicht wie. Ich vermute Mal irgendeine
> Datenbank.
> Könnte mir jemand ein paar Tipps geben, wie man versuchen würde, sich da
> heranzutasten, diese Datenbank zu bearbeiten?

Ich würde als erstes einfach mal schauen, was die App so an Daten 
speichert.
Unter Android hat glaube ich jede App normalerweise ich ein eigenes 
Verzeichnis, in dem die Daten der App abgelegt werden. Daher würde ich 
einfach als erstes mal untersuchen, was da so für Dateien liegen.

Die Standard-Datenbank unter Android ist glaube ich sqlite. Von daher 
findest Du im Daten-Verzeichnis der App möglicherweise sogar irgendeine 
sqlite-Datenbank-Datei, die Du vglw. einfach bearbeiten kannst.

Ansonsten hättest Du zumindest theoretisch auch die Möglichkeit, den 
Datenverkehr zwischen Deinem Smartphone und dem Motor mitzuschneiden, 
das Protokoll zu analysieren und Deine eigene App zu schreiben. Der 
Datenverkehr wird ja sicherlich per Bluetooth geschehen, dann kann man 
ihn über die Android-"Entwickleroptionen" bequem mitschneiden und in 
Wireshark analysieren.

von El Honko (Gast)


Lesenswert?

Was soll denn das Rumgeeiere? Du möchtest Hilfe, dann liefere wenigstens 
ein paar Fakten, wie z.B. den Namen der App.

Wenn die App wirklich so beschränkt ist (oder hast du gar kein richtiges 
Boot, sondern nur ein Fernsteuerspielzeug oder Bait-Boot?), dann 
analysiere lieber, wie die Daten an den "Autopiloten" gesendet werden 
und implementiere das neu.

Gibt ja genügend gute Software rund um OpenCPN und Avnav für echte Boote 
und rund um Ardupilot für Ferngesteuertes, welche man ggf. nutzen 
könnte.

von Alligator (Gast)


Angehängte Dateien:

Lesenswert?

Es handelt sich um die App "Helmsman" von Haswing, einem chinesischen 
Hersteller. Die App verbindet sich mit der Verbedienung des Motors via 
Bluetooth und diese verbindet sich wiederum mit dem Motor. Lädt man eine 
Karte, werden die einzelnen Wegpunkte als GPS Datenpunkte an den Motor 
gesendet. Im Prinzip ist der Motor dann also autonom, fährt bis zum 
letzten und hält die Position.

Ich will aber gar nicht in die Kommunikation des Motors eingreifen, 
sondern nur der App eine anderweitig erstellte Karte unterschieben. 
Anbei ist ein Screenshot des Verzeichnisses der App, was da an Dateien 
vorhanden ist.

von PittyJ (Gast)


Lesenswert?

Naja, mit den Dateinamen kommt man kein Stück weiter.
Da sollte man mal reinschauen.

Und Matlab-Code wird das bestimmt nicht sein.

Also schau doch mal in die Dateien rein, ob da was nettes drinnen steht. 
Wenns kein ASCII ist, dann kommt man eh nicht weiter. Aber vielleicht 
ist da ja irgendwo eine Textliste oder ähnliches.

Wenn SQLITE ist, dann kann man manchmal die Datenbank auch selber 
fragen, welche Tabellen und Attribute vorhanden sind.
SQLITE ist allesdings nicht ASCII, doch ein more auf der Kommandozeile 
zeigt ähnliche Steuerbytes an, so dass man darauf schliessen kann. Und 
dann ist programmieren angesagt. Wobei SQLITE in C recht einfach zu 
bedienen ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.