Ab der Version 2.0.4 können Entwickler ein Plugin nach ihren Bedürfnissen für EgiGeoZone entwickeln.Diese Information wird unter http://egigeozone.de/developer/default.html weiter gepflegt.Rezept um ein EgiGeoZone-Plugin zu entwickeln- In den EgiGeoZone-Einstellungen "
Übermittlung an Plugins erlauben" aktivieren.
- Dann ein neues Android Projekt erstellen und da mindestens eine Activity für die Plugin-Konfiguration, wenn nötig, erstellen. Das Plugin ist selbst für das Abspeichern der Konfiguration zuständig. Man kann diese z.B. in den SharedPreferences oder in einer Datenbank speichern.
- Das Projekt sollte auch einen BroadcastReceiver oder besser einen WakefulBroadcastReceiver, welcher die Intents empfangen wird, anlegen. Dieser BroadcastReceiver muss auf die Aktion "
de.egi.geofence.geozone.plugin.EVENT" hören. Dieser BroadcastReceiver startet dann am besten einen Dienst (Service), welcher dann die Plugin-Arbeit erledigt.
- Der von der EgiGeoZone-App gelieferte Intent stellt folgende Parameter zur Verfügung:
- "transition" : "1" für Betreten und "0" für Verlassen der Zone
- "zone_name" : Name der Zone
- "latitude" : Breitengrad der Zone
- "longitude" : Längengrad der Zone
- "device_id" : Eine UUID, welche die ID des mobilen Gerätes darstellen soll.
- "date_iso" : UTC-Datum und Zeit im Format "yyyy-MM-dd'T'HH:mm:ss'Z'"
- "date_device": Lokales Datum und Zeit im Format "yyyy-MM-dd'T'HH:mm:ss"
Neue Parameter können gerne angefordert werden. Sofern diese von der Haupt-App geliefert werden können, werde ich diese in einer neuen Version bereitstellen.
- Sobald eine Zone Betreten oder Verlassen wird, werden alle Plugins mit der Intent-Filter-Aktion "
de.egi.geofence.geozone.GETPLUGINS" gesucht und nur an diese wird die Übermittlung gestartet.
Beispiel für diesen Teil in der Manifest-Datei:
<activity
android:name=".ExamplePluginMain"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="de.egi.geofence.geozone.GETPLUGINS" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- Für einen WakefulBroadcastReceiver ist noch folgende Erlaubnis (permission) erforderlich:
<uses-permission android:name="
android.permission.WAKE_LOCK" />
- Die EgiGeoZone-App führt die auf dem Gerät gefundenen Plugins unter dem Menüpunkt Verwaltung auf. Mit einem Klick auf einem der Plugins, kann die Haupt-Activity des Plugins aufgerufen werden. Deshalb ist es eine gute Idee den "application label" und "application icon" zu referenzieren. Diese werden für die Auflistung und dem Aufruf benötigt:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
...
- Zur Erinnerung: der deifinierte Receiver im Plugin muss auf die "
de.egi.geofence.geozone.plugin.EVENT" Aktion hören, sonst kann dieser nicht die Parameter empfangen:
<receiver android:name=".ExampleBroadcastReceiverPlugin">
<intent-filter>
<action android:name="de.egi.geofence.geozone.plugin.EVENT" />
</intent-filter>
</receiver>
- Ein Beispiel-Plugin als Quellcode kann hier heruntergeladen werden:
http://www.egigeozone.de/download/ExamplePluginSource.zip- Die App findet man auch im Google Play Store:
https://play.google.com/store/apps/details?id=de.egi.geofence.geozone.plugin.example