<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:thr="http://purl.org/syndication/thread/1.0"
      xml:lang="en-us">
  <link rel="self" href="http://Andreas-Voit.at/feeds/blog-von-andreas-voit_tag_howto.atom_1.0.links-and-content.xml" />
  <title type="text">Blog von Andreas Voit – tag: howto</title>
  <id>https://andreas-voit.at/tags/howto/</id>
  <link href="http://Andreas-Voit.at" />
  <icon>/favicon.ico</icon>
  <updated>2026-10-06T11:25:14+01:00</updated>
  <author>
    <name>Andreas Voit</name>
  </author>
  <subtitle type="text">Articles tagged with howto from Blog von Andreas Voit</subtitle>
  <rights>All content written by Andreas Voit</rights>
  <generator uri='https://github.com/novoid/lazyblorg'>Generated from Org-mode source code using lazyblorg which is written in Python. Industrial-strength technology, baby.</generator>
<!-- ############################################################################################# -->
<entry>
    <title type="text">Android Automate Script zur Senden der aktuellen GPS-Position</title>
    <link href='https://Andreas-Voit.at/2021/07/28/automateGPSSMS' />
    <published>2021-07-28T20:36:00+01:00</published>
    <updated>2021-07-28T20:36:00+01:00</updated>
    <category scheme='https://Andreas-Voit.at/tags/gis' term='gis' />
    <category scheme='https://Andreas-Voit.at/tags/osm' term='osm' />
    <category scheme='https://Andreas-Voit.at/tags/android' term='android' />
    <category scheme='https://Andreas-Voit.at/tags/howto' term='howto' />
    <category scheme='https://Andreas-Voit.at/autotags/language' term='language:deutsch' />
    <summary type='html'>
&lt;p&gt;

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 &lt;a href="https://github.com/diovon/Automate_Script-Send_GPS-Position_SMS"&gt;Projekt&lt;/a&gt; zusammengefasst.

&lt;/p&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;-Skript. &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt; 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.

&lt;/p&gt;

    </summary>    <content type='html'>

&lt;p&gt;

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 &lt;a href="https://github.com/diovon/Automate_Script-Send_GPS-Position_SMS"&gt;Projekt&lt;/a&gt; zusammengefasst.

&lt;/p&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;-Skript. &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt; 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.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Motivation für das Skript und alternative Apps&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

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 &lt;a href="https://www.reviewgeek.com/2241/use-these-7-great-apps-to-share-your-location-with-friends-and-family/"&gt;hier&lt;/a&gt;. 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 &lt;a href="https://play.google.com/store/apps/details?id=info.varden.hauk&amp;amp;hl=de_AT&amp;amp;gl=US"&gt;hauk&lt;/a&gt; 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 &lt;a href="https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;amp;hl=de&amp;amp;gl=US"&gt;Tasker-App&lt;/a&gt; automatisiert haben, kam die Idee dies über diese Schiene zu probieren. Ich habe mich für die &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; 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 &lt;a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&amp;amp;hl=de&amp;amp;gl=US"&gt;Signal-App&lt;/a&gt; auch als SMS-App verwenden. Allerdings haben erste Versuche gezeigt, dass die SMS von der &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; gelesen werden können.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Voraussetzungen&lt;/h2&gt;&lt;/header&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;
muss am Android Gerät installiert sein&lt;/li&gt;
&lt;li&gt;Für den SMS-Versand muss eine SIM-Karte im Gerät eingelegt sein&lt;/li&gt;
&lt;li&gt;(optional) &lt;a
href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt;
zur Anzeige der GPS-Position. Die generierten GPS-Daten lassen sich
allerdings auch in einem Web-Browser (Chrome, Firefox, …)
darstellen.&lt;/li&gt;
&lt;/ul&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Das Skript&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Skript zur Anfrage der GPS-Position&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-TelephoneNumSet%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-TelephoneNumSet%20-%20scaled%20width%20560.jpg" alt="Die Telefonnummer als Variable speichern" width="TMPREPLACEMEwidthSTART-20210717-TelephoneNumSet - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-TelephoneNumSet - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Die Telefonnummer als Variable speichern &lt;a class="figcaption-clue-link" href="20210717-TelephoneNumSet%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Send_Request%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Send_Request%20-%20scaled%20width%20560.jpg" alt="Funktionsblock zum Versenden der Anfrage-SMS" width="TMPREPLACEMEwidthSTART-20210717-SMS_Send_Request - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Send_Request - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Funktionsblock zum Versenden der Anfrage-SMS &lt;a class="figcaption-clue-link" href="20210717-SMS_Send_Request%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Das fertige Skript schaut wie folgt im Ablauf aus.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="SendPositionRequestSMS%20-%20scaled%20width%201500.png"&gt;
  &lt;img src="SendPositionRequestSMS%20-%20scaled%20width%20560.png" alt="Aufbau des Skripts zur Anfrage der GPS-Position per SMS" width="TMPREPLACEMEwidthSTART-SendPositionRequestSMS - scaled width 560.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-SendPositionRequestSMS - scaled width 560.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aufbau des Skripts zur Anfrage der GPS-Position per SMS &lt;a class="figcaption-clue-link" href="SendPositionRequestSMS%20-%20scaled%20width%201500.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Das Skript hab ich &lt;a href="https://github.com/diovon/Automate_Script-Send_GPS-Position_SMS/blob/main/Send_Position_Request_SMS.flo"&gt;hier&lt;/a&gt; als flo-Datei bereitgestellt. Diese Datei muss nur mehr in die &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; importiert und Telefonnummer angepasst werden.

