【问题标题】:Catch keypress with android用android捕捉按键
【发布时间】:2011-01-16 17:49:29
【问题描述】:

如何使用 android SDK 捕捉手机按键?我找了好几个小时都没有找到任何东西..

例如:

在某些情况下,我想在用户按下电话上的“挂断”按钮时捕捉到消息,然后在消息到达操作系统之前将其丢弃。

这可能吗?

【问题讨论】:

    标签: android key message keypress


    【解决方案1】:

    您可以从视图中处理关键事件,也可以为整个应用程序处理一般性事件:

    从视图中处理 onKey:

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_ENTER:
             /* This is a sample for handling the Enter button */
          return true;
        }
        return false;
    }
    

    记得实现 OnKeyListener 并设置你的监听器YourView.setOnKeyListener(this);

    第二种可能是:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {
         case KeyEvent.KEYCODE_MENU:
            /* Sample for handling the Menu button globally */
            return true;
         }
         return false;
    } 
    

    你也可以看看onKeyUp

    资源:http://developer.android.com/reference/android/view/View.html

    在这里你可以看到一个包含所有KeyEvents的列表

    【讨论】:

    • 请注意,这不适用于所有键。 HOME 绝对不能以这种方式被捕获,而 END_CALL 可能不会——我忘记了那个。此外,如果您想拦截 BACK 按钮,最好在较新的 Android SDK 中实现 onBackPressed(),尽管这在旧手机上不起作用。
    • END_CALL 也无法被应用拦截。另请注意,原始发布者似乎希望在将密钥传递到另一个应用程序之前拦截密钥,这对于任何密钥都是完全不可能的。
    • 也不是说某些手机甚至没有硬件 END_CALL 按钮,比如摩托罗拉 Droid 和 Nexus One,所以用这个按钮做任何特别的事情可能不是一个好主意。跨度>
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2015-03-31
    • 2013-01-09
    • 2011-03-03
    相关资源
    最近更新 更多