Android ADB 쉘 sendevent가 작동하지 않음

Android ADB 쉘 sendevent가 작동하지 않음

Samsung Galaxy Tab 2 GT-P5100ADB 셸을 사용하여 루팅된 Android 4.0.4에서 전원 버튼 누르기를 시뮬레이션하고 싶습니다 .

이를 위해 다음을 사용하여 관련 권한을 변경했습니다.

adb shell
su
chmod 666 /dev/input/event1

이것이 성공했는지 어떻게 알 수 있나요?

다음 명령이 잠금 화면을 표시할 것이라고 생각했습니다.

input keyevent 116

오류는 발생하지 않지만 아무 일도 일어나지 않습니다 ...

또는 다음과 같은 키 코드의 텍스트 형식을 사용했습니다.

input keyevent KEY_POWER

이 경우 출력은 Killed-이것은 무엇을 의미 하는가?

마지막으로 다음을 시도했습니다.

sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0

운이 없군요 :(

내가 도대체 ​​뭘 잘못하고있는 겁니까?

getevent -i /dev/input/event1

다음을 출력합니다:

add device 1: /dev/input/event1
  bus:      0000
  vendor:   0000
  product:  0000
  version:  0000
  name:     "sec_key"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    KEY (0001):  0072  0073  0074
  input props:
    <none>

키에는 0074텍스트 라벨이 있습니다 KEY_POWER.

답변1

전원 버튼 누르기는 몇 가지 이벤트로 구성됩니다. 다음 명령을 입력하여 확인할 수 있습니다.

adb shell getevent -l

그리고 전원 버튼을 누르세요. Nexus 5 에뮬레이터의 결과는 다음과 같습니다.

/dev/input/event0: EV_KEY KEY_POWER   DOWN                
/dev/input/event0: EV_SYN SYN_REPORT  00000000            
/dev/input/event0: EV_KEY KEY_POWER   UP                  
/dev/input/event0: EV_SYN SYN_REPORT  00000000 

터치 이벤트 입력 파일 /dev/input/event는 장치마다 다를 수 있습니다. 이 경우에는 event0입니다.

장치에 이벤트를 쓰기 전에 터치 이벤트 파일의 모드를 변경해야 합니다.

adb shell
chmod 666 /dev/input/event0

키에 대한 모든 정의는 다음에서 찾을 수 있습니다. http://androidxref.com/4.4_r1/xref/prebuilds/ndk/6/platforms/android-9/arch-arm/usr/include/linux/input.h

sendevent 키의 값은 다음과 같아야 합니다.소수

전원 버튼 누르기를 에뮬레이트하려면 해당 이벤트를 모두 작성해야 합니다.

adb shell sendevent /dev/input/event0 1  116  108                
adb shell sendevent /dev/input/event0 0  0    0            
adb shell sendevent /dev/input/event0 1  116  103                  
adb shell sendevent /dev/input/event0 0  0    0 

Nexus 5 에뮬레이터에서 테스트했는데 작동합니다.

답변2

올바른 방법으로 보내지 않기 때문입니다. 보내는 것만으로는 부족해요

sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0

아래 방법을 시도해 보세요. ;)

sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 0 0 0 ;sendevent dev/input/event1 1 116 0 ;sendevent dev/input/event1 0 0 0

관련 정보