3

我有一个从 onKeyDown 事件返回的日志,并且标志导致数字 520。我如何找出标志是什么?我假设它的 520 = 512 + 8 = FLAG_TRACKING + FLAG_FROM_SYSTEM

我需要确定,我听说它与十六进制代码有关。我如何转换并找出答案?

从日志:

onKeyUp - 键码:118 | 信息:KeyEvent{action=ACTION_UP 代码=118 重复=0 元=0 扫描代码=766 mFlags=520}

我需要知道 mFlags 的名称是什么。

谢谢你。

4

3 回答 3

1

这是完整的代码:

Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | isCanceled: " + event.isCanceled() + " | info: "  + event.toString());

        if ((event.getFlags() & KeyEvent.FLAG_FROM_SYSTEM) == KeyEvent.FLAG_FROM_SYSTEM)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_FROM_SYSTEM");

        }else {}

        if ((event.getFlags() & KeyEvent.FLAG_TRACKING) == KeyEvent.FLAG_TRACKING)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_TRACKING");
        }else {}



        ///FLAG_WOKE_HERE
        if ((event.getFlags() & KeyEvent.FLAG_WOKE_HERE) == KeyEvent.FLAG_WOKE_HERE)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_WOKE_HERE");
        }else {}


        //FLAG_SOFT_KEYBOARD
        if ((event.getFlags() & KeyEvent.FLAG_SOFT_KEYBOARD) == KeyEvent.FLAG_SOFT_KEYBOARD)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_SOFT_KEYBOARD");
        }else {}

        //FLAG_KEEP_TOUCH_MODE
        if ((event.getFlags() & KeyEvent.FLAG_KEEP_TOUCH_MODE) == KeyEvent.FLAG_KEEP_TOUCH_MODE)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_KEEP_TOUCH_MODE");
        }else {}


        //FLAG_EDITOR_ACTION
        if ((event.getFlags() & KeyEvent.FLAG_EDITOR_ACTION) == KeyEvent.FLAG_EDITOR_ACTION)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_EDITOR_ACTION");
        }else {}


        //FLAG_CANCELED
        if ((event.getFlags() & KeyEvent.FLAG_CANCELED) == KeyEvent.FLAG_CANCELED)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_CANCELED");
        }else {}


        //FLAG_VIRTUAL_HARD_KEY
        if ((event.getFlags() & KeyEvent.FLAG_VIRTUAL_HARD_KEY) == KeyEvent.FLAG_VIRTUAL_HARD_KEY)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_VIRTUAL_HARD_KEY");
        }else {}

        //FLAG_LONG_PRESS
        if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) == KeyEvent.FLAG_LONG_PRESS)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_LONG_PRESS");
        }else {}

        //FLAG_CANCELED_LONG_PRESS
        if ((event.getFlags() & KeyEvent.FLAG_CANCELED_LONG_PRESS) == KeyEvent.FLAG_CANCELED_LONG_PRESS)
        {

            Log.i("==BCR==", "onKeyDown - keycode: " + keyCode + " | FLAG: FLAG_CANCELED_LONG_PRESS");
        }else {}
于 2011-08-25T19:00:20.583 回答
0

你可以这样做来检查

if (mFlags & FLAG_TRACKING == FLAG_TRACKING)
     // it contains FLAG_TRACKING
if (mFlags & FLAG_FROM_SYSTEM == FLAG_FROM_SYSTEM)
     // its contains FLAG_FROM_SYSTEM flag.
if ... etc...
于 2011-08-18T18:15:38.790 回答
0

当按键按下事件发生时,为什么不简单地打印常量值。

http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_NUMPAD_DOT

于 2011-08-18T18:15:42.737 回答