π

Android Automate Script zur Senden der aktuellen GPS-Position

Show Sidebar

Dieser Blogbeitrag ist eine Aktualisierung meines vorherigen Beitrages. Hintergrund eine kleine notwendige Anpassung im Skript zum Senden der GPS-Position. In der ersten Version habe ich vergessen den GPS Fix Zeitpunkt zu definieren. Dies hat dazu geführt, dass beim Empfänger eine alte GPS-Position angezeigt wurde. Des Weiteren habe ich die beiden Github-Projekte zu einem Projekt zusammengefasst.

In diesem Blogbeitrag möchte ich euch ein kleines Skript von mir vorstellen, mit dem auf einem Android Smartphone per SMS-Anfrage automatisch eine SMS mit GPS-Positionsdaten gesendet wird. Bei dem Skript handelt es sich um ein Automate-Skript. Automate ist eine App die es ermöglicht bestimmte Aufgaben am Android Smartphone zu automatisieren. Die Skripterstellung erfolgt grafisch in Form eines Flussdiagramms und man benötigt keine großartigen Programmiererfahrungen.

Motivation für das Skript und alternative Apps

Die Motivation für das Skript bestand darin, dass meine Eltern eine Möglichkeit benötigten, wenn mein Vater auf längeren Radtouren unterwegs ist, meine Mutter die Möglichkeit hat, seine Position ohne eine Interaktion seinerseits zu erhalten. Zunächst machten meinen Bruder und mich auf die Websuche, ob wir für diesen Anwendungsfall auf bestehende Apps zurückgreifen können. Dabei stießen wir schnell auf Testberichte und Sammlungen von Tracking Apps für Freunde und Familien, wie diese hier. Dabei gibt es kostenpflichtige und freierhältliche Apps. Die meisten Apps verwenden Cloud-Dienste. Da wir beide nicht so die Fans von Cloud-Services sind und gerne Wissen, was mit den versendeten Daten passiert, sind diese für uns ausgeschieden. Aus meiner lokalen OpenstreetMap Community habe ich von hauk oder Nextcloud-Apps erfahren. Da ich allerdings über keinen eigenen Server verfüge, sind auch diese Anwendungen ausgeschieden. Da mein Bruder und ich in der Vergangenheit schon diverse Aufgaben via Tasker-App automatisiert haben, kam die Idee dies über diese Schiene zu probieren. Ich habe mich für die Automate-App entschieden, weil diese kostenlos ist und ich in den letzten Jahren auf diese App umgestiegen bin. Anfangs dachten wir, dass wir mit dieser Methode scheitern werden, weil meine Eltern die Signal-App auch als SMS-App verwenden. Allerdings haben erste Versuche gezeigt, dass die SMS von der Automate-App gelesen werden können.

Voraussetzungen

Das Skript

Um den oben beschriebenen Anwendungsfall abzudecken, benötige ich zwei Skripte. Ein Skript fragt nach der GPS-Position nach, das andere Skript antwortet aufgrund der SMS mit den GPS-Positionsdaten.

Skript zur Anfrage der GPS-Position

Dieses Skript ist sehr einfach aufgebaut. Es besteht im Grunde nur aus der Funktion, eine SMS mit einem bestimmten Text an eine definierte Nummer zu senden. Die Nummer wird dabei in einem eigenen Variablen Block gesetzt. Dabei ist es wichtig, dass die Telefonnummer zwischen zwei Hochkomma gesetzt wird, damit sie als Text erkannt wird, vor allem wenn man wie ich die Ländervorwahl verwendet.

Die Telefonnummer als Variable speichern
Die Telefonnummer als Variable speichern (klicken für größere Version)

Bei dem Funktions-Block für die ausgehende SMS ist bei der Telefonnummer die zuvor definierte Variable zu verwenden. Die Option "Hide from messaging app" hatte bei mir keine Auswirkung, die SMS werden in Signal trotzdem angezeigt.

Funktionsblock zum Versenden der Anfrage-SMS
Funktionsblock zum Versenden der Anfrage-SMS (klicken für größere Version)

Das fertige Skript schaut wie folgt im Ablauf aus.

Aufbau des Skripts zur Anfrage der GPS-Position per SMS
Aufbau des Skripts zur Anfrage der GPS-Position per SMS (klicken für größere Version)

Das Skript hab ich hier als flo-Datei bereitgestellt. Diese Datei muss nur mehr in die Automate-App importiert und Telefonnummer angepasst werden.

Um das Skript auszuführen, habe ich es meinen Eltern als App-Starter auf den Homescreen gelegt.

Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen
Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen (klicken für größere Version)

Skript zur Sendung der GPS-Position

