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. P> et ce sont les erreurs à l'heure de la compilation p>
4 Réponses :
Tout d'abord, vous ne pouvez pas utiliser directement JFLOATARRAY. Au lieu de cela, vous devriez faire ce 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à. P> p>
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/...
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 );
Quelle est la syntaxe exacte i> de "numéros_here"? Croisillons? Parulshèses? Arguments séparés par des virgules?
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);
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 }