2014-12-09 2 views
0

Я хочу разработать приложение Android Service, которое отправляет KeyEvents в приложение переднего плана.Android - Как приложение Service App отправляет KeyEvents в другое приложение Foreground

Так или иначе, это было бы, как это

enter image description here

Я не могу показаться, чтобы найти способ, как, я знаком только с деятельностью рассылает KeyEvents к себе, как это:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     if (event.getKeyCode() == KEYCODE_1) { 
      // Do something 
     } else if (event.getKeyCode() == KEYCODE_2) { 
      // Do something 
     } 
    } else if (event.getAction() == KeyEvent.ACTION_UP) { 
     if (event.getKeyCode() == KEYCODE_1) { 
      // Do something 
      return false; 
     } else if (event.getKeyCode() == KEYCODE_2) { 
      // Do something 
      return true; 
     } 
    } 
    return super.dispatchKeyEvent(event); 
} 

, но не с другим приложением.

Исправьте меня, если я ошибаюсь, в соответствии с тем, что я исследовал до сих пор, в нем говорится, что мне нужно установить приложение как системное приложение и отправить мои ключевые события непосредственно в систему Android, а система Android будет тот, кто отправит его в приложение FOREGROUND. Где это будет выглядеть примерно так:

enter image description here

Если это так, то кто-то может помочь мне, как это сделать? Или если в противном случае, пожалуйста, дайте мне хорошее обходное решение для достижения моей цели. Благодаря!

PS: Он будет установлен на корневое устройство

+0

Вы нашли способ решить эту проблему? Я думаю, у меня есть рабочее решение для этого. –

+0

Нет, пожалуйста, помогите мне – steven0529

+0

Привет, вы слушали keyevent в сервисе? У меня такая же проблема здесь, мне нужно прослушать keyevent из приложения-службы, можете ли вы поделиться кодом, если вы это сделали? –

ответ

0

Вы можете определенно сделать это только и без установки приложения в качестве приложения системы корня.

Способ, которым это может быть достигнуто, заключается в использовании uiautomator framework. Это такая мощная структура, доступная для андроида с целью применения приложений для тестирования черного ящика.

Очевидно, что вы собираетесь использовать этот фреймворк для немного другой цели, кроме тестирования черного ящика, но это нормально.

UIDevice имеет метод pressKeyCode(int keyCode), который может быть использован, как это послать свой вклад в то, что приложение happends быть в forground:

UiDevice dev = UiDevice.getInstance(); 
dev.pressKeyCode(KeyEvent.KEYCODE_1); 

установки использовать uiautomator может быть немного сложным, посмотреть другие answer где я более подробно описываю, что вам нужно сделать.