&lt;/p&gt;


&lt;p&gt;

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

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Install_Home_Screen%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Install_Home_Screen%20-%20scaled%20width%20560.jpg" alt="Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen" width="TMPREPLACEMEwidthSTART-20210717-Install_Home_Screen - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Install_Home_Screen - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen &lt;a class="figcaption-clue-link" href="20210717-Install_Home_Screen%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Skript zur Sendung der GPS-Position&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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

&lt;/p&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Get%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Get%20-%20scaled%20width%20560.jpg" alt="Warten auf den Empfang der SMS zur Positionsanfrage" width="TMPREPLACEMEwidthSTART-20210717-SMS_Get - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Get - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Warten auf den Empfang der SMS zur Positionsanfrage &lt;a class="figcaption-clue-link" href="20210717-SMS_Get%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Location_get%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Location_get%20-%20scaled%20width%20560.jpg" alt="Automate Block zur Ermittlung der GPS-Position" width="TMPREPLACEMEwidthSTART-20210717-Location_get - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Location_get - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Automate Block zur Ermittlung der GPS-Position &lt;a class="figcaption-clue-link" href="20210717-Location_get%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210728-GPS_Set_Fix_time%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210728-GPS_Set_Fix_time%20-%20scaled%20width%20560.jpg" alt="Wert für GPS-FIX auf 0 setzen" width="TMPREPLACEMEwidthSTART-20210728-GPS_Set_Fix_time - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210728-GPS_Set_Fix_time - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Wert für GPS-FIX auf 0 setzen &lt;a class="figcaption-clue-link" href="20210728-GPS_Set_Fix_time%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt; ist es nämlich möglich Positionen per Weblink zu teilen. Der Link hat die Form von &lt;a href="https://osmand.net-go?lat="wert"&amp;amp;lon="wertLAT"&amp;amp;z="wertLONG""&gt;https://osmand.net-go?lat="wert"&amp;amp;lon="wertLAT"&amp;amp;z="wertLONG"&lt;/a&gt; . 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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Generate_Osmand_url%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Generate_Osmand_url%20-%20scaled%20width%20560.jpg" alt="Generierung des SMS Textes mit den Koorindaten als OSMAnd Link" width="TMPREPLACEMEwidthSTART-20210717-Generate_Osmand_url - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Generate_Osmand_url - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Generierung des SMS Textes mit den Koorindaten als OSMAnd Link &lt;a class="figcaption-clue-link" href="20210717-Generate_Osmand_url%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Send_GPS%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Send_GPS%20-%20scaled%20width%20560.jpg" alt="Funktionsblock zum Versenden der SMS mit den OSMAnd-Link" width="TMPREPLACEMEwidthSTART-20210717-SMS_Send_GPS - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Send_GPS - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Funktionsblock zum Versenden der SMS mit den OSMAnd-Link &lt;a class="figcaption-clue-link" href="20210717-SMS_Send_GPS%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Der komplette Ablauf des Skriptes ist in der nachfolgenden Grafik ersichtlich. Wie beim vorherigen Skript stelle ich es als &lt;a href="https://github.com/diovon/Automate_Script-Send_GPS-Position_SMS/blob/main/Send_Position_SMS.flo"&gt;flo-Datei&lt;/a&gt; via github zur Verfügung.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="SendPositionSMS%20-%20scaled%20width%201500.png"&gt;
  &lt;img src="SendPositionSMS%20-%20scaled%20width%20560.png" alt="Aufbau des Skripts zum Senden der GPS-Position per SMS" width="TMPREPLACEMEwidthSTART-SendPositionSMS - scaled width 560.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-SendPositionSMS - scaled width 560.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aufbau des Skripts zum Senden der GPS-Position per SMS &lt;a class="figcaption-clue-link" href="SendPositionSMS%20-%20scaled%20width%201500.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; aktiviert.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Run_on_startup%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Run_on_startup%20-%20scaled%20width%20560.jpg" alt="Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird" width="TMPREPLACEMEwidthSTART-20210717-Run_on_startup - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Run_on_startup - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird &lt;a class="figcaption-clue-link" href="20210717-Run_on_startup%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Finaler Test&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Test%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Test%20-%20scaled%20width%20560.jpg" alt="Anzeige der SMS in Signal im Zuge eines Funktionstests" width="TMPREPLACEMEwidthSTART-20210717-SMS_Test - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Test - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Anzeige der SMS in Signal im Zuge eines Funktionstests &lt;a class="figcaption-clue-link" href="20210717-SMS_Test%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Wird der OSMAnd-Link in der SMS angeklickt, kann dieser entweder in der &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt; oder einem Webbrowser angezeigt werden. Nachfolgende Abbildung zeigt die Anzeige in der &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt;.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-OSMAnd_View%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-OSMAnd_View%20-%20scaled%20width%20560.jpg" alt="Anzeige der Position in OSMAnd" width="TMPREPLACEMEwidthSTART-20210717-OSMAnd_View - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-OSMAnd_View - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Anzeige der Position in OSMAnd &lt;a class="figcaption-clue-link" href="20210717-OSMAnd_View%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;

    </content>
    <id>https://andreas-voit.at/2021/07/28/automateGPSSMS-from-tag-feed-with-content</id>
