Cronjobs auf Android

H

Halocall

Neues Mitglied
1
Hallo,

Ich stehe vor einem recht eigenartigen Vorhaben. Dafür habe ich mir überlegt Android (gerootet oder nicht...) auf einen Raspberry Pie aufzuspielen, und dort dann minütlich ein kleines Skript auszuführen. Dafür müsste ich die Möglichkeit haben, dieses Skript periodisch aufrufen und im Hintergrund ausführen zu können. Erst einmal: Geht das? Gibt es eine Möglichkeit CronJobs auf Android auszuführen? Muss dieses dafür gerootet sein? Wichtig wäre, dass das Skript wirklich nur im Hintergund aufgerufen wird, und nicht etwa ein Terminalfenster das Bild überdeckt.
Das hat auch einen Grund: Nämlich der zweite Punkt, so müsste ich periodisch ein Screenshot aufnehmen, auswerten und anschließend wieder löschen können. Ich weiß dass es kleine und kurze Terminal-Befehle gibt, um z.B. in Ubuntu Screenshots anzufertigen. Löschen und so weiter kann man ja auch mit einfachen Unixbefehlen. Geht das in Android?
Drittens bräuchte ich halt die Möglichkeit, ein eigenes kleines Skript auszuführen, eben um das angefertigte Screenshot auswerten zu können. Welche Programmiersprachen kämen da in Betracht, was lässt sich unkompliziert und leicht auf Android ausführen? Ich dachte an Python oder eine andere leichtgewichtige Sprache (also möglichst nicht Java oder C++), etwa auch PHP meinetwegen. Geht das?

Also zusammengefasst, was ich bräuchte: Cronjobs, Screenshotskript, Python (oder PHP o.Ä.). Ist all dies auf Android machbar? Muss es dafür gerootet sein?
 
Zuletzt bearbeitet:
Cronjob:How to use crontab in Android? / Cronjobs unter Android einrichten (beide mit Root) oder diverse Automatisierungsapps (Tasker, Automagic, AutomateIt, ...) (auch ohne Root),
Screenshot: Mit Hilfe von screencap oder mit Root-Rechten, direkt aus dem Framebuffer lesen: How can I get the color of a screen pixel THROUGH ADB
Python: Python-Programme unter Android nutzen / https://play.google.com/store/apps/details?id=org.qpython.qpy&hl=de


Aber wieso Android auf einem Raspberry Pi? Warum nicht ein Unixoid (Debian, Arch, ...)?
Was genau hast du denn vor?
 
  • Danke
Reaktionen: nik
Erst mal danke für die vollständige (und schnelle) Antwort. Root scheint dann ja schon erforderlich zu sein. Noch eine Frage zu den Screenshots. Erst mal zu Screencap: Ist Screencap per Befehl (also auch mittels Cornjob) ausführbar und arbeitet es stets im Hintergrund, ohne das Bild jemals zu überdecken. Es geht darum dass es vollautomatisiert sein soll (also auch vordefinierter Speicherpfad) und dass zu jedem Augenblick das Bild frei von anderen Programmen als der auszuwertenden App ist. Deinen zweiten Vorschlag diesbezüglich habe ich jetzt auf die Schnelle nur überflogen. Ich habe gesehen dass in der vorgeschlagenen Lösung dort der Befehl "screencap" verwendet wird. Der Lösungsvorschlag bezieht sich also auch auf diese App?

Was die Python-Ausführung betrifft: Bist du dir sicher dass die von dir genannten bzw. verlinkten Anwendungen Phython im Hintergrund mittels Cronjob-Aufruf ausführen können, ohne eine Bildschirmdeckende App zu starten? Der Bildschirm muss jederzeit frei von Konsolenfenstern o.ä. bleiben, und müssen Aufrufe vollautomatisch erfolgen können.

Zu deiner Schlussbemerkung: Es geht darum eine Android-App auszuwerten, wobei es nur eine apk-Version gibt und sie offiziell auch nur auf Android läuft. Ich würde nicht riskieren wollen, die App auf einem Raspberry-ARM-System auszuführen. Hältst du es für sinnvoller es mit einer Virtualisierung auf Linux zu versuchen? Kennst du Anwendungen die dies (zuverlässig) ermöglichen und die recht minimalistische Begrenzung von 1GB zur Verfügung stehendem RAM (inklusive Betriebssystem) nicht überschreiten?
 
