Accès rapide :
Programmation Android
Android : Plan de la formation
Android Introduction à Android
Introduction à Android : Présentation
Introduction à Android : Architecture des plateformes 4.x
Introduction à Android : Architecture des plateformes 5.x et supérieures
Introduction à Android : Outils de développement
Introduction à Android : Architecture d'un projet
Introduction à Android : Anatomie d'une application Android
Android Notre première application Android
Notre première application Android : Création du projet Android
Notre première application Android : Mise en place du layout de votre Activité via l'assistant
Notre première application Android : Edition de la partie de code
Notre première application Android : Gestion de l'internationalisation
Notre première application Android : Finalisation de l'application
Notre première application Android : Déploiement sur un SmartPhone
Android Debugger ses applications
Debugger ses applications : Utilisation de l'émulateur Android
Debugger ses applications : Passer son système en mode « Développeur »
Debugger ses applications : Utilisation du débugger DDMS
Debugger ses applications : Logs, mémoire, mode debug
Android L'interface graphique
L'interface graphique : Les layouts Android
L'interface graphique : Mise en place d'un thème graphique
L'interface graphique : Gestion de l'internationalisation
L'interface graphique : Gestion du menu Android
L'interface graphique : Mise en place d'un « Menu Hamburger »
L'interface graphique : Utilisation d'images
L'interface graphique : Dessiner avec un canvas
Android Création de Widgets
Création de Widgets : Par utilisation de l'héritage
Création de Widgets : Par définition d'un fragment
Android Gestion des Activités
Gestion des Activités : Mise en uvre d'activité
Gestion des Activités : Cycle de vie d'une activité
Gestion des Activités : Communication entre activités
Gestion des Activités : Configurateur d'application (AndroidManifest.xml)
Android Les données persistantes
Les données persistantes : La gestion des préférences
Les données persistantes : Utilisation d'une base de données SQLite
Les données persistantes : Manipulation de fichiers
Android Services et multithreading
Services et multithreading : Mise en uvre d'un service
Services et multithreading : Utilisation d'un service
Services et multithreading : Utilisation de threads
Services et multithreading : Utilisation du service de notifications
Services et multithreading : Démarrage d'un service au boot du système
Android Description des APIs
Description des APIs : Lister les senseurs présents sur le périphérique
Description des APIs : Utilisation des accéléromètres
Description des APIs : API de localisation
Description des APIs : API de cartographie
Description des APIs : Communication avec un serveur HTTP
Description des APIs : Accès au Bluetooth
Android Utilisation de code natif
Utilisation de code natif : Installer le NDK
Utilisation de code natif : Appels de méthodes natives
Utilisation de code natif : Compléments d'informations sur JNI
Merci de votre attention
Utilisation de code natif : Compléments d?informations sur JNI Il est possible d?appeler des méthode de votre objet depuis votre code C++ : JNIEXPORT jstring JNICALL Java_HelloWorld_toString(JNIEnv *env, jobject obj) { jclass cls = (*env)->GetObjectClass(obj); jmethodID mid = (*env)->GetMethodID(cls,"test","(Ljava/lang/String;)V"); if (mid == 0) printf( "Ouille\n" ); else { jstring str = (*env)->NewStringUTF("truc"); (*env)->CallVoidMethod(obj,mid,str); } return (*env)->NewStringUTF("toto"); } Dominique Liard - 2011 .. 2019 Notes: L'exemple de code suivant vous montre comment, à partir d'un code C, invoquer une méthode sur un objet Java. La principale difficulté réside dans le fait que le langage Java accepte la surcharge. Le seul nom de la méthode ne suffit donc pas à identifier la méthode à invoquer. Il faut aussi préciser son prototype complet. Pour ce faire, une syntaxe particulière vous est proposée.
Calcul de l'ID de la méthode :
Une fois la méthode identifiée, l'environnement JNI vous retournera un identificateur unique de méthode. C'est lui qui servira réellement lors de l'appel. On peut alors se poser une question : n'est-il pas plus rapide de pré-calculer une fois pour toute l'identificateur numérique de la méthode, plutôt que de toujours relancer sa recherche par code. La réponse n'est pas si simple. Oui, dans un certain sens, cela permet de gagner du temps. Donc si vous pouvez faire la recherche une fois pour toute, le programme en sera plus rapide.
Mais il y a un autre aspect à considérer : si vous modifiez une classe (ajout ou suppression de méthodes), les identificateurs changent alors. Si le programme les recherche plutôt que de directement utiliser une constante, son évolutivité en sera plus accrue.
Diapositive précédente
Diapositive suivante
2024 © SARL Infini Software - Tous droits réservés
Mentions légales
Les informations présentes dans ce site vous sont fournies dans le but de vous aider à acquérir les compétences nécessaires à
l'utilisation des langages ou des technologies considérés. Infini Software ne pourra nullement être tenu responsable de l'utilisation
des informations présentes dans ce site.
De plus, si vous remarquez des erreurs ou des oublis dans ce document, n'hésitez surtout pas à nous le signaler en envoyant un mail
à l'adresse : .
Les autres marques et les noms de produits cités dans ces documents sont la propriété de leurs éditeurs respectifs.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :