안드로이드 터치 이벤트 보내기 / 받기

2013. 12. 30. 14:03Programing/Android / Java

1. 터치 이벤트 확인

    > adb shell getevent

현재 adb 에 연결된 기기 또는 에뮬레이터의 입력 기기 목록과 해당 기기들의 device file 경로가 나오고, 

이후 몇몇 기기의 이벤트가 계속해서 실시간으로 화면에 나타난다. 

add device 1: /dev/input/event2

  name:     "mtk-kpd"

add device 2: /dev/input/event4

  name:     "mtk-tpd"

add device 3: /dev/input/event3

  name:     "synaptics_ts"

add device 4: /dev/input/event1

  name:     "hwmdata"

add device 5: /dev/input/event0

  name:     "ACCDET"


각종 센서들에 대한 로그가 쭉~~ 나오며, 터치를 했을 경우만 찍히는 event 번호가 터치 이벤트 임을 알 수가 있다.

add device 3: /dev/input/event3

  name:     "synaptics_ts"

여기에서는 synaptics_ts(Touch Screen) 임을 알 수가 있다.


2. 이벤트 로그 확인

이벤트의 내용은 좌측부터 순서대로 device file path, type, code, value 이다.

/dev/input/event1: 0002 0001 00000001

/dev/input/event3: 0003 0039 0000005b

3. 터치 이벤트만 받아오기
해당 Log에서 event3이 터치 이벤트를 확인 했으므로, 터치 할 당시의 event3 로그만 확인을 하면 된다.
/dev/input/event3: 0003 0039 000000ab
/dev/input/event3: 0003 0035 000000f3
/dev/input/event3: 0003 0036 00000133
/dev/input/event3: 0003 003a 0000001f
/dev/input/event3: 0003 0032 00000004
/dev/input/event3: 0003 0033 00000003
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0035 000000f4
/dev/input/event3: 0003 0036 00000131
/dev/input/event3: 0003 003a 00000022
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0036 00000130
/dev/input/event3: 0003 003a 00000026
/dev/input/event3: 0003 0033 00000004
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0036 0000012f
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0036 0000012e
/dev/input/event3: 0003 003a 00000027
/dev/input/event3: 0000 0000 00000000

4. 터치 이벤트 보내기
아래와 같이 소스를 이용해도 좋고,
os.system("adb shell sendevent /dev/input/event1 3 53 " + x_axis)
os.system("adb shell sendevent /dev/input/event1 3 54 " + y_axis)

아래와 같이 배치 파일을 만들어 PC로 돌려도 된다.
adb shell sendevent /dev/input/event1 3 53 x_axis
adb shell sendevent /dev/input/event1 3 54 y_axis


ETC. getevent Option
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
    -t: show time stamps
    -n: don't print newlines
    -s: print switch states for given bits
    -S: print all switch states
    -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)
    -d: show HID descriptor, if available
    -p: show possible events (errs, dev, name, pos. events)
    -i: show all device info and possible events
    -l: label event types and names in plain text
    -q: quiet (clear verbosity mask)
    -c: print given number of events then exit
    -r: print rate events are received