2013-03-19 3 views
1

현재 D 패드 (위, 아래, 왼쪽 및 오른쪽)를 시뮬레이트하는 앱을 작성 중입니다. 문제는 키 누름을 다른 응용 프로그램으로 보내는 방법을 알 수 없다는 것입니다.android의 시뮬레이션 화살표 키 누름

현재 Instrumentation을 사용하고 있으며 내 앱 활동에서 완벽하게 작동합니다.

new Thread(new Runnable() {   
        @Override 
        public void run() {     
         new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT); 
        } 
       }).start(); 

이 구현의 문제 때문에 안드로이드 보안 기능에, 내가 다른 응용 프로그램에 키 입력을 보낼 수 있다는 것입니다 : 다음은 화살표 키의 조각 코드를 왼쪽입니다. 키 누르기를 주입하는 다른 방법을 검색 한 후에이 키가 article에 도달했습니다. 그러나 예제 코드를 시도한 후에도 작동하지 않는 것 같습니다. 나는 주변을 찌르고 안드로이드가 키보드를위한 입력 장치를 갖고 있지 않은 것으로 나타났습니다. 내가 다른 입력 장치를 스캔 할 때 방향 센서와 같은 것들을 얻을 수 있습니다. 여기에 내 전화 (T-959 Galaxy S)의 모든 입력 장치 그림이 있습니다.

input devices

당신이 볼 수 있듯이,이 장치의 아무도는 키보드입니다. 내 전화기에 실제 키보드가 없기 때문에 이것이 기분이 들었습니다. (사이 프러스는 용량 성 키이고, 양자리는 볼륨 버튼이며, mxt224는 터치 스크린 컨트롤러입니다.)

연구 결과가 조금 더 나온 후 안드로이드의 접근성 API는 이벤트 주입 기능이 제한적이라는 것을 알았지 만 보기 초점 등 전환과 같은 아주 기본적인 것들 (AccessibilityNodeInfo). 그러나 화살표 키를 지원하도록 확장 할 수 있다고 생각합니다.

그래서 현재 어디로 가야할 지 혼란 스럽습니다. 전에 이런 짓 한 사람 있니? 그것은 안드로이드의 보안 기능으로 인해 화살표 키 (다른 건 아무것도)의 간단한 주입이 매우 좌절하는 것 같습니다. 모든 제안을 환영합니다.

편집 : 나는 분명하지는 않았지만 뿌리가있는 전화기에 대해서만 이것을 구축하는 것이 좋습니다. 유일한 요구 사항은이 응용 프로그램이 otg 또는 adb를 통해 컴퓨터를 통해 외부 키보드에 연결되지 않고 독립 실행 형으로 실행되어야한다는 것입니다.

답변

4

며칠 전 DPAD 키 프레스 이벤트를 시뮬레이트하고 싶었고 자체 제한이있는 해결책을 찾았습니다.

adb 명령 input keyevent <keycode>을 사용하여 화살표 키를 시뮬레이션 할 수 있습니다. 따라서 DPAD LEFT 키를 시뮬레이션하려면 adb 명령 adb input keyevent 21을 사용하십시오.

이 코드를 재사용하고 크기를 조절하려면 키 이벤트를 보내야하는 장치를 선택하고 컴퓨터의 기존 키보드를 사용하여 키를 입력하는 독립 실행 형 스윙 응용 프로그램을 만들었습니다 [나는 키보드 키 코드를 안드로이드 키 코드에 매핑한다.]

원격 및 게임 패드 버튼을 포함하여 응용 프로그램을 확장하고 나면 git에서 프로젝트를 업로드합니다.

희망이 도움이됩니다. 당신의 의도는 아마도 가장 좋은 건 사용하여 새 InputMethod를 구현하는 것입니다 비 뿌리 휴대 전화에서 작동하는 응용 프로그램을 작성하는 경우

+0

내가 컴퓨터에 연결하지 않고도 전화에를 실행할 수 있습니까?su를 사용하여 쉘 명령으로 실행합니까? 이것은 매우 단순 해 보이지만, 여전히 입력 장치에 의존한다고 느낍니다. 내 문제에 대한 아주 간단한 해결책처럼 들리므로 이것을 보게됩니다. – tincan

+0

컴퓨터 키보드를 사용하고 있기 때문에 내가 제안한 해결책은 컴퓨터에 연결해야합니다. 그러나 당신은 안드로이드 장치에서 셸 명령을 보내어 동일한 작업을 수행 할 수 있습니다. – Atrix1987

+0

DPAD LEFT 이벤트의 모든 장치에서 키 이벤트 21이 보편입니까? 나는 그것이 adb 명령이기 때문에 예라고 생각 하겠지만, 나는 단지 그것을 확인하고 싶다. – tincan