Я знаю, что, возможно, были опубликованы похожие темы, но я не могу приспособить их к своей проблеме.
Я выполняю некоторые операции, используя массив double[][] circlesOnScreen
в Java. Я хочу передать этот массив в JNI и отредактировать его там.
В JNI:
extern "C" JNIEXPORT void JNICALL
Java_com_example_nativeapp_MainActivity_method(JNIEnv *env, jobject , jobjectArray circlesOnScreen){
...
for(size_t i = 0; i < circles.size(); i++){
Vec3i c = circles[i];
// after a lot of effort I know how to access elements of the array
jdoubleArray oldCircle = (jdoubleArray) (env->GetObjectArrayElement(circlesOnScreen, i));
jboolean isCopy;
jdouble *elem = (env->GetDoubleArrayElements(oldCircle, &isCopy));
double oldX = elem[0];
double oldY = elem[1];
double oldRadius = elem[2];
double newX = c[0];
double newY = c[1];
double newRadius = c[2];
if ((newX > oldX + 5.0 || newX < oldX - 5.0) &&
(newY > oldY + 5.0 || newY < oldX - 5.0)){
elem[0] = newX; // here I edit them
elem[1] = newY;
elem[2] = newRadius;
}
// now what should I do to "save" changes made to elem and circlesOnScreen?
}
}