2013-02-27 3 views
0

При взломе с NDK и NativeActivity мне не удалось получить полезную информацию для сенсорного ввода - я просто получаю обфускацию информации для флагов.Обфуффицированная информация с использованием Android NDK Input

Это фрагмент соответствующего кода (в редакции от plasma.c из образца):

static int32_t engine_handle_input(struct android_app* app, AInputEvent* event) { 
    struct engine* engine = (struct engine*)app->userData; 
    LOGI("Event: action=%d\nkeyCode=%d\nmetaState=0x%x\nAction=0x%x\nx=%d\ny=%d" 
     "\nflags=0x%x\nxprec=%d\nyprec=%d\nxoff=%d\nyoff=%d\nguessX=%d\n\n", 
       AKeyEvent_getAction(event), 
       AKeyEvent_getKeyCode(event), 
       AKeyEvent_getMetaState(event), 
       AMotionEvent_getAction(event), 
       AMotionEvent_getX(event,0), 
       AMotionEvent_getY(event,0), 
       AMotionEvent_getFlags(event), 
       AMotionEvent_getXPrecision(event), 
       AMotionEvent_getYPrecision(event), 
       AMotionEvent_getXOffset(event), 
       AMotionEvent_getYOffset(event)) 

    return 0; 
} 

Это своего рода выход журнала я получаю во время прикосновения к экрану:

I/libplasma(24786): Event: action=1 
I/libplasma(24786): keyCode=0 
I/libplasma(24786): metaState=0x0 
I/libplasma(24786): Action=0x1 
I/libplasma(24786): x=1074838969 
I/libplasma(24786): y=1073741824 
I/libplasma(24786): flags=0x408cf365 
I/libplasma(24786): xprec=-2147483648 
I/libplasma(24786): yprec=1081822550 
I/libplasma(24786): xoff=0 
I/libplasma(24786): yoff=1074839057 
I/libplasma(24786): 

Я не уверен, как я должен извлечь полезную информацию из этого мусора, и я не могу найти ни одного учебника по входу NDK NativeActivity. Любые гуру NDK здесь?

ответ

2

Глупый меня. Все они возвращаются floats.

AMotionEvent_getX(event,0) 
AMotionEvent_getY(event,0) 
AMotionEvent_getFlags(event) 
AMotionEvent_getXPrecision(event) 
AMotionEvent_getYPrecision(event) 
AMotionEvent_getXOffset(event) 
AMotionEvent_getYOffset(event) 

Если я использую их как поплавки с %f, это мой выход:

I/libplasma(29039): Event: action=1 
I/libplasma(29039): keyCode=0 
I/libplasma(29039): metaState=0x0 
I/libplasma(29039): Action=0x1 
I/libplasma(29039): x=1513.833618 
I/libplasma(29039): y=697.899841 
I/libplasma(29039): flags=0x0 
I/libplasma(29039): xprec=1.533854 
I/libplasma(29039): yprec=1.547500 
I/libplasma(29039): xoff=0.000000 
I/libplasma(29039): yoff=0.000000 

Если кто-то в будущем бежит в этот вопрос, пожалуйста, убедитесь, чтобы открыть исходный файл android/input.h информации для каждой функции. По умолчанию он будет расположен по адресу <NDK-Install-Path>/platforms/<ndk-platform>/arch-arm/usr/include/android/input.h.

Смежные вопросы