Android onKey onKeyDown不工作

Android onKey onKeyDown不工作,android,Android,我正在尝试在我的android应用程序中注册定向键盘/电视远程d键盘点击。我目前正在使用android emulator进行测试,我正在尝试单击“额外设置”菜单下的“定向键盘输入”。但我不知道为什么这不起作用-任何帮助都将不胜感激 public class FullscreenActivity extends AppCompatActivity { private View mContentView; @Override protected void onCre

我正在尝试在我的android应用程序中注册定向键盘/电视远程d键盘点击。我目前正在使用android emulator进行测试,我正在尝试单击“额外设置”菜单下的“定向键盘输入”。但我不知道为什么这不起作用-任何帮助都将不胜感激

public class FullscreenActivity extends AppCompatActivity {

    private View mContentView;
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_fullscreen);

            mContentView = findViewById(R.id.fullscreen_content);

            mContentView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    Log.d("debug", "we are here");
                    if (event.getAction() == KeyEvent.ACTION_DOWN)
                        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                            Log.d("keycode", "center pressed");
                            return true;
                        }
                    switch (keyCode) {
                        case KeyEvent.KEYCODE_DPAD_UP:
                        case KeyEvent.KEYCODE_DPAD_DOWN:
                        case KeyEvent.KEYCODE_DPAD_RIGHT:
                        case KeyEvent.KEYCODE_DPAD_LEFT:
                        case KeyEvent.KEYCODE_DPAD_CENTER:
                            Log.d("OnKey", "key pressed!");
                            return true;
                    }
                    return false;
                }
            });
        }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            return super.onKeyDown(keyCode, event);
        }
}

在logcat上运行此代码不会给我任何输出

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode==KeyEvent.KeyEvent.KEYCODE_DPAD_CENTER)
    {
        Toast.makeText(<Activity_name>.this, "Application Quits", Toast.LENGTH_SHORT).show();
          finish();
          return false;
    }

    return super.onKeyDown(keyCode, event);
}
@覆盖
公共布尔onKeyDown(int-keyCode,KeyEvent事件){
if(keyCode==KeyEvent.KeyEvent.keyCode\u DPAD\u CENTER)
{
Toast.makeText(.this,“Application Quits”,Toast.LENGTH_SHORT.show();
完成();
返回false;
}
返回super.onKeyDown(keyCode,event);
}
您可以覆盖活动的onKeyDown()方法来检测按键

试试这个

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (event.getAction() == KeyEvent.ACTION_DOWN) {

        switch (event.getKeyCode()) {
            case  KeyEvent.KEYCODE_DPAD_UP:
                 showToast("UP pressed");
            return true;
            case  KeyEvent.KEYCODE_DPAD_DOWN:
                 showToast("DOWN pressed");
            return true;
            case  KeyEvent.KEYCODE_DPAD_RIGHT:
                 showToast("RIGHT pressed");
            return true;
            case  KeyEvent.KEYCODE_DPAD_LEFT:
                 showToast("LEFT pressed");
            return true;
            case  KeyEvent.KEYCODE_DPAD_CENTER:
                 showToast("CENTER pressed");
            return true;
           }
         }
        return super.onKeyDown(keyCode, event);
  }

  void showToast(String msg)
  {
    Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show();
  } 

你的听众正在听吗called@siddhesh我对android和java真的很陌生,所以我不确定你的意思——我上面的代码是我正在使用的唯一代码。我没有打印出任何内容,包括logcat中onKey方法中的第一行“we is here”(我们在这里)你是否打印了文本debug、“we is here”(我们在这里)或Log.d(“keycode”,“center pressed”);@siddhesh没有任何内容这是什么McContentView当我按下中心按钮时,我收到消息“应用程序退出”“-你能帮我理解我所做的和这件事之间的区别吗?onKeyDown与setOnKeyListener和OnKey有什么关系?我所有的按钮按下代码都应该放在这个方法中,还是放在OnCreate()中的OnKey方法中?通常,为了跟踪按键按下事件,我们使用onKeyDown函数,所以我不需要向我的mcontentview注册onkeylister吗?你能解释一下为什么会这样吗?如果你想在视图之间提供导航,如果你想在整个活动中访问按键事件,你可以使用onKeyDown()方法。View.OnKeyListener可用于仅调度到该视图的密钥事件。