7
votes

C ++ et JNI - Comment passer un tableau dans un JFLOATARRAY

Je joue avec mon propre petit projet pour m'apprendre à l'Android NDK à l'aide de C ++ et JNI, mais je ne peux pas comprendre comment transmettre les données d'un tableau Java Float au tableau C ++. J'ai utilisé le JNI mis en place. La plupart des tutoriels que je trouve sont trop simples et n'expliquent pas assez ou sont trop compliqués et passez à ma compréhension pour le moment. Donc, quelqu'un peut-il simplement signaler à un exemple simple d'une matrice étant passée de Java à C ++, puis une méthode / fonction effectuée sur les données et renvoyé à Java.

Heres ma tentative jusqu'à présent, mais j'ai deux erreurs laissées dans le chemin. Je ne sais pas si le reste de la syntaxe est à la hauteur, mais je ne vois rien au moment de la compilation. xxx

et ce sont les erreurs à l'heure de la compilation xxx


0 commentaires

4 Réponses :


26
votes

Tout d'abord, vous ne pouvez pas utiliser directement JFLOATARRAY. Au lieu de cela, vous devriez faire ce xxx

s'il vous plaît utilisez-le comme un didacticiel et étudiez plus. Comme je l'ai déjà dit, étudier vous aidera à plus que de pratiquer à ce moment-là.


2 commentaires

Hey merci paul ..... Si cela obtient la simple application de test JNI, je travaille malade, assurez-vous de la publier ici avec toute la source :)


Hey Heres la solution que j'ai proposée grâce à votre aide :) Stackoverflow.com/questions/8543221/...



-1
votes

Au lieu de cela, le style ancien (au-dessus du code de Tae-Sung Shin, travaille toujours), nous devrions le faire de nos jours:

jfloatArray result;
result = (*env)->NewFloatArray( env, numbers_here );


1 commentaires

Quelle est la syntaxe exacte de "numéros_here"? Croisillons? Parulshèses? Arguments séparés par des virgules?



1
votes

Ceci est fondamentalement suffisant pour créer un tableau vide avec de nouveaux NDKS. En supposant que Env est votre environnement JNI.

jfloatArray jArray = env -> NewFloatArray(8);


0 commentaires

0
votes
validateAudio(JNIEnv* env, jobject obj, jstring resourceFolderPath, ,jfloatArray thresholdArray){
    const char *resource_folder_path = (*env)->GetStringUTFChars(env,resourceFolderPath,0); // string parameter
    const jfloat* threshold_array = (*env)->GetFloatArrayElements(env, thresholdArray,0);  //float array
}

0 commentaires