【问题标题】:Android NDK joystick eventsAndroid NDK 操纵杆事件
【发布时间】:2012-07-25 17:06:35
【问题描述】:

有人知道如何从 Android NDK 中捕获操纵杆事件吗?

NDK 不包含让我从 AMotionEvent 中提取轴信息的任何 API。 (AXIS_X 和 AXIS_Y 映射到指针 (x,y) 对,但我需要的不止这些。)有 Java API 可以做到这一点……但是当我使用 NDK 时,事件不会传递给 Java -land,所以我根本就没有收到它们。

我还没有找到任何方法将 NDK AMotionEvent 转换为 Java MotionEvent,以便我可以通过 JNI 将其传递给 Java 并以这种方式提取信息。

我绝对必须为我的应用程序获取操纵杆信息,但到目前为止,无论多么邪恶,我都找不到这样做的方法。有什么想法吗?

【问题讨论】:

    标签: event-handling android-ndk joystick


    【解决方案1】:

    Nvidia Tegra 的人员通过使用未记录的函数调用设法做到了这一点。 他们在 libandroid.so 上执行 dlopen 和 dlsym 以查找 AMotionEvent_getAxisValue()

    void* lib = dlopen("libandroid.so",0);
    ...
    s_AMotionEvent_getAxisValue = (float(*)(const AInputEvent*,int32_t axis, size_t pointer_index))
            dlsym(lib,"AMotionEvent_getAxisValue");
    

    更多信息,请参考Tegra Android Development Pack中的nvidias android示例

    【讨论】:

    • 谢谢!是的,这很好用。 (实际上我之前在其他地方发现了它,但忘记更新我的问题。感谢提示。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多