"Leanback Keyboard
"アプリと同様にAndroid TV用にcustom ime
を作成しようとしています。私が今持っている問題は、KeyEvents
(私たちはリモコンを持っており、特にD-pad inputs
を聞く必要がある)を処理する必要があるということです。 service
(InputMethodService)を使用する必要があるため、アクティビティと異なり、setOnKeyListener
を使用することはできません。しかし、InputMethodService
は実際にダイアログを使用して画面上のUIを出力するので、代わりにdialog's setOnKeyListener
を使用することができます。私が試した次Android:InputMethodService.Dialog.setOnKeyListenerはキーイベントを受け取りません
public class MainActivity extends InputMethodService implements DialogInterface.OnKeyListener {
@Override
public View onCreateInputView() {
final LayoutInflater inflater = getLayoutInflater();
layout_root = (RelativeLayout) inflater.inflate(R.layout.activity_main, null);
...
getWindow().takeKeyEvents(true);
getWindow().setOnKeyListener(this);
return layout_root;
}
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
...
}
私も明示的にdialog gets the OnKey events
ことを確認するunfocusable
をするXML内のすべてのビューを作りました:
android:focusable="false"
android:focusableInTouchMode="false"
私はサービスがOnKeyイベントを取得しないことを理解InputMethodServiceはいくつかのUI要素を出力しているので、方法があるはずです。
私の最後の手段は、InputMethodServiceが、KeyEventsをリッスンしてInputMethodServiceにブロードキャストするトランスペアレントなアクティビティを開始することです。私はそれがうまくいくかどうかもわからないので、実際にやりたいとは思っていません。
事前にヘルプを評価してください。