안녕하세요!
제가 터치 이벤트를 루팅된 기기에 가하기 위해서 다음과 같은 코드를
기기 내 adb shell에 입력하는 어플리케이션을 개발하였습니다..
su
sendevent /dev/input/event1 3 57 7 //hex 39//터치ID
sendevent /dev/input/event1 1 330 1 //14a
sendevent /dev/input/event1 1 325 1 //145
sendevent /dev/input/event1 3 53 +x//35//좌표설정
sendevent /dev/input/event1 3 54 +y//36
sendevent /dev/input/event1 3 48 0 //30//손가락 굵기
sendevent /dev/input/event1 3 58 38 //3a//터치 강도
sendevent /dev/input/event1 3 63 6
sendevent /dev/input/event1 0 0 0
exit
su
sendevent /dev/input/event1 3 57 -1 //39//ffffff대신 -1
sendevent /dev/input/event1 1 330 0 //14a
sendevent /dev/input/event1 1 325 0 //145
sendevent /dev/input/event1 0 0 0
exit
위의 shell코드와 아래의 shell코드는 각각 터치의 down과 up을 실행하는 코드입니다.
제가 가지고 있는 테스트 기기 (갤럭시 노트, 갤럭시 알파)에서는 실행이 되었는데,
여기서 문제가 있었습니다.....
이 코드가 첫 빌드시에만 정상작동이 되었습니다!!!
루팅할 때 제가 supersu를 깔아서 사용하고 있기 때문에,
첫 빌드시에는 이런 팝업이 뜨고 "허용" 버튼을 눌러줘야 터치 이벤트가 발생했습니다.
첫 실행때 만족스럽게 잘 작동 되는 모습을 보고 다시 실행하려고
어플을 재컴파일 없이 다시 켰는데,
이번에는 실행이 되지 않았습니다!!!!
그래서 SuperSu에 들어가서 아래와 같은 목록에 제가 만든 어플리케이션의 이름을
위의 "앱" 탭에서 삭제하였습니다. 루트 권한 제공 여부를 관리하는 탭 같았습니다.
제가만든 어플리케이션의 루팅권한 제공 여부를 삭제하고 재빌드 없이 다시 실행한 결과
어플리케이션이 잘 작동하였습니다!!
그렇다는 것은, 제가만든 어플리케이션이 루트 권한을 최초로 받았을때만
정상적으로 실행된다는 것을 의미하는 것이었습니다!
그런데, 왜 이렇게 루팅 첫 실행시에만 실행되는 불미스런 현상이 벌어지는지 모르겠습니다 ㅠㅠ
이 어플리케이션이 shell에 입력한 코드는 위에 서술된 것이 전부입니다!!!!
이유를 알려주시면 대단히 감사드리겠습니다!!!