android - onKey onKeyDown 不工作

标签 android

我正在尝试在我的 Android 应用程序中注册方向键/电视遥控方向键点击。我目前正在使用 android 模拟器进行测试,我正在尝试在额外设置菜单下点击方向键输入。但我不确定为什么这不起作用 - 任何帮助将不胜感激

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 上没有任何输出

最佳答案

您可以覆盖 Activity 的 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();
  } 

关于android - onKey onKeyDown 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517637/

相关文章:

android - 输入文本布局中的错误还是我的错误?

android - 在 Android 中禁用 EditText

android - 如何使用 RGB 匹配两个几乎相同的匹配颜色

java - 当各种设备同时使用该功能时,HttpClient 出现问题

Android Studio - 未安装 Flutter 插件;这增加了 Flutter 特定的功能

java - 可读有序 AsyncTask 代码的最佳方法

android - 处理程序 vs AsyncTask vs 线程

android - 单击按钮时启动服务时出现问题

android - 给定 XmlPullParser 作为输入,如何创建 LayoutInflater?

android - 我做错了什么 - MapView 上的灰色方 block