0

NDKとNativeActivityでハッキングしている間、タッチ入力に役立つ情報を取得できませんでした。フラグのあいまいな情報を取得するだけです。

これは、関連するコードのスニペットです(サンプルの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):

このジャンクから有用な情報を抽出する方法がわかりません。また、NDKNativeActivity入力に関するチュートリアルが1つも見つかりません。ここにNDKの達人はいますか?

4

1 に答える 1

3

愚かな私。それらはすべて戻り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

于 2013-02-27T23:36:14.840 に答える