我已经尝试过NDK简单示例,例如将本机代码中的数据显示到android的java代码中,如下所示:
#include <jni.h>
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_example_JNIActivity_stringFromJNI( JNIEnv* env,
jobject thiz )
{
return env->NewStringUTF("I'm C++! What the hell am I doing here in android?!");
}
}
但是,我想要一个应用程序,其中用户必须从文本字段输入数据并将此数据从其java代码传递到将进行计算的本机代码。我该怎么做?
答案 0 :(得分:0)
在Java native方法中,包含一个接受textfield值的正式String参数。
在C / C ++中,使用JNI方法访问jstring中的字符,如下所示:
jsize GetStringLength(JNIEnv *env, jstring string);
const jchar * GetStringChars(JNIEnv *env, jstring string, jboolean *isCopy);
const char * GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy);
完成角色后,请务必释放它们。
void ReleaseStringChars(JNIEnv *env, jstring string, const jchar *chars);
void ReleaseStringUTFChars(JNIEnv *env, jstring string, const char *utf);
请参阅documentation for these methods中的Java Native Interface Specification。