首先定义了一个类class device{String strDeviceName;int i;} 然后定义一个本地函数 public native int ListDev(device[] devList)然后在本地用c实现:JNIEXPORT jint JNICALL Java_com_NDKTSPtest_JniTspTest_Listdev(JNIEnv *e, jobject j, jobjectArray devList){jint dwRet;jobject dev1 = (*e)->GetObjectArrayElement(e, devList, 0);;
jclass dev = (*e)->GetObjectClass(e, dev1);
jfieldID strDeviceName = (*e)->GetFieldID(e, dev, "strDeviceName", "Ljava/lang/String;");
jfieldID iType = (*e)->GetFieldID(e, dev, "iType", "I");
jstring jstr = (*e)->NewStringUTF(e,DeviceName);
(*e)->SetObjectField(e, dev1, strDeviceName, jstr);
(*e)->SetIntField(e, dev1, iType, UK_SDKEYID);
dwRet =RT_OK;
(*e)->ReleaseStringUTFChars(e, jstr, DeviceName);return dwRet;}总是有问题 这个取得类数组里面的引用类型对吗?总感觉有点问题 但又不知道问题处在哪儿?
jclass dev = (*e)->GetObjectClass(e, dev1);
jfieldID strDeviceName = (*e)->GetFieldID(e, dev, "strDeviceName", "Ljava/lang/String;");
jfieldID iType = (*e)->GetFieldID(e, dev, "iType", "I");
jstring jstr = (*e)->NewStringUTF(e,DeviceName);
(*e)->SetObjectField(e, dev1, strDeviceName, jstr);
(*e)->SetIntField(e, dev1, iType, UK_SDKEYID);
dwRet =RT_OK;
(*e)->ReleaseStringUTFChars(e, jstr, DeviceName);return dwRet;}总是有问题 这个取得类数组里面的引用类型对吗?总感觉有点问题 但又不知道问题处在哪儿?
解决方案 »
- Android NDK 编译ffmpeg的问题
- 图片动画变形
- 钟表的指针用图片代替后如何实现指针的旋转
- Android MediaPlayer 播放类
- 请问如何将自己写的驱动加到android的代码去,然后编译啊???
- 不通过点击按键如何弹出系统菜单?
- 推荐两个android开源程序
- 错误:Found both android-support-v4 and android-support-v13 in the dependency list.
- android开发者请进,关于android架构师的问题
- 请问Android如何从云端服务器获取数据
- 求在Android里退出整个程序的方法(程序里包含多个Activity)
- 关于android中自定义view的问题。
jclass dev = (*e)->GetObjectClass(e, dev1);
jfieldID strDeviceName = (*e)->GetFieldID(e, dev, "strDeviceName", "Ljava/lang/String;");
jfieldID iType = (*e)->GetFieldID(e, dev, "iType", "I");
jstring jstr = (*e)->NewStringUTF(e,DeviceName);
(*e)->SetObjectField(e, dev1, strDeviceName, jstr);
(*e)->SetIntField(e, dev1, iType, UK_SDKEYID);
dwRet =RT_OK;
(*e)->ReleaseStringUTFChars(e, jstr, DeviceName);这个顺序没错,先拿到数组对象的,然后从数组对象中获取基本类型的,问题是你的
jclass dev = (*e)->GetObjectClass(e, dev1); 这个是有问题的。
这里有资料,可以参考一下。
http://www.blogjava.net/china-qd/archive/2006/04/29/44002.html