Hallo Daniel,
na das sind schon mehr Infos, um dir Helfen zu können
Ich kenne die Library nicht, habe nur eben quer gelesen und ich habe auch noch nie GPIOS unter Android abgefragt.
Interessant : In der Beschreibung wird kein Wort über den Servicebetrieb verloren , ich gehe einmal davon aus, dass diese Lib auch hoffentlich in Services/Processes verwendbar ist .
Gehen wir einmal davon aus , so gäbe es Ansatzmöglichkeiten:
.
.
Alternative A
Du baust Dir für die (kontinuierliche) Abfrage deiner GPIOS's mit der Lib einen Service, der am besten beim Booten
(Broadcast) gestartet wird.
Dieser Service wird dann eine zeitlang aufrecht erhalten , bevor er von Android abgeschossen werden kann .
Wann das sein wird, kann ich Dir nicht beantworten , hängt von deinem C2 in Verbindung mit Android ab ...
Also bitte evt. selbst ermitteln.
Um diesen DauerTot zu vermeiden, kann man diesen Service selbst beenden lassen (stopSelf) und mittels AlarmManager triggern. Dies kann aber unter Android nicht im Millisekunden-Bereich geschehen , sondern eher im 2-5 Sekunden-Bereich.
Umgangsprachlich Jojo oder Heartbeat genannt.
http://informationideas.com/news/2012/03/06/how-to-keep-an-android-service-running/
Es wird also sein , dass in der Leerlaufphase ( die 2-5 Sekunden) keine Reaktion auf die GPIO's erfolgt.
.
.
Alternative B
Du kannst aber auch mit Background-Processes arbeiten
http://www.vogella.com/tutorials/AndroidServices/article.html
.
.
Nächster Schritt :
Hast du dann im Service/Process den Zustand "Schlüsselschalter-ein", kannst du wieder alles mögliche machen:
Deine App wieder zum Leben erwecken (Intent), die dann den Keyguard steuert und deinen Bildschirm einschaltet (Mosfet).
(oder auch direkt aus dem Service - musst du ausprobieren - aber so wenig wie Möglich in den Service packen !!)
Lebt deine App wieder (OnResume/OnCreate) , kannst du wieder nach Herzenslust wurschteln
.
Hier solltest du nach Möglichkeit alles messtechnische in einem AsyncTask laufen lassen - (AUCH im Service)
https://developer.android.com/reference/android/os/AsyncTask.html
Hinweis : Loops/TimeTasks - auch im AsyncTask unter 150ms Luft, sind unter Android nicht zu empfehlen !
Die GPIO zustände, die der Service/Process ermittelt , könntest du dann per Broadcast/Receiver an die App schicken
.
.
Noch ne Idee : Keine Standard App bauen , sondern eine FullScreen-Launcher-App mit Tasten - dann brauchst du keine
Keyguard. (Wenns eh das Einizge ist , was auf dem C2 bedienbar sein soll)
.
.
P.S Ohne dich de-motivieren zu wollen : für diese oben genannten alternativen und die restliche Vorgehensweise , ist natürlich leider fundiertes Wissen in Java/Android Voraussetzung.
Aus diesem Grunde kam ich auf die Raspberry/TCP Client Geschichte - dann hättest du dich lediglich unter Android mit einer Standard-App und TCP auseinander setzen müssen. Dabei würde die gesamte Mimik von Service / Alarmmanger / Broadcast und Lib entfallen - denn die muss man erst mal zu 100% im Griff haben.
Stellt sich die Frage, ob Du Dir nicht mit den zusätzlichen 30 Eus das Leben einfacher machst.
.
.
Legende für dich als C'ler
AsyncTask = Ähnlich einem Thread unter C
Broadcast = Sytemweites eindeutiges Trigger-Event
.
.
— geändert am 03.08.2016, 15:24:55
Liebe Grüße - Stefan
[ App - Entwicklung ]
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.