(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;
}