我正在尝试编写一个简单的休息服务以用于Shield TV。它将侦听TCP端口上的HTTP请求,然后将关键事件发送到活动的活动。
其余服务侧已准备就绪。我可以调用端点并在Shield TV上启动应用程序。 但是,由于我没有活动,因此无法发送关键事件。 (当我在屏幕上进行活动时,它会起作用)
因此,我决定将我的应用注册为输入法。我可以在Android系统输入设置中将我的应用显示为虚拟键盘。
这是我遵循的教程: https://developer.android.com/guide/topics/text/creating-input-method.html
但是我不知道如何使用Input Method服务发送键事件。我尝试在InputMethod Service的onCreate方法中使用以下代码。 但是,似乎未调用onCreate。因为websocket没有激活。 (当我在自己的服务上使用此代码,并且如果我从MainActivity启动该服务,则websocket处于活动状态)
公共类SoftKeyboard扩展了InputMethodService {
private InputMethodManager mInputMethodManager;
@Override public void onCreate() {
super.onCreate();
mInputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
AsyncHttpServer server = new AsyncHttpServer();
List<WebSocket> _sockets = new ArrayList<WebSocket>();
server.get("/test", new HttpServerRequestCallback() {
@Override
public void onRequest(AsyncHttpServerRequest request, AsyncHttpServerResponse response) {
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
}
});
server.listen(5050);
}
}
也许我应该从其他服务(通过main活动启动)中调用Input Method服务中的一个函数 但是我也不知道该怎么做。
我将不胜感激。
谢谢。