Das zweite Skript beschäftigt sich mit dem Empfang der SMS aus Skript 1 und dem Versand der GPS-Position.

Auch hier wurde zuvor die Telefonnummer als Variable definiert, um sie im Weiteren Verlauf nicht ständig eingeben zu müssen und so Tippfehler vermeidet. Des Weiteren wurde der Nachrichtentext ebenfalls als Variable definiert, da die Position nur aufgrund eines bestimmten Textes versendet werden soll.

Warten auf den Empfang der SMS zur Positionsanfrage
Warten auf den Empfang der SMS zur Positionsanfrage (klicken für größere Version)

Danach hab ich einen Zwischenblock eingebaut, der überprüft, ob GPS überhaupt aktiv läuft. Wenn nicht, dann wird keine SMS versendet und es wird erneut auf eine neue SMS gewartet. Sicherlich wäre es praktisch, wenn das Skript die GPS-Funktion selbstständig aktiviert, dies wird allerdings von Android aufgrund von Sicherheitsrichtlinien nicht erlaubt. Ist GPS aktiv, erfolgt die Ermittlung der GPS-Position. Für die beiden Koordinaten setze ich je eine Variable, die im weiteren Verlauf zur Anwendung kommen.

Automate Block zur Ermittlung der GPS-Position
Automate Block zur Ermittlung der GPS-Position (klicken für größere Version)

In diesem Block ist es wichtig für GPS-FIX den Wert 0 zu definieren, denn dadurch wird immer die aktuelle GPS-Position ermittelt und in weiterer Folge versendet.

Wert für GPS-FIX auf 0 setzen
Wert für GPS-FIX auf 0 setzen (klicken für größere Version)

Die zuvor erstellten Variablen für die beiden Koordinaten kommen nun zum Einsatz. Um dem SMS-Empfänger eine komfortable Möglichkeit der Anzeige der GPS-Position zu bieten, habe ich mich für die Verwendung eines OSMAnd-Links entschieden. In der OSMAnd-App ist es nämlich möglich Positionen per Weblink zu teilen. Der Link hat die Form von https://osmand.net-go?lat="wert"&lon="wertLAT"&z="wertLONG" . In Automate müssen daher nur mehr die zuvor erstellten Variablen in die URL eingesetzt werden. Der Link wird in einer eigenen Variable gespeichert, um beim Versenden der SMS auf diese zugreifen zu können.

Generierung des SMS Textes mit den Koorindaten als OSMAnd Link
Generierung des SMS Textes mit den Koorindaten als OSMAnd Link (klicken für größere Version)

Beim Versender der SMS kann wieder auf die Variable der Telefonnummer, die bereits beim Empfang zum Einsatz kam, verwendet werden. Unter "Message" wird die vorher erstelle Variable "varMessage", die den OSMAnd-Link enthält, eingefügt.

Funktionsblock zum Versenden der SMS mit den OSMAnd-Link
Funktionsblock zum Versenden der SMS mit den OSMAnd-Link (klicken für größere Version)

Der komplette Ablauf des Skriptes ist in der nachfolgenden Grafik ersichtlich. Wie beim vorherigen Skript stelle ich es als flo-Datei via github zur Verfügung.

Aufbau des Skripts zum Senden der GPS-Position per SMS
Aufbau des Skripts zum Senden der GPS-Position per SMS (klicken für größere Version)

Bei diesem Skript hab ich mich dazu entschieden, dass es ständig im Hintergrund laufen darf. Das es nach einem Smartphone Neustart ebenfalls wieder läuft, habe ich die entsprechende Option in der Automate-App aktiviert.

Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird
Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird (klicken für größere Version)

Finaler Test

Für den Test hier habe ich die beiden Skript nur auf meinem Smartphone ausgeführt. Wie in der folgenden Abbildung zu sehen ist, wird sowohl die Anfrage-SMS als auch die SMS mit dem OSMAnd-Link angezeigt.

Anzeige der SMS in Signal im Zuge eines Funktionstests
Anzeige der SMS in Signal im Zuge eines Funktionstests (klicken für größere Version)

Wird der OSMAnd-Link in der SMS angeklickt, kann dieser entweder in der OSMAnd-App oder einem Webbrowser angezeigt werden. Nachfolgende Abbildung zeigt die Anzeige in der OSMAnd-App.

Anzeige der Position in OSMAnd
Anzeige der Position in OSMAnd (klicken für größere Version)

Sicherlich lässt sich das Skript um weitere Überprüfungen erweitern. Des Weiteren wird sich zeigen, wie sich das ständig aktive Skript auf den Akku-Verbrauch auswirkt. Hier kann dann eine Option eingebaut werden, dass nur bei Bedarf das Skript gestartet wird.

Comment via email or via Disqus comments below: