我已经从互联网上搜索了解决方案,而我的代码与其他解决方案一样。我认为GetFloatArrayElements用于获取数组元素。
这是我的代码:
JNIEXPORT void JNICALL
Java_draw(JNIEnv *env, jfloatArray point){
float temp[6];
float x = 0;
jfloat *body = env->GetFloatArrayElements(point, 0);
for(int i =0; i < 6 ; i++){
temp[i] = body[i];
x+= body[i];
__android_log_print(ANDROID_LOG_ERROR, "TRACKERS123", "[%f]", *(body + i) );
}
env->ReleaseFloatArrayElements(point, body, 0);
}
结果总是这样:
[21.774231]
[0.000000]
[21.707932]
[21.776413]
[0.000000]
[0.000000]
我已经从调试检查了调用代码。这是示例值:
答案 0 :(得分:1)
您的Java_draw
方法的签名是错误的:(source)
JNIEnv*
。jclass
。jobject
。float[]
。因此签名应为:
JNIEXPORT void JNICALL Java_draw(JNIEnv *env, jclass klass, jfloatArray point) // static
或
JNIEXPORT void JNICALL Java_draw(JNIEnv *env, jobject obj, jfloatArray point) // non-static