aboutsummaryrefslogtreecommitdiff
path: root/source/Irrlicht/Android/CKeyEventWrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Irrlicht/Android/CKeyEventWrapper.cpp')
-rw-r--r--source/Irrlicht/Android/CKeyEventWrapper.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/source/Irrlicht/Android/CKeyEventWrapper.cpp b/source/Irrlicht/Android/CKeyEventWrapper.cpp
new file mode 100644
index 0000000..4ca05b5
--- /dev/null
+++ b/source/Irrlicht/Android/CKeyEventWrapper.cpp
@@ -0,0 +1,63 @@
+// This file is part of the "Irrlicht Engine".
+// For conditions of distribution and use, see copyright notice in irrlicht.h
+
+#include "CKeyEventWrapper.h"
+
+#ifdef _IRR_COMPILE_WITH_ANDROID_DEVICE_
+
+#include "os.h"
+
+namespace irr
+{
+namespace jni
+{
+
+jclass CKeyEventWrapper::Class_KeyEvent = 0;
+jmethodID CKeyEventWrapper::Method_constructor = 0;
+jmethodID CKeyEventWrapper::Method_getUnicodeChar = 0;
+
+CKeyEventWrapper::CKeyEventWrapper(JNIEnv* jniEnv, int action, int code)
+ : JniEnv(jniEnv), JniKeyEvent(0)
+{
+ if ( JniEnv )
+ {
+ if (!Class_KeyEvent )
+ {
+ // Find java classes & functions on first call
+ os::Printer::log("CKeyEventWrapper first initialize", ELL_DEBUG);
+ jclass localClass = JniEnv->FindClass("android/view/KeyEvent");
+ if (localClass)
+ {
+ Class_KeyEvent = reinterpret_cast<jclass>(JniEnv->NewGlobalRef(localClass));
+ }
+
+ Method_constructor = JniEnv->GetMethodID(Class_KeyEvent, "<init>", "(II)V");
+ Method_getUnicodeChar = JniEnv->GetMethodID(Class_KeyEvent, "getUnicodeChar", "(I)I");
+ }
+
+ if ( Class_KeyEvent && Method_constructor )
+ {
+ JniKeyEvent = JniEnv->NewObject(Class_KeyEvent, Method_constructor, action, code);
+ }
+ else
+ {
+ os::Printer::log("CKeyEventWrapper didn't find JNI classes/methods", ELL_WARNING);
+ }
+ }
+}
+
+CKeyEventWrapper::~CKeyEventWrapper()
+{
+ JniEnv->DeleteLocalRef(JniKeyEvent);
+}
+
+int CKeyEventWrapper::getUnicodeChar(int metaState)
+{
+ return JniEnv->CallIntMethod(JniKeyEvent, Method_getUnicodeChar, metaState);
+}
+
+} // namespace jni
+} // namespace irr
+
+
+#endif // _IRR_COMPILE_WITH_ANDROID_DEVICE_