2013-02-27 69 views
0

使用NDK和NativeActivity進行黑客攻擊時,我一直無法獲得觸摸輸入的有用信息 - 我只是得到混淆的標誌信息。使用Android NDK輸入模糊信息輸入

這是相關的代碼片段(從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