</entry>
<!-- ############################################################################################# -->
<entry>
    <title type="text">Android Automate Script zur Senden der aktuellen GPS-Position</title>
    <link href='https://Andreas-Voit.at/2021/07/17/automateGPSSMS' />
    <published>2021-07-17T20:36:00+01:00</published>
    <updated>2021-07-17T20:36:00+01:00</updated>
    <category scheme='https://Andreas-Voit.at/tags/gis' term='gis' />
    <category scheme='https://Andreas-Voit.at/tags/osm' term='osm' />
    <category scheme='https://Andreas-Voit.at/tags/android' term='android' />
    <category scheme='https://Andreas-Voit.at/tags/howto' term='howto' />
    <category scheme='https://Andreas-Voit.at/autotags/language' term='language:deutsch' />
    <summary type='html'>
&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;-Skript. &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt; 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.

&lt;/p&gt;

    </summary>    <content type='html'>

&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;-Skript. &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt; 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.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Motivation für das Skript und alternative Apps&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

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 &lt;a href="https://www.reviewgeek.com/2241/use-these-7-great-apps-to-share-your-location-with-friends-and-family/"&gt;hier&lt;/a&gt;. 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 &lt;a href="https://play.google.com/store/apps/details?id=info.varden.hauk&amp;amp;hl=de_AT&amp;amp;gl=US"&gt;hauk&lt;/a&gt; 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 &lt;a href="https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;amp;hl=de&amp;amp;gl=US"&gt;Tasker-App&lt;/a&gt; automatisiert haben, kam die Idee dies über diese Schiene zu probieren. Ich habe mich für die &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; 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 &lt;a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&amp;amp;hl=de&amp;amp;gl=US"&gt;Signal-App&lt;/a&gt; auch als SMS-App verwenden. Allerdings haben erste Versuche gezeigt, dass die SMS von der &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; gelesen werden können.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Voraussetzungen&lt;/h2&gt;&lt;/header&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate&lt;/a&gt;
muss am Android Gerät installiert sein&lt;/li&gt;
&lt;li&gt;Für den SMS-Versand muss eine SIM-Karte im Gerät eingelegt sein&lt;/li&gt;
&lt;li&gt;(optional) &lt;a
href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt;
zur Anzeige der GPS-Position. Die generierten GPS-Daten lassen sich
allerdings auch in einem Web-Browser (Chrome, Firefox, …)
darstellen.&lt;/li&gt;
&lt;/ul&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Das Skript&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Skript zur Anfrage der GPS-Position&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-TelephoneNumSet%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-TelephoneNumSet%20-%20scaled%20width%20560.jpg" alt="Die Telefonnummer als Variable speichern" width="TMPREPLACEMEwidthSTART-20210717-TelephoneNumSet - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-TelephoneNumSet - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Die Telefonnummer als Variable speichern &lt;a class="figcaption-clue-link" href="20210717-TelephoneNumSet%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Send_Request%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Send_Request%20-%20scaled%20width%20560.jpg" alt="Funktionsblock zum Versenden der Anfrage-SMS" width="TMPREPLACEMEwidthSTART-20210717-SMS_Send_Request - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Send_Request - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Funktionsblock zum Versenden der Anfrage-SMS &lt;a class="figcaption-clue-link" href="20210717-SMS_Send_Request%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Das fertige Skript schaut wie folgt im Ablauf aus.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="SendPositionRequestSMS%20-%20scaled%20width%201500.png"&gt;
  &lt;img src="SendPositionRequestSMS%20-%20scaled%20width%20560.png" alt="Aufbau des Skripts zur Anfrage der GPS-Position per SMS" width="TMPREPLACEMEwidthSTART-SendPositionRequestSMS - scaled width 560.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-SendPositionRequestSMS - scaled width 560.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aufbau des Skripts zur Anfrage der GPS-Position per SMS &lt;a class="figcaption-clue-link" href="SendPositionRequestSMS%20-%20scaled%20width%201500.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Das Skript hab ich &lt;a href="https://github.com/diovon/Automate_Script-SMS_Send_Request"&gt;hier&lt;/a&gt; als flo-Datei bereitgestellt. Diese Datei muss nur mehr in die &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; importiert und Telefonnummer angepasst werden.