Ja, ich bin sicher, dass Screencap (das ist keine App, sondern ein Programm auf Shell-Ebene) im Hintergrund läuft -> Android Debug Bridge (adb) | Android Developers
Zu den Python-Apps kann ich dir nichts sagen, dazu habe ich keine Erfahrung, aber die genannten Automatisierungstools laufen 100% im Hintergrund, wenn du sie nicht veranlasst entsprechende Meldungen (Benachrichtigungen, Toasts, ...) auszugeben. Aber evtl. reicht dir ja auch schon eine Umsetzung per bash ?

Und Root ist eigentlich nicht notwendig. Für Screencap nicht und für minütliche Ausführung eigentlich auch nicht.
 
Wenn du Linux kennst, dann hau dir doch ein Android auf einen PC. Dann kannst du alles im Terminal machen wie von Linux gewohnt.
Android auf x86 / PC-Installationen
Und das ggf auf Vmware Player oder Virtual PC.
 
Screencap betreffend: Vielleicht reden wir auch aneinander vorbei. Ich habe es ergoogelt und folgende Anwendung dabei gefunden Screencap ★ Root Screenshots APK Download - Free Tools APP for Android | APKPure.com
Ist das das von dir besagte Screencap? Anscheinend benötigt dieses Root-Rechte.

Über das Python muss ich mich dann selbst noch schlau machen. Wenn jemand hierzu (oder auch bezüglich PHP-Ausführung unter Android) mehr weiß, ich bin dankbar für jeden Tipp.
Ansonsten könnte ich wirklich schauen, ob es nicht irgendwie per Shell umsetzbar ist. Ich zweifle allerdings, da ich z.B. auch regelmäßig (vollautomatisch) eine HTTP-Verbindung zu einem Server herstellen muss, wobei zuvor die Parameter für die URL dynamisch generiert werden müssen. Ich glaube, da wäre ich überfordert ohne reguläre Programmiersprache.

@rudolf Ich verstehe nicht genau was du meinst. Der Grund dass es auf einem Pie sein muss ist, weil das Teil 24/24 laufen soll, als Mini-Server sozusagen der kaum Strom verbraucht. Oder meintest du nur, dass ich es auf dem PC virtualisieren solle, um zu prüfen ob ich alles so zum laufen bekomme wie ich mir das vorstelle?
 
Nein, das ist nicht was ich meine.
 
@Thyrion Ich habe noch einmal danach recherchiert. Also muss ich Debugging über USB in den Entwickleroptionen erlauben, ADB auf dem Gerät installieren, und dann sind die screencap-Befehle bereits via Bash benutzbar?
Dabei frage ich mich natürlich wie ich vorgehen soll um ADB zu installieren, wenn ich kein reguläres Smartphone nutze wo ich einfach das Micro-USB-Kabel an den PC schließen könnte.
 
Wie Thyrion schon vorgeschlagen hat, wäre hier ein Script sinnvoller, als ein Cronjob, der jede Minute ausgeführt wird.

Interessant wäre, was du da denn nun genau vor hast.
Klar gibt es auch einen Webserver, der unter Android läuft, aber bis auf die ominöse App wären das alles Dinge, die du besser unter einem Linux machen könntest, gerade auf einem Raspberry Pi.
 
Du meinst ein Skript das die Zeit in einer Endlosschleife abfragt und dann bei jeder vergangenen Minute die Befehle ausführt? Da sie nicht Zeitkritisch ist würde sogar ein sleep-Befehl von einer Minute (oder 59 Sekunden) reichen, ist für meine Anwendung eigentlich egal, ob exakt eine Minute verstrichen ist oder etwas mehr/weniger. Ja, könnte ich so auch machen. Warum denkst du dass das besser wäre als Cronjob? Das Problem das bleibt ist ja nach wie vor, dass ich z.B. Phyton im Hinterrgrund unter Android ausführen können muss, egal ob es nun dauerhaft läuft, oder minütlich aufgerufen wird.

@nik Was meintest du unter Webserver der unter Android läuft? Meinst du um PHP ausführen zu können? Das würde meine Probleme bis auf das mit den Screenshots dann schon lösen...
Ich bin mir auch dessen im klaren, dass es Dinge erheblich einfacher machen würde, wenn ich unter Arch Linux ARM oder einer aderen Distro arbeiten würde. Ich befürchte wie erwähnt nur, dass es schwierig wird eine für Android entwickelte Anwendung unter Linux zum laufen zu bekommen (auch wenn es mit Sicherheit möglich ist). Bedenke auch, dass das Pie nur über 1GB RAM verfügt, so dass es wohl kritisch werden könnte, neben einem normalen Linux auch noch zusätzlich Android in einer virtuellen Umgebung zu virtualisieren...
 
