2012-08-22 2 views
3

일부 자동 작업을하고 있는데 getevent를 사용하여 화면 접촉을 저장할 수 있지만 sendevent를 사용하여이 작업을 보내려고 할 때 실제로 입력을 재생하기가 힘들어서 정말 오랜 시간이 걸립니다.안드로이드 sendevent 정말 느립니다 - 그것을 어떻게 속도?

이미 장치에 스크립트를로드하고 장치에서 스크립트를 로컬로 실행하려고 시도했습니다 (sendevent 명령이 포함 된 스크립트). 그러나 이것은 이것에 대해서 약간만 imporved했다. 더 빨리 이러한 명령을 주입 할 수있는 다른 방법이 있습니까?

답변

4

터치 핸들러가 다른 기기에서 구현되는 재생 #됐다. 터치 핸들러가 구현 된 위치를 확인하려면 cat /proc/bus/input/devices을 사용해야합니다.

adb shell getevent을 수행하고 장치와 상호 작용하고 인터페이스 이름의 출력을 확인할 수도 있습니다.

재생이 오랜 시간이 걸리는 이유는 sendevent 바이너리가 인터페이스 파일을 열고 sendevent를 호출 할 때마다 데이터를 쓰고 닫는 것이기 때문입니다. 따라서 이론 상으로는 많은 sendevent 명령이 있다면 바이너리는 인터페이스 파일을 열고 데이터를 쓰고 모든 명령에 대해 닫습니다.

이 문제를 해결 한 방법은/system/core/toolbox 아래에 sendevent.c 파일을 다시 작성하여 재생 중에 파일을 한 번만 열어 모든 데이터를 쓰고 그 끝에있는 파일을 닫는 것입니다. 다시 하다. 그것은 나를 위해 완벽하게 작동합니다!

+1

그냥 그렇게 정확히 내가 한 일이 일어난다! 답변 해주셔서 감사합니다! – user1598917

3

확인.

DD =는/dev/입력/= 신기록 #의 event6이

DD 경우를 기록하는 경우 : 대신 getevent를 사용하는/당신이 ADB 쉘 시도 내부의 이벤트 인터페이스 에서 직접 읽기를 시도 할 수 있습니다 sendevent =./record1of =/디바이스/입/event6 그러나

이 너무 빨리 실행할 수 ...

+0

이 경우 터치 사이의 지연을 처리하는 방법. – Rilwan

관련 문제