PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eigene Makros programmieren



Mr.Tr33
23.12.2016, 00:41
Hallo,

ich möchte einen Vorgang auf auf einem Android Handy automatisieren.
Um etwas genauer zu sein, will ich etwas von einer Webseite auslesen, dann eine bestimmte App starten, dort in die Einstellungen gehen und dann da eintragen und absenden. Dies soll zusätzlich Zeitgesteuert passieren z.B. alle 15 min. Der Vorgang kann ruhig das Handy komplett blockieren.

Ist so etwas möglich? Wie aufwändig ist das zu programmieren, gibt es vielleicht sogar schon kleine Beispiele?
Ein Problem mit Android / Groovy habe ich nicht :D

s3rb31
23.12.2016, 02:38
Also ich weiß ja nich wie low-level dus gern hättest. Aber das hier könnte interessant sein:


http://code.lardcave.net/entries/2009/08/01/160953/

Dailox
23.12.2016, 12:22
Ich weiß nicht genau, aber ich schätze, dass du nach Command pattern (https://en.wikipedia.org/wiki/Command_pattern) suchst.

Mr.Tr33
23.12.2016, 14:09
Ich suche etwas nicht zum aufnehmen. Da es zu individuell ist, muss es leider programmiert werden.

Um die Frage etwas genauer zu gestalten:
1. wie bekomme ich mein selbst geschriebenes Marko aufs Handy?
2. muss es dafür gerootet sein? (ist darf ruhig in meinem Fall)
3. wie sieht so ein Makro aus? (vermutlich ja keine apk)
4. wie starte ich es zeitgesteuert?

Ich brauche etwas wo ich z.B. sage "öffne App A, klicke in Input #3, Wert auslesen aus dem Input, verarbeiten, neuen Wert rein, App B öffnen, runter scrollen, mit 2 Fingern reinzoomen, auf eine bestimmte Stelle klicken, Text in Input #1 einfügen, auf Button klicken, beide Apps schliessen"
Und zwischenzeitlich immer schauen ob irgendwelche Popups kamen, dass man darauf reagiert. Am besten noch, dass ich Farben von XY auslesen kann und damit auch arbeiten kann.

Dailox
23.12.2016, 14:40
Ich suche etwas nicht zum aufnehmen. Da es zu individuell ist, muss es leider programmiert werden.

Um die Frage etwas genauer zu gestalten:
1. wie bekomme ich mein selbst geschriebenes Marko aufs Handy?


adb, ftp wat weiß ich.



2. muss es dafür gerootet sein? (ist darf ruhig in meinem Fall)

Gerootet sollte es leichter sein, ja



3. wie sieht so ein Makro aus? (vermutlich ja keine apk)

Wie denn sonst?



4. wie starte ich es zeitgesteuert?

Kannste machen wie du willst. Kannst nach der Uhrzeit gehen, kannst auch die ganze Exekution pausieren lassen, kannst den Thread "sleepen" lassen usw.





Ich brauche etwas wo ich z.B. sage "öffne App A, klicke in Input #3, Wert auslesen aus dem Input, verarbeiten, neuen Wert rein, App B öffnen, runter scrollen, mit 2 Fingern reinzoomen, auf eine bestimmte Stelle klicken, Text in Input #1 einfügen, auf Button klicken, beide Apps schliessen"
Und zwischenzeitlich immer schauen ob irgendwelche Popups kamen, dass man darauf reagiert. Am besten noch, dass ich Farben von XY auslesen kann und damit auch arbeiten kann.


Command pattern (https://dzone.com/articles/design-patterns-command)

Beispiele die ich auf die Schnelle gefunden habe:
https://play.google.com/store/apps/details?id=com.prohiro.macro&hl=de
https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid&hl=de
https://play.google.com/store/apps/details?id=com.llamalab.automate&hl=de

Leange
23.12.2016, 15:12
zu 4.
https://guides.codepath.com/android/Starting-Background-Services#using-with-alarmmanager-for-periodic-tasks

Cystasy
23.12.2016, 15:23
IMHO ist das ganze zu komplex für ein einfaches "makro". Es gibt im Store zwar einige Apps die Makro Artige Abläufe ermöglichen.. aber das was du als Beispiel erklärt hast, wird man damit wohl nicht hinbekommen da zu komplex. Ich vermute du wirst nicht um das erstellen einer Android App (apk) rum kommen^^

Dailox
23.12.2016, 15:37
IMHO ist das ganze zu komplex für ein einfaches "makro". Es gibt im Store zwar einige Apps die Makro Artige Abläufe ermöglichen.. aber das was du als Beispiel erklärt hast, wird man damit wohl nicht hinbekommen da zu komplex. Ich vermute du wirst nicht um das erstellen einer Android App (apk) rum kommen^^

Ja, denke ich auch. Trotzdem ist es bestimmt hilfreich sich ein paar Beispiele anzugucken, damit man wenigstens weiß wie das ganze aussehen könnte ^^ Wollte er ja auch

Mr.Tr33
25.12.2016, 20:30
Ich habe mich damit 0 beschäftig wie so etwas funktionieren könnte, deswegen habe ich ja gefragt, mit der Hoffnung, dass jemand mir paar Schlagwörter an den Kopf werfen kann die ich aneinander gereimt in Google kloppen kann und dann mein Ziel damit erreiche :D

Ich will im Endeffekt keine App haben mit einer Oberfläche etc. Ich will meinen Vorgang einfach direkt einprogrammieren und Zeitgesteuert starten, meinetwegen auch irgendwie als Pythoncode etc.

@Dailox
Ein Pattern bringt mir nichts, wenn ich kein Grundbaustein habe.
Bitte erwarte nicht, dass ich mit Android auskenne (habe es so auch nicht "verkauft" :D). Möchte nur einen Vorgang automatisieren, denn man NICHT aufnehmen kann.


Vielleicht habe ich auch falsche Vorstellungen, deswegen bitte ich euch um etwas detaillierte Antworten als wie "Wie denn sonst?".

Cystasy
25.12.2016, 20:38
Ich habe mich damit 0 beschäftig wie so etwas funktionieren könnte, deswegen habe ich ja gefragt, mit der Hoffnung, dass jemand mir paar Schlagwörter an den Kopf werfen kann die ich aneinander gereimt in Google kloppen kann und dann mein Ziel damit erreiche :D

Ich will im Endeffekt keine App haben mit einer Oberfläche etc. Ich will meinen Vorgang einfach direkt einprogrammieren und Zeitgesteuert starten, meinetwegen auch irgendwie als Pythoncode etc.


Eine Android App benötigt nicht zwingenderweise eine Grafische Oberfläche.
Du kannst das ganze auch als einen (Hintergrund) Service programmieren der dann unabhängig davon läuft, welche App du grade offen hast.
Das habe ich z.b mal gemacht um eine Uhr als Overlay über Virtual Reality Anwendungen zu rendern damit ich immer in jeder App
während ich meine GearVR auf habe die Uhrzeit weiß (man verliert sich da Zeitlich sehr schnell).

Dabei lief dann im Vordergrund das Spiel, und im Hintergrund dann mein Service der die Uhrzeit als Overlay drüber gerendet hat.
Von daher.. du kannst das was du willst denke ich schon umsetzen, nur wirst du erstmal bisschen Android Programmierung lernen müssen^^

Hier mal als Beispiel wie man sowas lösen könnte (musst dann halt nicht Farbe rendern sondern deine Aufgaben abarbeiten lassen^^):

http://www.whycouch.com/2013/01/how-to-overlay-view-over-everything-on.html


grüße

Mr.Tr33
25.12.2016, 21:15
@Cystay
ah cool danke :)
Das ist schon mal ein Anfang :D
Gibt es irgendwelche bestimmten Begriffe (die ich googeln kann) um Touchgästen zu simulieren?

Cystasy
25.12.2016, 21:41
@Cystay
ah cool danke :)
Das ist schon mal ein Anfang :D
Gibt es irgendwelche bestimmten Begriffe (die ich googeln kann) um Touchgästen zu simulieren?