&lt;/p&gt;


&lt;p&gt;

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

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Install_Home_Screen%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Install_Home_Screen%20-%20scaled%20width%20560.jpg" alt="Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen" width="TMPREPLACEMEwidthSTART-20210717-Install_Home_Screen - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Install_Home_Screen - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Install Home Screen Shortcut für das direkte Ausführen des Skripts über den Homescreen &lt;a class="figcaption-clue-link" href="20210717-Install_Home_Screen%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Skript zur Sendung der GPS-Position&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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

&lt;/p&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Get%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Get%20-%20scaled%20width%20560.jpg" alt="Warten auf den Empfang der SMS zur Positionsanfrage" width="TMPREPLACEMEwidthSTART-20210717-SMS_Get - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Get - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Warten auf den Empfang der SMS zur Positionsanfrage &lt;a class="figcaption-clue-link" href="20210717-SMS_Get%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Location_get%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Location_get%20-%20scaled%20width%20560.jpg" alt="Automate Block zur Ermittlung der GPS-Position" width="TMPREPLACEMEwidthSTART-20210717-Location_get - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Location_get - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Automate Block zur Ermittlung der GPS-Position &lt;a class="figcaption-clue-link" href="20210717-Location_get%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt; ist es nämlich möglich Positionen per Weblink zu teilen. Der Link hat die Form von &lt;a href="https://osmand.net-go?lat="wert"&amp;amp;lon="wertLAT"&amp;amp;z="wertLONG""&gt;https://osmand.net-go?lat="wert"&amp;amp;lon="wertLAT"&amp;amp;z="wertLONG"&lt;/a&gt; . 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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Generate_Osmand_url%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Generate_Osmand_url%20-%20scaled%20width%20560.jpg" alt="Generierung des SMS Textes mit den Koorindaten als OSMAnd Link" width="TMPREPLACEMEwidthSTART-20210717-Generate_Osmand_url - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Generate_Osmand_url - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Generierung des SMS Textes mit den Koorindaten als OSMAnd Link &lt;a class="figcaption-clue-link" href="20210717-Generate_Osmand_url%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Send_GPS%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Send_GPS%20-%20scaled%20width%20560.jpg" alt="Funktionsblock zum Versenden der SMS mit den OSMAnd-Link" width="TMPREPLACEMEwidthSTART-20210717-SMS_Send_GPS - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Send_GPS - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Funktionsblock zum Versenden der SMS mit den OSMAnd-Link &lt;a class="figcaption-clue-link" href="20210717-SMS_Send_GPS%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Der komplette Ablauf des Skriptes ist in der nachfolgenden Grafik ersichtlich. Wie beim vorherigen Skript stelle ich es als &lt;a href="https://github.com/diovon/Automate_Script-SMS_Send_Position_SMS"&gt;flo-Datei&lt;/a&gt; via github zur Verfügung.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="SendPositionSMS%20-%20scaled%20width%201500.png"&gt;
  &lt;img src="SendPositionSMS%20-%20scaled%20width%20560.png" alt="Aufbau des Skripts zum Senden der GPS-Position per SMS" width="TMPREPLACEMEwidthSTART-SendPositionSMS - scaled width 560.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-SendPositionSMS - scaled width 560.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aufbau des Skripts zum Senden der GPS-Position per SMS &lt;a class="figcaption-clue-link" href="SendPositionSMS%20-%20scaled%20width%201500.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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 &lt;a href="https://play.google.com/store/apps/details?id=com.llamalab.automate&amp;amp;hl=de&amp;amp;gl=US"&gt;Automate-App&lt;/a&gt; aktiviert.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-Run_on_startup%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-Run_on_startup%20-%20scaled%20width%20560.jpg" alt="Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird" width="TMPREPLACEMEwidthSTART-20210717-Run_on_startup - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-Run_on_startup - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Aktivierung der Option, dass Skript nach Smartphone Neustart automatisch gestartet wird &lt;a class="figcaption-clue-link" href="20210717-Run_on_startup%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Finaler Test&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

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.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-SMS_Test%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-SMS_Test%20-%20scaled%20width%20560.jpg" alt="Anzeige der SMS in Signal im Zuge eines Funktionstests" width="TMPREPLACEMEwidthSTART-20210717-SMS_Test - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-SMS_Test - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Anzeige der SMS in Signal im Zuge eines Funktionstests &lt;a class="figcaption-clue-link" href="20210717-SMS_Test%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Wird der OSMAnd-Link in der SMS angeklickt, kann dieser entweder in der &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt; oder einem Webbrowser angezeigt werden. Nachfolgende Abbildung zeigt die Anzeige in der &lt;a href="https://play.google.com/store/apps/details?id=net.osmand&amp;amp;hl=de&amp;amp;gl=US"&gt;OSMAnd-App&lt;/a&gt;.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="20210717-OSMAnd_View%20-%20scaled%20width%201500.jpg"&gt;
  &lt;img src="20210717-OSMAnd_View%20-%20scaled%20width%20560.jpg" alt="Anzeige der Position in OSMAnd" width="TMPREPLACEMEwidthSTART-20210717-OSMAnd_View - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-20210717-OSMAnd_View - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Anzeige der Position in OSMAnd &lt;a class="figcaption-clue-link" href="20210717-OSMAnd_View%20-%20scaled%20width%201500.jpg"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

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.

