写出android中使用JNI的例子代码
时间: 2023-03-13 22:19:51 浏览: 62
下面是一个基本的JNI例子:public class JNITest {
static {
System.loadLibrary("JNITest");
}
public native String sayHello(); public static void main(String[] args) {
JNITest jniTest = new JNITest();
System.out.println(jniTest.sayHello());
}
}
相关问题
android jni中读写文件的代码
读取文件:
```java
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_readFile(JNIEnv *env, jobject instance,
jstring fileName_) {
const char *fileName = (*env)->GetStringUTFChars(env, fileName_, 0);
FILE *file = fopen(fileName, "r");
if (file == NULL) {
return (*env)->NewStringUTF(env, "");
}
char buffer[1024];
size_t len;
char *result = (char *) malloc(1);
result[0] = '\0';
while ((len = fread(buffer, 1, sizeof(buffer), file)) > 0) {
result = (char *) realloc(result, strlen(result) + len + 1);
strncat(result, buffer, len);
}
fclose(file);
(*env)->ReleaseStringUTFChars(env, fileName_, fileName);
return (*env)->NewStringUTF(env, result);
}
```
写入文件:
```java
JNIEXPORT jboolean JNICALL
Java_com_example_myapplication_MainActivity_writeFile(JNIEnv *env, jobject instance,
jstring fileName_, jstring content_) {
const char *fileName = (*env)->GetStringUTFChars(env, fileName_, 0);
const char *content = (*env)->GetStringUTFChars(env, content_, 0);
FILE *file = fopen(fileName, "w");
if (file == NULL) {
return JNI_FALSE;
}
fwrite(content, strlen(content), 1, file);
fclose(file);
(*env)->ReleaseStringUTFChars(env, fileName_, fileName);
(*env)->ReleaseStringUTFChars(env, content_, content);
return JNI_TRUE;
}
```
给出Android 的 jni 示例代码
以下是一个简单的 Android JNI 示例代码:
Java 代码:
public class MainActivity extends AppCompatActivity {
// 载入名为 "native-lib" 的本地库
static {
System.loadLibrary("native-lib");
}
// 被本地方法调用的示例方法
public native String stringFromJNI();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 调用本地方法并将返回结果显示在 TextView 上
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
}
C++ 代码:
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_android_testapplication_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
以上代码简单地在 Android Activity 上连接了一个名为 "native-lib" 的本地库,并在 Activity 的 onCreate 方法中调用本地方法 stringFromJNI,该方法返回一个字符串,并将结果显示在 TextView 上。具体的本地方法实现可以在 C++ 文件中进行。