2016-10-18 2 views
0

adb shell input text <String> 또는 adb shell input keyevent <KEYCODE_NAME>을 사용하면 텍스트를 안드로이드 장치로 전송할 때 완벽하게 작동하지만 내 문제는 속도입니다.Fast Keyevent Simulation (Android 셸)

input keyevent KEYCODE_A KEYCODE_A KEYCODE_SPACE KEYCODE_A KEYCODE_ENTER;과 같은 것을 사용하면 텍스트가 빨리 입력되지만 2 개의 명령으로 분리하면 2 개의 명령 사이에 (1 초) 지연이 발생합니다 (느리게).

샘플 쉘 코드 (더 빨리)

방법 1 :

input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER KEYCODE_A KEYCODE_A KEYCODE_ENTER; 

방법 2 :

input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER; 
input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER; 

나는 가능한 한 빨리 많은 텍스트를 입력 좋아하지만 것 input keyevent이있는 쉘 스크립트가 있고 예를 들어 KEYCODE_A의 큰 조합이 실행되지 않습니다. (대용량 셸 명령이 중단됨)

긴 지연없이 큰 텍스트를 보내는 가장 좋은 방법은 무엇입니까?
sendevent 큰 텍스트를 보내는 것이 더 빠릅니까?

참고 :

    input text <String>의 약점은 또한 그것의 크기에 제한이하고 (뒤로 버튼과 같은 나/뉴 라인 입력) 그 안에 특별 한 KeyEvents를 수행 할 수 있다는 것입니다
  • .

미리 감사드립니다.

+0

'입력의 KeyEvent을 $ (전에서이 $ (서열 500)에 대한 29 에코 않는다 일 30 에코) '내 장치에서 정상적으로 작동했습니다. 한 번에 500 개 이상의 키 코드를 주입해야합니까? –

+0

@AlexP. 귀하의 방법을 잘 작동하지만 문제는 내가 피하려고했던 모든 명령 사이에 1 초 지연이있을 것입니다. – SamJ

+0

해결책을 제안하는 것이 아니라 사용 사례에 의문을 제기했습니다. –

답변

1

Android 쉘을 사용하고 있다는 것을 알지만, 사용 가능한 옵션이 부족하다고 생각합니다.

당신이 시도하는 것보다 빠릅니다 한 방법을 알고, Instrumentation를 사용하여 :

final Instrumentation mInst = new Instrumentation(); 

mInst.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, keycode)); 
mInst.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, keycode));