&lt;/p&gt;

    </content>
    <id>https://andreas-voit.at/2021/07/17/automateGPSSMS-from-tag-feed-with-content</id>
</entry>
<!-- ############################################################################################# -->
<entry>
    <title type="text">Ändern Standardbrowser unter xubuntu</title>
    <link href='https://Andreas-Voit.at/2017/05/08/defbrowser' />
    <published>2017-05-08T21:45:00+01:00</published>
    <updated>2017-05-08T21:45:00+01:00</updated>
    <category scheme='https://Andreas-Voit.at/tags/howto' term='howto' />
    <category scheme='https://Andreas-Voit.at/autotags/language' term='language:deutsch' />
    <summary type='html'>
&lt;p&gt;

Seit ein paar Monaten bin ich mit meinem Standardbrowser &lt;a href="https://www.mozilla.org/en-US/firefox/products/"&gt;firefox&lt;/a&gt; nicht mehr zufrieden. Meiner Meinung nach wird er immer speicherhungriger und die Performance schlechter. In meiner Firma habe ich als Alternative &lt;a href="https://vivaldi.com/?lang%3Den"&gt;vivaldi&lt;/a&gt; kennengelernt. Dieser gefällt mir besser, da er sich sehr leicht anpassen lässt und ich habe das Gefühl, dass er deutlich performanter als mein bisheriger Browser ist.