"android java simulate touch presses" oder so^^
Ist auch per adb möglich, mit java selbst klappts aber auch.

grüße

Mr.Tr33
25.12.2016, 22:33
Ist auch per adb möglich, mit java selbst klappts aber auch.
öhm, adb ist doch keine Programmiersprache oder irre ich mich da?
es soll später selbstständig ohne einem Rechner funktioniert :D

Cystasy
25.12.2016, 22:37
öhm, adb ist doch keine Programmiersprache oder irre ich mich da?
es soll später selbstständig ohne einem Rechner funktioniert :D

ADB ist eine Schnittstelle die dir vom PC aus Zugriff auf das Android Smartphone gibt und dir auch ne Shell bereitstellt wo du dann auch Programme installen, löschen usw kannst.. und eben auch Touch Eingaben Simulieren ^^ Deshalb wollte ichs nur Zusätzlich erwähnt haben das es halt darüber auch geht :) Hätte ja sein können das du es auch über diesen Weg angehen hättest können.
Kenne ja dein Ziel des ganzen nicht so ganz^^ Hätte ja sein können das du ein Bot für eine Social Network fürs Handy oder so machen möchtest der dann auch über Scripts am PC worken hätte können (Script oder Programm am PC -> ADB -> Phone) ^^

Habe das ganze deshalb erwähnt, weil manche Botter die z.b Tinder Bot Accounts am laufen haben da ganze Smartphone-Rechenzentren aufbauen wo sie regelrecht 500-1000 Billig Smartphones dann über Kabel an PC's anschließen und darüber dann mit ADB Aktionen ausführen lach^^ Gibt manche, die machen sowas :D