Deswegen ja auch die Frage, was das alles soll. Gegebenenfalls gibt es ja eine andere Lösung, völlig unabhängig von der App.
 
Ich nehme an du interessierst dich für mein konkretes Vorhaben? Ich kann dir zumindest folgendes versichern: Die App gibt es NUR für Android und iOS, es gibt keinerlei offizielle oder inoffizielle Desktop- oder Web-Versionen, noch nicht einmal eine umfangreiche API mit der auf den von mir benötigten Funktionsumfang zugegriffen werden kann. Dass es sich hierbei nicht etwa um eine Wetterapp handelt wo genausogut auf andere online verfügbaren Quellen zugegriffen werden könnte, sollte klar sein. Es geht konkret um das Auslesen von bestimten Statusmitteilungen aus der entsprechenden App, welche ich an dieser Stelle nicht näher benennen möchte. Diese werden dann in eine Online-Datenbank übertragen. Wie gesagt, es existiert keine Entwickler-API mit welcher auf diese Daten unkomplizierter zugegriffen werden könnte. Manuelles Auslesen ist derweil zu aufwendig (und langsam). Ich habe mir natürlich schon Gedanken darüber gemacht. Die einzige Alternative die bleibt ist die iOS-Version, was Dinge aber allenfalls komplizierter als einfacher machen dürfe. Natürlich könnte man die App mit Sicherheit auch irgendwie anders zum Laufen bekommen (also z.B. Virtualisierung von Android in Linux). Ich zweifle allerdings nach wie vor, dass das mit nur einem Gigabyte an Arbeitsspeicher möglich sein wird.
 
Gut, das hab ich aus deinen bisherigen Beiträgen geschlossen.
Relevant wäre in der Tat gewesen, was das für eine App ist und was sie nun macht, um einschätzen zu können, ob ein anderer Zugriff auf diese Daten nicht sinnvoller möglich wäre.

Wenn du nun also nicht sagen möchtest, was das nun genau soll, wäre auch mein Rat, dir ein Script zu schreiben, dass die gewünschten Schritte jede Minute durchführt. Allgemein klingt dein Lösungsansatz aber doch recht konfus.
 
Das mit dem Android auf dem PC meinte ich eben zum Testen, denn da hast du recht bequem ein Linux dabei.
Zum Dauerbetrieb ist ein Raspi sicher besser.
Unter Android laufen auch einfache scripts, statt einem cron tut es vielleicht auch eine Schleife mit sleep.
Ja und den Bildschirm gibt es mit "screencap -p screen.png" als root. Ich hab das gerade mal ausprobiert im Terminal. Aus meiner Sicht ganz einfach ohne cron, adb, usw.
Melde bitte ob und wie das klappt.
 
  • Danke
Reaktionen: nik
USB-Debugging muss nicht aktiviert sein, um screencap zu nutzen, macht aber vieles einfacher. So könntest du auf cron oder Ähnliches auf Android verzichten und machst das von einem anderen System aus. Du verbindest dich via adb connect, erzeugst dann per adb shell den Screenshot, lädst ihn mit adb pull herunter und verarbeitest dann unabhängig vom Android/RaspPi und ich bin sicher, auch dort kannst du USB-Debugging aktivieren (falls nicht, hilft sicherlich die App Wifi ADB weiter). Das hätte auch den Vorteil, dass du dir keine Gedanken machen musst, ob und welche Script-Sprache unter Android funktioniert.
 
Ich hab noch was einfacheres gefunden."screenshot -i screen" macht dir sogar incrementell numerierte Dateien screen-1.png, screen-2.png usw.
Ich hab mal "sleep 30;screenshot -i screen" eingegeben, auf Firefox umgeschaltet, und die 30 sec gewartet. Dann hatte ich ein schönes Bild vom Firefox. Noch ein whlie(1) drumherum, schon hat man sein Protokoll :)

Die meisten verstehen nicht das man nur eine Terminal App installieren muss, schon hat man unter Android ein Linux mit Befehlszeile. Und noch die Busybox falls men einen gewohnter Befehl vermisst. Und Hackers Keyboard für Tab, Alt, usw.

Oft denkt man zu kompliziert.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: nik

Ähnliche Themen

mrschwabe
Antworten
9
Aufrufe
170
maik005
maik005
J
Antworten
0
Aufrufe
300
jumbo125
J
sashn
Antworten
32
Aufrufe
859
Observer
Observer
Zurück
Oben Unten