&lt;/p&gt;


&lt;p&gt;

Auf meinem x260 läuft xubuntu und aus irgendeinem Grund hat die Umstellung des Standardbrowsers über die GUI nicht funktioniert. Daher musste ich die Einstellungen über den Terminal durchführen.

&lt;/p&gt;


&lt;p&gt;

Dazu musste folgende Datei mit einem Editor angepasst werden: ~/.config/mimeapps.list

&lt;/p&gt;


&lt;p&gt;

Ich habe einfach überall wo firefox.desktop vor kommt durch vivaldi.desktop ersetzt. Danach war die Standardbrowser Umstellung erfolgreich.

&lt;/p&gt;

    </summary>    <content type='html'>

&lt;p&gt;

Seit ein paar Monaten bin ich mit meinem Standardbrowser &lt;a href="https://www.mozilla.org/en-US/firefox/products/"&gt;firefox&lt;/a&gt; nicht mehr zufrieden. Meiner Meinung nach wird er immer speicherhungriger und die Performance schlechter. In meiner Firma habe ich als Alternative &lt;a href="https://vivaldi.com/?lang%3Den"&gt;vivaldi&lt;/a&gt; kennengelernt. Dieser gefällt mir besser, da er sich sehr leicht anpassen lässt und ich habe das Gefühl, dass er deutlich performanter als mein bisheriger Browser ist.

&lt;/p&gt;


&lt;p&gt;

Auf meinem x260 läuft xubuntu und aus irgendeinem Grund hat die Umstellung des Standardbrowsers über die GUI nicht funktioniert. Daher musste ich die Einstellungen über den Terminal durchführen.

&lt;/p&gt;


&lt;p&gt;

Dazu musste folgende Datei mit einem Editor angepasst werden: ~/.config/mimeapps.list

&lt;/p&gt;


&lt;p&gt;

Ich habe einfach überall wo firefox.desktop vor kommt durch vivaldi.desktop ersetzt. Danach war die Standardbrowser Umstellung erfolgreich.

&lt;/p&gt;

    </content>
    <id>https://andreas-voit.at/2017/05/08/defbrowser-from-tag-feed-with-content</id>
</entry>
<!-- ############################################################################################# -->
<entry>
    <title type="text">Altes Android System auf neuem Nexus 5 wiederherstellen</title>
    <link href='https://Andreas-Voit.at/2016/11/06/nanobackup' />
    <published>2016-11-06T16:30:00+01:00</published>
    <updated>2016-11-06T16:30:00+01:00</updated>
    <category scheme='https://Andreas-Voit.at/tags/android' term='android' />
    <category scheme='https://Andreas-Voit.at/tags/howto' term='howto' />
    <category scheme='https://Andreas-Voit.at/autotags/language' term='language:deutsch' />
    <summary type='html'>
&lt;p&gt;

In den letzen beiden Tagen habe ich mich erneut in das Nexus 5 verliebt. Meine Eltern sind seit kurzer Zeit ebenfalls Nexus 5 Benutzer. Gestern musste leider eines davon eine unsanfte Landung absolvieren, wodurch der Display in Mitleidenschaft gezogen wurde.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;img src="http://Andreas-Voit.at/2016/11/06/nanobackup/http://Andreas-Voit.at/2016/11/06/nanobackup/http://Andreas-Voit.at/2016/11/06/nanobackup/signal-2016-11-02-111036%20-%20scaled%20width%20560.jpg" alt="Nexus 5 mit Display Schaden" width="TMPREPLACEMEwidthSTART-signal-2016-11-02-111036 - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-signal-2016-11-02-111036 - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;figcaption&gt;Nexus 5 mit Display Schaden&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Nun gab es zwei Möglichkeiten:

