2012-07-25 89 views
2

有誰知道如何從Android NDK抓住操縱桿的事件?的Android NDK操縱桿事件

NDK的不包含任何的API,讓我從中提取的AMotionEvent軸信息。 (AXIS_X和AXIS_Y映射到指針(X,Y)對,但我需要更多的。)還有的Java API來做到這一點...但是,當我使用NDK,事件不會傳遞到Java所以我根本就不會收到它們。

而且我還沒有發現任何方式把一個NDK AMotionEvent到Java MotionEvent,這樣我可以通過JNI通過它傳遞給Java和提取信息的方式。

我絕對必須讓搖桿信息,我的應用程序,但到目前爲止,我發現沒有辦法這樣做,無論多麼邪惡。有任何想法嗎?

回答

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"); 

欲瞭解更多信息,請諮詢NVIDIA的在Tegra Android Development Pack

+0

感謝您的Android樣品!是的,這工作正常。 (我其實早在其他地方發現它,但忘了更新我的問題,感謝提示。) – 2013-01-04 00:10:59