EgiGeoZone Forum

EgiGeoZone => Programmierecke (Google und Android) => Thema gestartet von: Admin am 07.10.2015, 08:38:49

Titel: Erstelle ein Plugin für EgiGeoZone
Beitrag von: Admin am 07.10.2015, 08:38:49
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 (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:

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 (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 (https://play.google.com/store/apps/details?id=de.egi.geofence.geozone.plugin.example)