Android NDK:将数据从Java传递到C ++ / C.

时间:2014-09-26 20:17:38

标签: android android-ndk java-native-interface native

我已经尝试过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代码传递到将进行计算的本机代码。我该怎么做?

1 个答案:

答案 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