Android - переменная onKeyDown mFlags

У меня есть журнал, который вернулся из события onKeyDown, и флаг привел к числу 520. Как мне узнать, что это за флаг? Я предполагаю, что это 520 = 512 + 8 = FLAG_TRACKING + FLAG_FROM_SYSTEM

Мне нужно знать наверняка, и я слышал, что это как-то связано с шестнадцатеричным кодом. Как конвертировать и узнать?

ИЗ ЖУРНАЛА:

onKeyUp - код клавиши: 118 | информация: KeyEvent{action=ACTION_UP code=118 repeat=0 meta=0 scancode=766 mFlags=520}

Мне нужно знать имена mFlags.

Спасибо.


person dropsOfJupiter    schedule 18.08.2011    source источник
comment
изменил мой ответ. только если..не иначе..   -  person Ronnie    schedule 18.08.2011


Ответы (3)


Вы можете сделать это, чтобы проверить

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...
person Ronnie    schedule 18.08.2011
comment
это может быть комбинация мысли флагов. В частности, 520 — это комбинация двух. поэтому он провалится через все эти методы для 520 и ничего не сообщит. - person dropsOfJupiter; 18.08.2011
comment
Элемент управления войдет в блок if, только если содержит этот конкретный флаг. Таким образом, в каждом if u можно добавлять флаги к строке и регистрировать все дискретные значения флагов. И я думаю, что это ответ на ваш вопрос. :) - person Ronnie; 20.08.2011

Вот полный код:

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 {}
person dropsOfJupiter    schedule 25.08.2011

Почему бы вам просто не распечатать постоянные значения, когда происходит событие нажатия клавиши.

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

person dcanh121    schedule 18.08.2011
comment
Поскольку флагов всего несколько, остальное — их комбинация. KEY_ не является флагом. Это код клавиши. - person dropsOfJupiter; 18.08.2011