CM13을 실행하는 HTC 10이 있습니다. ADB를 통해 터치 이벤트를 보내고 이것을 보낸 후 이벤트를 보내려고합니다.
adb shell
sendevent /dev/input/event6 3 57 0
sendevent /dev/input/event6 3 53 300
sendevent /dev/input/event6 3 54 400
sendevent /dev/input/event6 3 48 5
sendevent /dev/input/event6 3 58 50
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0
쇼 터치가 켜진 상태에서 전화를 클릭하면 터치가 시작된 것을 볼 수 있지만 터치는 여전히 전화에서 활성화되어 있습니다.
여기 와 여기 뿐만 아니라 다른 곳에서 읽은 내용을 기반으로 할 때해야 할 일은 다음과 같습니다.
sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 2 0
sendevent /dev/input/event6 0 0 0
아니면 그냥
sendevent /dev/input/event6 3 57 -1
sendevent /dev/input/event6 0 0 0
그러나 이러한 명령 중 어느 것도 전화에서 터치가 종료되지 않습니다.
나는이 모든 것을 전화 자체의 쉘 스크립트에 넣고 adb 쉘에서 스크립트를 실행하려고 시도했지만 결과는 똑같습니다. 터치의 시작이지 끝이 아닙니다.
귀하의 환경은 없지만 문제를 조사했습니다. 당신이했던 것처럼 항상 어떤 사람들에게는 효과가 있지만 다른 사람들에게는 그렇지 않은 것 같은 다양한 기사가 있습니다. 전화-하드웨어 / 안드로이드-버전 / SDK- 버전의 조합 사이에 차이가있어서 모든 설정에 대해 하나의 솔루션이 없다는 것이 내 결론입니다.
자신에게 적합한 것이 무엇인지 찾아야합니다. 소프트웨어의 주요 업데이트는 항상 시작점으로 돌아갈 수 있음을 명심하십시오.
내가 찾은 가장 간단한 방법은 다음 input tap x y
명령 을 사용하는 것입니다 .
adb shell input tap x y
모든 input
버전에 tap
매개 변수 가있는 것은 아니지만 인수없이 시작하면 사용 가능한 모든 매개 변수와 구문이 인쇄됩니다.
shell@m0:/ $ input
input
usage: input ...
input text <string>
input keyevent <key code number or name>
input [touchscreen|touchpad|touchnavigation] tap <x> <y>
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
input trackball press
input trackball roll <dx> <dy>
또 다른 방법은 Getevent 를 사용 하여 화면을 터치 할 때 발생하는 이벤트를 기록하는 것입니다. 여기 에서 가져온 것처럼 :
일련의 이벤트 기록
파일에 데이터를 기록하도록 PC 설정 (
/tmp/android-touch-events.log
)$ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
- 전화로 뭔가 좀 해
- 다음을 사용하여 PC에서 adb 명령을 중지하십시오.
ctrl-c
기록 된 이벤트 재생
이 명령은 16 진수 변환을 수행합니다.
awk
$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent
Getevent가 매개 변수를 16 진수로 표시하지만 위의 스크립트가 수정하려고하는 10 진수 입력 만 허용한다는 점에 유의하세요.
monkeyrunner는 입증대로 사용할 수 있다는 또 다른 도구입니다 여기 :
다음 과 같이 monkeyrunner 를 사용할 수 있습니다 .
$ monkeyrunner >>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice >>> device = MonkeyRunner.waitForConnection() >>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
드래그를하거나 활동을 시작할 수도 있습니다 . MonkeyDevice api를 살펴보세요 .
참조 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다