2013-02-19 3 views
0

Я хочу запустить событие ключа (назад p.e), но без нажатия клавиши. Я видел такие функции, как onKeyDown или onKey, но для этих функций мне нужно соответствующее событие ключа.Запустить событие клавиши без нажатия любой клавиши

Также я пытаюсь инициализировать KeyEvent как здесь:

KeyEvent telo = new KeyEvent(0,0,0,4,0,0,0,158,72); 
onKeyDown(KeyEvent.KEYCODE_BACK, telo); 

, но он не работает, может быть, потому что я не знаю значения downTime, eventTime и deviceId.

+0

Почему вы это делаете? Если вам нужно поведение ключа, просто сделайте все, что должен был сделать ключ. Если вы пытаетесь повлиять на другие приложения с этими поддельными событиями, это невозможно для приложения, за исключением, возможно, на корневых устройствах. – CommonsWare

+0

Была ошибка, которая позволила вам заманить пользователя на это некоторое время назад, но с тех пор он был исправлен. Если вы узнаете, как управлять сторонними приложениями, напишите отчет об ошибке, так как этот тип действий будет считаться дефектом безопасности. – Colton

+0

Окончательность этого приложения заключается в том, что пользователь может (с помощью opencv-библиотеки и лобовой камеры) просматривать меню из них. Итак, если камера обнаруживает один ход для установки, я запустил событие правой клавиши. Вы понимаете? – user2087826

ответ

1

Если вы хотите сделать это для тестирования. API Instrumentation позволяет отправлять ключевые события в свои собственные действия.

именно:

Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); 

кажется, что вы ищете.

Edit:

Этот фрагмент кода отправляет обратно ключевое событие в активном окне. Обратите внимание, что метод sendKeyDownUpSync() не может быть вызван из основного потока.

final Instrumentation i = new Instrumentation(); 
Thread t = new Thread(){ 
    public void run(){ 
     i.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); 
    } 
}; 
t.start(); 
+0

спасибо, но производит эту ошибку: Невозможно сделать статическую ссылку на нестатический метод sendKeyDownUpSync (int) из типа Instrumentation – user2087826

+0

Это не статический метод ... вам нужно получить экземпляр объекта Instrumentation. – FoamyGuy

+0

Извините, но я не понимаю, если бы вы могли привести мне пример, пожалуйста ... – user2087826

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