Je suis en train de tester la création des applications Android intégrant du code C++. Dans cet exemple, j'utilise la bibliothèque OpenCVApplications Android NDK - la meilleure façon d'intégrer un fichier texte pour le déploiement
J'ai configuré l'environnement et j'ai également pu compiler et déployer. L'application fonctionne correctement. Belle jusqu'à ici. Il y a un petit problème d'UX cependant. L'application utilise deux fichiers xml:
haarcascade_frontalface_alt.xml
haarcascade_eye_tree_eyeglasses.xml
mais pour le moment l'utilisateur final doit les poster-télécharger sur l'appareil et dans un dossier donné, sinon l'application serait incapable d'accomplir les détections respectives. Le significant part of code jusqu'à présent est la suivante:
JNIEXPORT void JNICALL Java_com_demo_test_opencvsample_OpenCVClass_faceDetection
(JNIEnv *, jclass, jlong addrRgba){
Mat& frame = *(Mat*)addrRgba;
detect(frame);
}
void detect(Mat& frame){
// these files will be loaded from a specific folder in the phone memory
String face_cascade_name = "/storage/emulated/0/data/haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "/storage/emulated/0/data/haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
//-- 1. Load the cascades
if(!face_cascade.load(face_cascade_name)){ printf("--(!)Error loading\n"); return; };
if(!eyes_cascade.load(eyes_cascade_name)){ printf("--(!)Error loading\n"); return; };
-> question: est-il un moyen d'intégrer les deux fichiers XML directement dans le apk en évitant un utilisateur final avoir à les télécharger séparément sur son appareil après l'installation de l'application? Je voudrais qu'il les ait directement disponibles après que l'application soit installée et le code C++, aussi parce qu'ils ne sont pas censés être changés
NOTE avant de répondre: Je ne suis pas intéressé à mettre deux boutons de téléchargement dans l'application finale et même pas en ayant une solution full-android. Je voudrais maintenir l'architecture actuelle faisant usage de la C de noyau
Merci d'avance à ceux qui tenteront d'aider
Avez-vous envisagé d'utiliser des ressources? (https://coderwall.com/p/0ldbgw/working-with-assets-in-android) – VolAnd
ciao @VolAnd, merci pour votre réponse! Je vérifiais la réponse pour Steve qui est un peu plus complète. J'avais lu sur le dossier Assets et c'est un peu simple de manipulation qu'avec une approche purement Android, j'ai vu aussi cet article qui était très bon: http: //www.41post.com/3985/programming/android-loading-files-from-the-assets-and-raw-folders mais - une fois déplacé dans le dossier Assets - le problème est d'être en mesure d'accéder à ces fichiers via le code C++. Bonne journée! – Antonino