NDK积累
来源:互联网 发布:人工智能学院首页 编辑:程序博客网 时间:2024/06/07 11:21
jni返回hashmap给 java
1.public
class
JniClient {
public
static
native
HashMap<String, String> setMap();
}
2.JNIEXPORT jobject JNICALL Java_com_ndk_test_JniClient_setMap(JNIEnv *env,
jclass cls) {
jclass class_hashmap = (*env)->FindClass(env,
"java/util/HashMap"
);
jmethodID hashmap_init = (*env)->GetMethodID(env, class_hashmap,
"<init>"
,
"()V"
);
jobject HashMap = (*env)->NewObject(env, class_hashmap, hashmap_init,
""
);
jmethodID HashMap_put = (*env)->GetMethodID(env, class_hashmap,
"put"
,
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
);
(*env)->CallObjectMethod(env, HashMap, HashMap_put, (*env)->NewStringUTF(env,
"key1"
), (*env)->NewStringUTF(env,
"value1"
));
(*env)->CallObjectMethod(env, HashMap, HashMap_put,(*env)->NewStringUTF(env,
"key2"
), (*env)->NewStringUTF(env,
"value2"
));
return
HashMap;
}
3.
Object object=JniClient.setMap();
HashMap<String, String>map=(HashMap<String, String>)object;
System.out.println(
"size:"
+map.size()+
";value:"
+map.get(
"key1"
));
-----------------------------------------------------------------------------------------------------------------------
/*
* Class: com_feixun_jni_HelloJni
* Method: native_getListStudents
* Signature: ()Ljava/util/ArrayList;
*/ //获得集合类型的数组
JNIEXPORT jobject JNICALL Java_com_feixun_jni_HelloJni_native_getListStudents
(JNIEnv * env, jobject obj)
{
jclass list_cls = env->FindClass("Ljava/util/ArrayList;");//获得ArrayList类引用
if(listcls == NULL)
{
cout << "listcls is null \n" ;
}
jmethodID list_costruct = env->GetMethodID(list_cls , "<init>","()V"); //获得得构造函数Id
jobject list_obj = env->NewObject(list_cls , list_costruct); //创建一个Arraylist集合对象
//或得Arraylist类中的 add()方法ID,其方法原型为: boolean add(Object object) ;
jmethodID list_add = env->GetMethodID(list_cls,"add","(Ljava/lang/Object;)Z");
jclass stu_cls = env->FindClass("Lcom/feixun/jni/Student;");//获得Student类引用
//获得该类型的构造函数 函数名为 <init> 返回类型必须为 void 即 V
jmethodID stu_costruct = env->GetMethodID(stu_cls , "<init>", "(ILjava/lang/String;)V");
for(int i = 0 ; i < 3 ; i++)
{
jstring str = env->NewStringUTF("Native");
//通过调用该对象的构造函数来new 一个 Student实例
jobject stu_obj = env->NewObject(stucls , stu_costruct , 10,str); //构造一个对象
env->CallBooleanMethod(list_obj , list_add , stu_obj); //执行Arraylist类实例的add方法,添加一个stu对象
}
return list_obj ;
}
- NDK积累
- 工作积累之NDK编译STL
- 工作积累之NDK编译STL
- 工作积累之NDK编译STL
- 工作积累之NDK编译多个cpp
- Android 积累一些JNI与NDK的知识
- NDK 积累 1(如何移植C++程序)
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- 积累
- android raw与assets区别
- 懒汉、饿汉单例模式具体代码
- 欢迎使用CSDN-markdown编辑器
- [leetcode] 146.LRU Cache
- CentOS安装JAVA JDK
- NDK积累
- Android开发之如何监听让服务不被杀死(service+broadcast)
- 一个小小的计算器
- Data too long for column 'corp_id' at row 1
- 常用iOS第三方库以及XCode插件介绍
- adb命令--之查看进程及Kill进程
- javascript中对变量类型的判断
- JAVA使用原生加密算法注意事项
- 生成模型与判别模型