2013-05-29 4 views
0

У меня есть проект, и я пытаюсь запустить события клавиатуры. Я использую Instrumentation Class, и он отлично работает на эмуляторе, но когда я запускаю его на своем устройстве, вызов не работает, есть ли способ заставить его работать?Имитация событий клавиатуры в Android

Кроме того, я искал в Интернете, и я нашел несколько сообщений об IWindowManager и внутренних API, я полностью понимаю риск их использования, но мой проект является исследованием и не предназначен для публикации, поэтому я не против использования этих API в моем приложении, если они могут решить мою проблему, но проблема в том, что я не могу найти JAR, который содержит эти классы.

TLDR: Мне нужно решение, которое помогает мне огонь события клавиатуры на моем Android устройства, любые идеи приветствуются

+0

Какой код вы используете в настоящее время, который работает с симулятором, но не с устройством? – AJak

+0

Я использую класс Instrumentation – NightWhisper

ответ

3

На самом деле существует более простой метод, который я нашел Использование класса Activity или класса WebView. Оба имеют одинаковую функцию. Код выглядит примерно так:

webView.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_1)); 
+2

На самом деле, любой класс, который расширяет View, имеет этот метод, а также dispatchTouchEvent (событие MotionEvent) .... Возможно, полезен в будущем – NightWhisper

+0

Это никогда не работало для меня –

3

В инструментовки, есть апи послать код ключа:

getInstrumentation().sendCharacterSync(int keycode); 

Если у вас есть root вы можете проверить здесь код:

https://code.google.com/p/androidscreencast/source/browse/AndroidScreencastClient/src/net/srcz/android/screencast/client/ClientHandler.java ; 

использовать IWindowManager. IWindowManager отличается от системы Android, вы можете найти класс в android.jar, исходный код можно загрузить с официального сайта android.

+0

Спасибо за ответ, но я уже нашел гораздо более легкое решение :) – NightWhisper

Смежные вопросы