grüße

Mr.Tr33
27.12.2016, 13:10
Wie hier bereits erwähnt wurde, gibt es ja Apps die können Gästen aufnehmen und es wieder abspielen. Wie machen die das abspielen? Wie können diese Apps auf anderen Apps rumklicken?

Wenn du schon die TinderBots erwähnst. Wie funktioniert es da, dass die z.B. den richtigen Button erwischen etc?
Will etwas ähnliches machen bzw. einen Vorgang über mehrere Apps simulieren und die Daten liest sich das Script von einer Internetseite aus.

Das mit dem Servicelayer ist eine nice Sache :D Mir fehlt dann immer noch der Teil wie ich der App sagen kann, dass sie auf XY klickt und dann da anfängt zu tippen.
Über Google konnte ich diesbezüglich nichts wirklich finden :/

Cystasy
27.12.2016, 20:21
Wie hier bereits erwähnt wurde, gibt es ja Apps die können Gästen aufnehmen und es wieder abspielen. Wie machen die das abspielen? Wie können diese Apps auf anderen Apps rumklicken?


Gesten :P
Die nutzen entsprechende API's oder selbst entwickelte Programmfunktionen.
In Android gibt es unterschiedliche Möglichkeiten nen Touch zu simulieren, da musst du dich ein bisschen umschauen was das beste für dich ist.



Wenn du schon die TinderBots erwähnst. Wie funktioniert es da, dass die z.B. den richtigen Button erwischen etc?
Will etwas ähnliches machen bzw. einen Vorgang über mehrere Apps simulieren und die Daten liest sich das Script von einer Internetseite aus.


Mit anderen Worten, du möchtest wahrscheinlich anhand ner Webseite die dir Fake Name usw generiert dann Useraccounts registrieren die dann was posten :P?
Anyway egal^^ Die Tinderbots sind oft von verschiedenen Entwicklern & Leuten entwickelt.. manche davon benutzen vordefinierte x,y Koordinaten zum rumklicken,
andere haben eine Art "Pixelbot" Routine wie die damaligen Metin2 Bots, andere wiederum arbeiten mit der API direkt usw usf..
Das hängt ganz vom Entwickler & Anwendungsfall ab.. das kann man nicht so pauschal sagen weil halt mehr Wege nach Rom führen.. nicht nur einer ;)

grüße