Bitcoin Billionaire jedną jedną z wielu gier typu idle clicker.
https://play.google.com/store/apps/details?id=com.noodlecake.bitcoin.
Jak wiadomo jedną z opcji zdobywania waluty w tego typu grach jest klikanie w ekran lub w myszkę. Chciałem trochę sobie ułatwić grę poprzez samoczynne klikanie w ekran.
Pierwsze co potrzebowałem to ADB którego użyłem do łączenia się z telefonem.
http://developer.android.com/tools/help/adb.html
Następnie zrobiłem mały research i znalazłem komendę
adb shell input tap x y
Niestety komenda jest zbyt wolna na zastosowanie tutaj.
Dlatego zacząłem szukać innych sposobów. Kolejne które znalazłem to
adb shell getevent
oraz
adb shell sendevent
Telefon który używałem do testów to Samsung Galaxy S5 z Androidem 5.0
Szybkie sprawdzenie eventów wykonywanych przy pojedynczym dotyku palcem
add device 1: /dev/input/event15
name: "es705 input"
add device 2: /dev/input/event14
name: "w1"
add device 3: /dev/input/event12
name: "hrm_sensor"
add device 4: /dev/input/event11
name: "ssp_context"
add device 5: /dev/input/event10
name: "meta_event"
add device 6: /dev/input/event9
name: "step_cnt_sensor"
add device 7: /dev/input/event8
name: "sig_motion_sensor"
add device 8: /dev/input/event7
name: "temp_humidity_sensor"
add device 9: /dev/input/event6
name: "proximity_sensor"
add device 10: /dev/input/event5
name: "light_sensor"
add device 11: /dev/input/event4
name: "gesture_sensor"
add device 12: /dev/input/event3
name: "qpnp_pon"
add device 13: /dev/input/event0
name: "sii8240_rcp"
could not get driver version for /dev/input/mice, Not a typewriter
add device 14: /dev/input/event13
name: "gpio-keys"
add device 15: /dev/input/event1
name: "sec_touchkey"
add device 16: /dev/input/event2
name: "sec_touchscreen"
/dev/input/event2: 0003 0039 0000113e
/dev/input/event2: 0001 014a 00000001
/dev/input/event2: 0003 0035 000002bc
/dev/input/event2: 0003 0036 000005ef
/dev/input/event2: 0003 0030 00000007
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0035 000002c7
/dev/input/event2: 0003 0030 00000009
/dev/input/event2: 0003 0031 00000007
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0039 ffffffff
/dev/input/event2: 0001 014a 00000000
/dev/input/event2: 0000 0000 00000000
Teraz prze konwertowanie parametrów zwróconych przez getevent na te używane przez sendevent.
Zmiana wszystkich liczb z hex na dec
http://www.binaryhexconverter.com/hex-to-decimal-converter oraz usunięcie ’:’
Efekt:
adb shell sendevent /dev/input/event2 3 57 4250
adb shell sendevent /dev/input/event2 1 330 1
adb shell sendevent /dev/input/event2 3 53 630
adb shell sendevent /dev/input/event2 3 54 1570
adb shell sendevent /dev/input/event2 3 48 8
adb shell sendevent /dev/input/event2 3 49 7
adb shell sendevent /dev/input/event2 0 0 0
adb shell sendevent /dev/input/event2 3 57 4294967295
adb shell sendevent /dev/input/event2 1 330 0
adb shell sendevent /dev/input/event2 0 0 0
Wrzucenie w pętle i zapisanie jako plik cmd
@echo off
for /l %%x in (1, 1, 999999999) do (
adb shell sendevent /dev/input/event2 3 57 4250
adb shell sendevent /dev/input/event2 1 330 1
adb shell sendevent /dev/input/event2 3 53 630
adb shell sendevent /dev/input/event2 3 54 1570
adb shell sendevent /dev/input/event2 3 48 8
adb shell sendevent /dev/input/event2 3 49 7
adb shell sendevent /dev/input/event2 0 0 0
adb shell sendevent /dev/input/event2 3 57 4294967295
adb shell sendevent /dev/input/event2 1 330 0
adb shell sendevent /dev/input/event2 0 0 0
)
Szybkość jest już lepsza ale nadal niezadowalająca.
Kolejny pomysł to bezpośrednie zalogowanie się na urządzenie poprzez adb shell i wykonanie dwóch poleceń.
dd if=/dev/input/event2 of=click # record
dd if=./click of=/dev/input/event2 #play
Co do dd To chyba wiadomo co robi
http://pl.wikipedia.org/wiki/Dd
Wrzucenie
dd if=./click of=/dev/input/event2 #play
w pętle i bylibyśmy w domu.
Niestety a
shell@klte:/ $ dd if=/dev/input/event2 of=click
dd if=/dev/input/event2 of=click
dd: click: Read-only file system
I narazie przy tym zostanę. Niestety nie mam obecnie zrotowanego urządzenia na którym mógłbym dalej działać.
Już zostawiłem skrypt podany wcześniej odpalony na noc 😉