Shell do ADB do Android sendevent Not Working

0

Eu quero simular pressionando o botão liga / desliga em um Samsung Galaxy Tab 2 GT-P5100 com root executando o Android 4.0.4 usando o shell ADB.

Para fazer isso, alterei as permissões relevantes usando:

adb shell
su
chmod 666 /dev/input/event1

Como sei se isso foi bem sucedido?

Eu achei que o seguinte comando exibiria a tela de bloqueio:

input keyevent 116

Não recebo erros, mas nada acontece ...

Como alternativa, usei a forma de texto do código-chave, que se parece com isso:

input keyevent KEY_POWER

Nesse caso, a saída é Killed - O que isso significa?

Por fim, tentei:

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

Sem sorte: (

O que estou fazendo de errado?

getevent -i /dev/input/event1

gera o seguinte:

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>

A chave 0074 tem o rótulo textual KEY_POWER .

    
por calcha3991 24.05.2015 / 17:10

2 respostas

1

O pressionamento do botão liga / desliga consiste em alguns eventos. Você pode verificar isso digitando o comando:

adb shell getevent -l

e, em seguida, pressione o botão liga / desliga. No emulador nexo 5, o resultado é:

/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 

O arquivo de entrada do evento de toque / dev / input / event pode ser deferente de dispositivo para dispositivo. Neste caso, é event0.

Antes de gravar eventos no dispositivo, você precisa alterar o modo do arquivo de eventos de toque:

adb shell
chmod 666 /dev/input/event0

Todas as definições de chaves podem ser encontradas em link

O valor das chaves sendevent deve ser decimal

Para emular o botão liga / desliga, você tem que escrever todos eventos:

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 

Eu testei no emulador do Nexus 5 e funciona.

    
por 24.08.2015 / 17:09
0

Porque você não está enviando da maneira certa. Não é suficiente enviar apenas

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

Por favor, tente o abaixo;)

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
    
por 11.06.2015 / 11:37