1
0
cuberite-2a/jni/ToJava.h
faketruth c40af4c4ab Android: Pressing back button sends stop command to server
Android: ToJava can call functions on Java by using JNI
Android: Plugins work
Android: Added android specific files to VS2008 project, but they are excluded from compiling

git-svn-id: http://mc-server.googlecode.com/svn/trunk@747 0a769ca7-a7f5-676a-18bf-c427514a06d6
2012-08-17 22:20:35 +00:00

47 lines
1.9 KiB
C++

#pragma once
#include <jni.h>
#include <android/log.h>
extern JNIEnv* g_CurrentJNIEnv;
extern jobject g_JavaThread;
//extern jobject g_JavaActivity;
//__android_log_vprint(ANDROID_LOG_ERROR,"MCServer", a_Format, argList);
static void CallJavaFunction_Void_String( jobject a_Object, const std::string & a_FunctionName, const std::string & a_StringParam )
{
//__android_log_print(ANDROID_LOG_ERROR,"MCServer", "JNIEnv: %i Object: %i", g_CurrentJNIEnv, a_Object );
jclass cls = g_CurrentJNIEnv->GetObjectClass( a_Object );
//__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jclass: %i", cls );
jmethodID mid = g_CurrentJNIEnv->GetMethodID( cls, a_FunctionName.c_str(), "(Ljava/lang/String;)V"); // void a_FunctionName( String )
//__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jmethodID: %i", mid );
if (mid != 0)
{
//__android_log_print(ANDROID_LOG_ERROR,"MCServer", "Going to call right NOW! %s", a_FunctionName.c_str() );
g_CurrentJNIEnv->CallVoidMethod( a_Object, mid, g_CurrentJNIEnv->NewStringUTF( a_StringParam.c_str() ) );
}
else
{
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "It was 0, derp" );
}
}
static void CallJavaFunction_Void_Void( jobject a_Object, const std::string & a_FunctionName )
{
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "JNIEnv: %i Object: %i", g_CurrentJNIEnv, a_Object );
jclass cls = g_CurrentJNIEnv->GetObjectClass( a_Object );
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jclass: %i", cls );
jmethodID mid = g_CurrentJNIEnv->GetMethodID( cls, a_FunctionName.c_str(), "()V"); // void a_FunctionName( String )
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jmethodID: %i", mid );
if (mid != 0)
{
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "Going to call right NOW! %s", a_FunctionName.c_str() );
g_CurrentJNIEnv->CallVoidMethod( a_Object, mid );
}
else
{
__android_log_print(ANDROID_LOG_ERROR,"MCServer", "It was 0, derp" );
}
}