私は Android セットトップ ボックスでプログラミングしているので、配信されたリモコンの onKey イベントも実装する必要があります。
私の問題は、新しい PopupMenu を作成していて、特定の keyEvents でそれを却下したいということです。実際、ユーザーが (上/下) 以外のキーを押した場合は、常に閉じる必要があります。現時点では、戻るボタンまたはアイテムが押されたときにのみ消えます。ポップアップメニューの外に触れると、それも消えます。しかし、たとえばキー KeyEvent.KEYCODE_2 を押したときに、メニューを閉じることができるようにする必要があります。
主な問題は、onKeyDown/Up などのイベントをまったくキャッチできないことです!! Popupmenu が表示されているときに、Activity で KeyEvent をキャッチしません。
Popupmenu/ContextMenu モードでキー イベントをキャッチする可能性はありますか?
編集: MainActivity の onKeyDown キャッチがどのように見えるかの例を次に示します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.e("Key hit","true");
try {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
Log.e("Test"," catch left");
return true;
case KeyEvent.KEYCODE_0:
Log.e("Test","hit 0");
break;
case KeyEvent.KEYCODE_2:
Log.e("Test","hit 2");
break;
} catch (Exception e) {
Log.d("onKeyDown", "exception");
e.printStackTrace();
}
return false;
}