&lt;/p&gt;


&lt;p&gt;

A) Display tauschen B) gebrauchtes Nexus 5

&lt;/p&gt;


&lt;p&gt;

Den geringsten Aufwand stellte für mich Möglichkeit B dar. Dank meines Bruders haben wir auch schnell über &lt;a href="https://www.willhaben.at/iad"&gt;Willhaben&lt;/a&gt; ein passendes Angebot gefunden und dieses innerhalb eines Tages abgeholt.

&lt;/p&gt;

    </summary>    <content type='html'>

&lt;p&gt;

In den letzen beiden Tagen habe ich mich erneut in das Nexus 5 verliebt. Meine Eltern sind seit kurzer Zeit ebenfalls Nexus 5 Benutzer. Gestern musste leider eines davon eine unsanfte Landung absolvieren, wodurch der Display in Mitleidenschaft gezogen wurde.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;img src="signal-2016-11-02-111036%20-%20scaled%20width%20560.jpg" alt="Nexus 5 mit Display Schaden" width="TMPREPLACEMEwidthSTART-signal-2016-11-02-111036 - scaled width 560.jpg-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-signal-2016-11-02-111036 - scaled width 560.jpg-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;figcaption&gt;Nexus 5 mit Display Schaden&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Nun gab es zwei Möglichkeiten:

&lt;/p&gt;


&lt;p&gt;

A) Display tauschen B) gebrauchtes Nexus 5

&lt;/p&gt;


&lt;p&gt;

Den geringsten Aufwand stellte für mich Möglichkeit B dar. Dank meines Bruders haben wir auch schnell über &lt;a href="https://www.willhaben.at/iad"&gt;Willhaben&lt;/a&gt; ein passendes Angebot gefunden und dieses innerhalb eines Tages abgeholt.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Backup &amp;amp; Restore&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Nun war das alte Nexus 5 noch betriebsbereit, wodurch ich die Möglichkeit hatte ein aktuelles Backup zu erzeugen.

&lt;/p&gt;


&lt;p&gt;

Auch hier standen mir zwei Möglichkeiten zur Verfügung:

&lt;/p&gt;


&lt;p&gt;

A) &lt;a href="https://play.google.com/store/apps/details?id%3Dcom.keramidas.TitaniumBackup&amp;amp;hl%3Dde"&gt;Titanium Backup&lt;/a&gt;

&lt;/p&gt;


&lt;p&gt;

B) TWRP Backup bzw. nandroid Backup

&lt;/p&gt;


&lt;p&gt;

Und wieder habe ich mich für Variante B) entschieden. Für Titanium Backup müsste ich die kostenpflichtige Version kaufen und da ich eh das komplette System wiederherstellen wollte, war aus meiner Sicht dies die einfachste und schnellste Variante. Per "adb pull" konnte ich das Backup auf mein Notebook sichern.

&lt;/p&gt;


&lt;p&gt;

