현재 D 패드 (위, 아래, 왼쪽 및 오른쪽)를 시뮬레이트하는 앱을 작성 중입니다. 문제는 키 누름을 다른 응용 프로그램으로 보내는 방법을 알 수 없다는 것입니다.android의 시뮬레이션 화살표 키 누름
현재 Instrumentation을 사용하고 있으며 내 앱 활동에서 완벽하게 작동합니다.
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT);
}
}).start();
이 구현의 문제 때문에 안드로이드 보안 기능에, 내가 다른 응용 프로그램에 키 입력을 보낼 수 있다는 것입니다 : 다음은 화살표 키의 조각 코드를 왼쪽입니다. 키 누르기를 주입하는 다른 방법을 검색 한 후에이 키가 article에 도달했습니다. 그러나 예제 코드를 시도한 후에도 작동하지 않는 것 같습니다. 나는 주변을 찌르고 안드로이드가 키보드를위한 입력 장치를 갖고 있지 않은 것으로 나타났습니다. 내가 다른 입력 장치를 스캔 할 때 방향 센서와 같은 것들을 얻을 수 있습니다. 여기에 내 전화 (T-959 Galaxy S)의 모든 입력 장치 그림이 있습니다.
당신이 볼 수 있듯이,이 장치의 아무도는 키보드입니다. 내 전화기에 실제 키보드가 없기 때문에 이것이 기분이 들었습니다. (사이 프러스는 용량 성 키이고, 양자리는 볼륨 버튼이며, mxt224는 터치 스크린 컨트롤러입니다.)
연구 결과가 조금 더 나온 후 안드로이드의 접근성 API는 이벤트 주입 기능이 제한적이라는 것을 알았지 만 보기 초점 등 전환과 같은 아주 기본적인 것들 (AccessibilityNodeInfo). 그러나 화살표 키를 지원하도록 확장 할 수 있다고 생각합니다.
그래서 현재 어디로 가야할 지 혼란 스럽습니다. 전에 이런 짓 한 사람 있니? 그것은 안드로이드의 보안 기능으로 인해 화살표 키 (다른 건 아무것도)의 간단한 주입이 매우 좌절하는 것 같습니다. 모든 제안을 환영합니다.
편집 : 나는 분명하지는 않았지만 뿌리가있는 전화기에 대해서만 이것을 구축하는 것이 좋습니다. 유일한 요구 사항은이 응용 프로그램이 otg 또는 adb를 통해 컴퓨터를 통해 외부 키보드에 연결되지 않고 독립 실행 형으로 실행되어야한다는 것입니다.
내가 컴퓨터에 연결하지 않고도 전화에를 실행할 수 있습니까?su를 사용하여 쉘 명령으로 실행합니까? 이것은 매우 단순 해 보이지만, 여전히 입력 장치에 의존한다고 느낍니다. 내 문제에 대한 아주 간단한 해결책처럼 들리므로 이것을 보게됩니다. – tincan
컴퓨터 키보드를 사용하고 있기 때문에 내가 제안한 해결책은 컴퓨터에 연결해야합니다. 그러나 당신은 안드로이드 장치에서 셸 명령을 보내어 동일한 작업을 수행 할 수 있습니다. – Atrix1987
DPAD LEFT 이벤트의 모든 장치에서 키 이벤트 21이 보편입니까? 나는 그것이 adb 명령이기 때문에 예라고 생각 하겠지만, 나는 단지 그것을 확인하고 싶다. – tincan