(1)textView.setBackgroundColor(Color.RED);
(2)java中可以用变量定义数组:
int count=0;
int[] scores=new int[count];
(3)jni中返回结构数组:(对应到java中为类)
纠结了一个下午的pitch值被覆盖的问题是因为obj不能为同一个(需要更新)
jobjectArray Java_com_example_sms_Pitch_getStructArray
(JNIEnv *env, jobject obj, jstring path){
const char *c_path;
c_path = env->GetStringUTFChars(path,NULL);
jint length = getSenLen(c_path);
jobjectArray args = 0;
jsize len = length;
jclass objClass = env->FindClass("java/lang/Object");
args = env->NewObjectArray(len, objClass, NULL);
jclass objectClass =env->FindClass("com/example/sms/Pitch");
jfieldID senStarT = env->GetFieldID(objectClass,"sentenceStartTime","I");
jfieldID senEndT = env->GetFieldID(objectClass,"sentenceEndTime","I");
jfieldID wordStaT = env->GetFieldID(objectClass,"wordStartTime","I");
jfieldID wordEndT = env->GetFieldID(objectClass,"wordEndTime","I");
jfieldID stanP = env->GetFieldID(objectClass,"standardPitch","I");
jfieldID wor=env->GetFieldID(objectClass,"word","[C");
Pitch *pitch=new Pitch[10];
pitch=standardPitch(c_path);
jmethodID consID = env->GetMethodID(objectClass, "<init>", "()V");
for(int i=0;i<length;i++){
jobject obj = env->NewObject(objectClass, consID);
(env)- >SetIntField(obj,senStarT,pitch[i].sentenceStartTime);
(env)->SetIntField(obj,senEndT,pitch[i].sentenceEndTime);
(env)->SetIntField(obj,wordStaT,pitch[i].wordStartTime);
(env)->SetIntField(obj,wordEndT,pitch[i].wordEndTime);
(env)->SetIntField(obj,stanP,pitch[i].standardPitch);
(env)->SetObjectArrayElement(args,i,obj);
}
return args;
}
JNI返回结构数组解析与应用
博客探讨了在JNI中如何返回结构数组,并解决了在处理过程中遇到的pitch值覆盖问题。文章通过示例展示了在Java中定义数组的方法,并强调了在JNI中处理结构数组时,对象不能复用以确保数据正确更新。
192

被折叠的 条评论
为什么被折叠?