Nun ging es dran, das Backup auf das neue Nexus einzuspielen. Nachdem das neue Gerät per "fastboot oem unlock" wieder gerootet habe, konnte ich auch auf diesem TWRP installieren (fastboot flash recovery twrp-3.0.2-0-hammerhead.img). Ich habe danach am neuen Nexus ein Backup durchgeführt, da TWRP die Backups in einen Ordner ablegt, der als Bezeichnung die Seriennummer des Smartphones enthält. Die Backupdateien selbst befinden sich in einem weiteren Unterordner und &lt;a href="http://androidforums.com/threads/verizon-solved-twrp-cannot-find-backup.654751/"&gt;TWRP findet Backup-Dateien&lt;/a&gt; auch nur unter diesen Ordner. Per adb push habe ich nun vom Notebook das Backup vom alten Nexus auf das neue Nexus übertragen. Nach der Ausführung des Restores und einem Neustart war auf dem neuen Nexus 5 das System wie beim alten Nexus 5.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Die Probleme&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Nach der bisherigen Beschreibung kann man eins zu eins das System auf einem neuen Gerät kopieren, solange man nicht telefonieren oder SMS schreiben will. Denn das Problem ist, dass durch die oben beschriebene Variante der interne EFS-Ordner überschrieben wird. Dieser enthält die Information, welche IMEI-Nummer dem Smartphone zugeordnet ist. Durch das Überschreiben wird entweder eine ungültige IMEI Nummer oder die IMEI Nummer wird auf 0 gesetzt. Das Problem ist nun, ohne IMEI Nummer kann sich das Smartphone nicht ins Mobilefunktnetz einwählen, dadurch sind Anrufe oder SMS nicht möglich.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Lösungsweg&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Meine Recherchen haben ergeben, dass in Einzelfällen ein Überspielen des Systems mit Hilfe eines Factory-Image die alte IMEI Nummer wiederhergestellt hat. Daraufhin habe ich diese &lt;a href="http://www.pocketpc.ch/google-nexus-5-root-und-rom/200110-anleitung-nexus-5-stock-zustand-zuruecksetzen-via-offiziellem-factory-image.html"&gt;Anleitung&lt;/a&gt; befolgt und das Factory-Image eingespielt. Leider hat dies nicht den gewünschten Erfolg gehabt und die IMEI Nummer war noch immer auf den Wert 0 gesetzt.

&lt;/p&gt;


&lt;p&gt;

Als nächstes versuchte ich mit folgender &lt;a href="http://forum.xda-developers.com/showpost.php?p%3D26827676&amp;amp;postcount%3D4512%2522"&gt;Anleitung&lt;/a&gt; die IMEI Nummer zu reparieren oder wenigstens durch eine Entwickler IMEI Nummer zu ersetzen. Allerdings dürfte sich die Ordner Struktur von Android geändert haben, wodurch ich den EFS-Ordner nicht im root-Verzeichnis finden konnte. Auch nicht auf meinem eigenen Nexus 5, wo der EFS-Ordner korrekt ist und ich eine IMEI Nummer besitze.

&lt;/p&gt;


&lt;p&gt;

Schlussendlich bin ich bei folgender &lt;a href="http://android.stackexchange.com/questions/114184/restore-google-nexus-5-imei-that-reads-0"&gt;Anleitung&lt;/a&gt; gelandet. Dieser Forumbeitrag beschrieb ganz genau mein Problem und ich hatte endlich die Lösung in Händen. Dachte ich mir. Denn in dem Forumbeitrag wird die Lösung anhand eines Windowsprogamms beschrieben. Ich habe bei mir privat allerdings nur Linux im Einsatz, außer einen alten Pentium 4, der mir ab und zu als Spielerechner dient. Zu erst versuchte ich die Windowstools unter WINE auszuführen. Starten konnte ich die Programme schon, aber sie erkannten das Nexus 5 nicht. In weiteren Forumbeiträgen habe ich gelesen, dass auch mit Virtuellen Maschinen das korrekte Ausführen der Programme nicht möglich war. Daher entschloss ich mich, meinen alten Pentium 4 zu reaktivieren. Die beschriebenen Programme waren schnell installiert, allerdings hatte ich mit einer Grundlage starke Probleme: Installation des LG NEXUS 5 Treibers. Nach 5 Stunden gab ich die Installationsversuche schließlich auf. Aus irgendeinem unbekannten Grund konnte mein Windows PC die lokal vorhandenen Treiberdateien für die Installation nicht verwenden.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Wichtigste Erfahrung&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Was ich aus der ganzen Sache gelernt habe? Bevor du was tust, immer ein Backup ziehen! Und, der augenscheinlich schnellste Weg ist nicht immer der mit den geringsten Problemen. Daher werde ich, wenn ich die IMEI Nummer wiederhergestellt habe, sofort ein Backup des EFS-Ordners durchführen.

&lt;/p&gt;

    </content>
    <id>https://andreas-voit.at/2016/11/06/nanobackup-from-tag-feed-with-content</id>
</entry></feed>