Élèves du CNAM, identifiez vous :
Entrez votre identifiant INE (entrez les lettres en majuscule) :

Logo du CNAM

Mise à jour : (Samedi 04 Février 2023, 16:53)

Licence Creative Commons
Le contenu de cette page est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 France.
CP48 :
Développeur d’applications mobiles
2017-2018

Flux RSS du Site Jean-Ferdy Susini


Cette page est dédiée aux interventions dont j'ai la charge dans le cadre du Certificat Professionnel (CP48) : Développeur d’applications mobiles du CNAM. La page de l'an dernier reste accessible Site 2016-2017.
Sur cette page vous trouverez :

Vous pouvez bookmarker cette page une fois avoir été correctement identifié, cela vous évitera de rentrer à nouveau votre INE.

Nouvelles


NFA022 : Principes et programmation système et réseau pour smart-phones et tablettes tactiles

Support de cours et liens utiles


NFA025 : Mise en œuvre de la programmation de smart-phones et tablettes tactiles

Support de cours et liens utiles

Éléments de correction des EDs

Éléments de correction de l'ED1
Elements de correction : NFA025_2016_ED1

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED1/Files.jar (39 Ko)

Exercice 1

La réponse à ce premier exercice diverge un peu de l'énoncé, pour présenter quelques éléments supplémentaires.

Pour des raisons de simplicité de distribution du code tout a été regroupé en seul fichier source : le fichier Combat.java. La classe Combat contient essentiellement une méthode main() qui implante la boucle de gestion du combat.

La structure de la solution proposée est la suivante :
  • une classe Combat implante en quelque sorte le «moteur de jeu» qui va calculer de façon itérative les différentes actions du combat.
  • une classe Personnage définit des objets personnage avec leurs caractéristiques principales :
    • nom
    • classe d'armure
    • points de vie
  • une classe Arme implante une arme avec son bonus d"attaque et les dégâts maximum qu'elle peut infliger.
  • une classe PersonnageArme qui étend la classe Personnage pour lui permettre de tenir un arme.
  • Enfin la classe De implante le tirage de dés en proposant en quelques sortes des fonctions utilitaires (méthodes de classe) basées sur Math.random()
Exercice 2

Pour implanter cet exercice on crée une unique classe Duree. Cette classe possède une méthode main() afin de tester l'implantation de la classe.

Une particularité de cette implantation est la définition d'une classe interne : DureeInvalideException qui implante une Exception qui sera levée à la construction d'un objet durée, si les paramètres de la durée se révèle être invalides. C'est-à-dire si les heures sont négatives ou que les minutes ne sont pas comprises entre 0 et 60.
Exercice 3

Pour implanter cet exercice on crée une unique classe RendezVous.

Cet exercice est très simple et l'immutabilité de la classe RendezVous est assuré par le fait que l'accès au champs de la classe est restreint à privé et qu'aucun setter (méthode permettant de changer directement la valeur d'un champ) n'est fournit.

Comment aurait-on pu forcer un peu plus ce caractère imutable de la classe ?

Exercice 4

Cet exercice a pour but de vous faire découvrir les interfaces et l'usage de classes internes voir de classes anonymes que l'on rencontre très fréquemment dans le monde Android. En soit, l'exercice a pu sembler «capillo-tracté» à certains d'entre vous et c'est compréhensible, mais le débat qui a eu lieu sur le forum était intéressant.

Object
Arme
Combat
De
Personnage
Throwable
Duree
RendezVous
VehiculeRacine
fr.cnam.nfa025.ed1.ex4.Moto$1
fr.cnam.nfa025.ed1.ex4.PoidsLourd$1
RoueImpl
fr.cnam.nfa025.ed1.ex4.Voiture$1
VoitureTest
PersonnageArme
Exception
PoidsLourd
Moto
Voiture
DureeInvalideException
Bus
Camion
Tracteur
Enumeration
Roue
Vehicule
src/fr/cnam/nfa025/ed1/ex1/Combat.java
src/fr/cnam/nfa025/ed1/ex2/Duree.java
src/fr/cnam/nfa025/ed1/ex3/RendezVous.java
src/fr/cnam/nfa025/ed1/ex4/Vehicule.java
src/fr/cnam/nfa025/ed1/ex4/Roue.java
src/fr/cnam/nfa025/ed1/ex4/VoitureTest.java
src/fr/cnam/nfa025/ed1/ex4/Suite.java

 Tous les fichiers  Masquer les fichiers 

Le moteur de jeu qui simule le combat entre Beowulf et Grendel

La classe Duree, illustration de la définition d'objets immutables (ancien sujet d'examen)

La classe RendezVous, qui est proposée pour l'essentiel dans le sujet (ancien sujet d'examen)

L'interface Vehicule

L'interface Roue

L'interface Roue

L'interface Roue

Éléments de correction de l'ED2
Elements de correction : NFA025_2016_ED2

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED2/Files.jar (53 Ko)

Exercice 1

La correction de cet exercice est assez directe : le code commenté indique les erreurs qu'il fallait corriger et leur nature.

La trace d'exécution des différents scénarios est obtenu à l'aide du simulateur en utilisant par exemple la personnalité DDMS d'éclipse ou d'Android Studio. Les capture d'écran associées à cet exercice sont des captures du logcat filtrées à l'aide du TAG : CNAM_NFA025_TAG.
Exercice 2
Une fois encore la correction est assez simple et reprend le principe du premier Exercice. La correction propose ici d'appeler l'activité CycleDeVie. On profite de cet exercice pour parler d'une méthode qui n'avait pas été considérée jusque là et que nous découvriront dans le cours sur les Intents mais qui est la méthode onActivityResult() et qui joue bien un rôle particulier dans la gestion du cycle de vie d'une activité.
Exercice 3
Question 1
C'est une question de cours assez facile !
Le fichier AndroidManifest.xml permet au moment de l'installation de l'application sur le terminal au PackageManager du système de connaître les différents composants applicatifs contenus par le package installé. Comme c'est le système Android qui instancie les composants et non le développeur de l'application son rôle est très important car sans une déclaration correcte des composants dans ce fichier, ils seront inutilisables.
Question 2
Comme les exercices sont extraits des sujets d'examen des années passées, les réponses vont parfois dépasser le cadre stricte du cours et anticiper sur les cours à venir. Je n'attends pas de votre part de pouvoir répondre forcément à tout mais au moins au problème principal soulevé par la question.

La question est assez classique. On donne ici un fichier AM_3.xml qui n'est pas associé à une application particulière (ne pas l'ajouter tel quel à un projet, ça ne marcherait pas) mais constitue la réponse à la question. Ce fichier très commenté est en fait très simple à écrire (masquez les commentaires pour vous en convaincre).

Question 3
On rajoute les éléments suivants au fichier AM_3.xml :


Question 4
La question est assez standard et la réponse se trouve dans le fichier MonAvtivite.java.
Question 5
Question assez classique également : la réponse se trouve dans le fichier Navigateur.java.
Exercice 4
On reprend le code de l'exercice de l'ED1 mais on étend un peu la modélisation afin de faciliter l'intégration dans une application Android. On ajoute en particulier la notion d'Arene gérant le combat. L'Arene jouera le rôle de modèle de données, l'activité Combat jouera le rôle de contrôleur et notre interface définit en XML le rôle de vue dans le patron de conception MVC.

Voir directement le code de la solution.

Exercice 5
Question 1

Les erreurs sont commentées dans le code.

Question 2
La méthode onSaveInstanceState(Bundle) permet de sauvegarder l'état courant de l'activité avant un arrêt imprévu. Lorsque l'activité est arrêtée par le système pour des raisons externes au comportement même de l'activité (l'activité est masquée par une autre, le système arrête l'activité pour récupérer de l'espace mémoire, le système arrête l'activité pour prendre en charge une rotation de l'orientation de la GUI…), cette méthode est appelée et le système fournit alors une référence à un objet de type Bundle (jouant le rôle de coffre fort) où le développeur de l'activité stockera les éléments importants de l'état de l'activité pour reprendre son exécution plus tard. Cette méthode n'est pas appelée par exemple si l'activité quitte normalement (appel à la méthode finish())
Exercice 6
Question 1

C'est une question de cours assez classique. Bien penser à préciser le rôle de ce fichier du point de vue du système d'exploitation Android. Pourquoi est-il nécessaire que tous les composants soient déclarés dans ce fichier...

Voir ensuite le fichier AM_6.xml pour avoir une idée du fichier à écrire.
Question 2
voir le fichier correspondant dans les réponses.
Question 3
Question de cours : Expliquer la nature de cet objet (une structure de type dictionnaire associant des valeurs à des clés). il est de type Parcelable. Le type Parcelable implique qu'il peut être transformé en un flux binaire et par l'usage du mécanisme des Binder, il permet d'extirper des données d'un processus pour les mettre en lieu sur (préservé par le système android)... Illustrer par exemple son rôle dans la gestion de la rotation de l'interface graphique passant du mode portrait au mode paysage. Lister les opérations réalisées et en particulier celles où intervient le Bundle
NFA025_2016_ED2}: Screen1
NFA025_2016_ED2}: Screen2
NFA025_2016_ED2}: Screen3
NFA025_2016_ED2}: Screen4
NFA025_2016_ED2}: Screen5
NFA025_2016_ED2}: Screen6
NFA025_2016_ED2}: Screen7
NFA025_2016_ED2}: Screen8
NFA025_2016_ED2}: Screen9
NFA025_2016_ED2}: Screen10
Object
Context
ContextWrapper
ContextThemeWrapper
Activity
ED2
CycleDeVie
./AndroidManifest.xml
./res/layout/main.xml
./res/layout/ex2main.xml
./res/layout/combat.xml
./res/values/strings.xml
./src/fr/cnam/nfa025/ed2/ED2.java
./src/fr/cnam/nfa025/ed2/CycleDeVie.java
./src/fr/cnam/nfa025/ed2/MonActivite.java
./src/fr/cnam/nfa025/ed2/Navigateur.java
./src/fr/cnam/nfa025/ed2/ActiviteCombat.java
./src/fr/cnam/nfa025/ed2/Arene.java
./src/fr/cnam/nfa025/ed2/Combattant.java
./src/fr/cnam/nfa025/ed2/Personnage.java
./src/fr/cnam/nfa025/ed2/Soldat.java
./src/fr/cnam/nfa025/ed2/Arme.java
./src/fr/cnam/nfa025/ed2/ResultatAttaque.java
./src/fr/cnam/nfa025/ed2/De.java
./res/drawable/ic_launcher.png
./res/drawable/nav_icon.png
./AM_3.xml
./src/fr/cnam/nfa025/chasse/ChasseAuTresor.java
./src/fr/cnam/nfa025/throwit/MenuPrincipal.java
./AndroidManifest.xml

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application. Dans ce fichier manifest on retrouve regroupé en une seule application les activités de 4 exercices.

L'interface graphique correspondante à l'activité ED2

L'interface graphique correspondante à l'activité CycleDeVie

L'interface graphique correspondante à l'activité Combat

Le fichier chaînes de caractères :

L'activité principale

L'activité du deuxième exercice

L'activité MonActivite du troisième exercice

L'activité Navigateur du troisième exercice

L'activité ActiviteCombat du quatrième exercice

L'Arene isole le moteur de jeu (modèle et évolution du monde) du controleur qu'est l'activité. Ainsi seules 2 interfaces permettent d'accèder aux données de l'extérieur.

Interface définissant les informations accessibles d'un combattant

Implantation de base de l'interface Combattant

hérite de Personnage en lui ajoutant une arme

implante une arme

Interface définissant les informations accessibles à la suite d'une attaque.

classe gérant des tirages de dés.

icône générée automatiquement à la création du projet

icône de l'activité Navigateur

Réponse à la question 2 de l'exercice 3 ne constitue pas un projet en soit, il s'agit juste d'une réponse typique à la question qui était posée.

Correction des erreurs de la question 5.

Squelette de l'activité décrite dans la question 6.

Réponse à la question 2 de l'exercice 5, ne constitue pas un projet en soit, il s'agit juste d'une réponse typique à la question qui était posée.

Elements de correction : NFA025_2018_ED2

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_ED2/Files.jar (9 Ko)

Exercice 7
Malgré le contexte peut-être surprenant de l'application, l'exercice reste un très grand classique.

La correction est dans les commentaires du fichier HoloWorld.java

Vous pouvez vérifier le comportement de l'IDE et du terminal en copiant le fichier source dans un projet Android.
Exercice 8
Cet exercice porte sur la définition du fichier AndroidManifest.xml associée à l'application « Guide Touristique ». C'est un fichier fondamental permettant l'installation de votre application sur un terminal Android ; il doit donc être correctement renseigné et pour ce faire, il est capital que vous en compreniez le contenu. La réponse à cet exercice est donc directement donné dans le source suivant :



Exercice 9
Question 1
La question ne comporte pas de difficultés particulières. Il s'agit essentiellement d'une question de cours sur le rôle du fichier AndroidManifest.xml et qui se termine par la production d'un code équivalent au suivant :



Question 2
Les erreurs sont notées sous la forme de commentaires dans le fichier fr/cnam/nfa025/ed2/part2/Trousse.java.
Exercice 10
Question 1
Question classique les réponses sont commentées dans le fichier source fr/cnam/nfa025/ed2/part2/Menu.java
Question 2
Question de cours.
La méthode onSaveInstanceState(Bundle) est une méthode importante de la gestion du cycle de vie d'une activité car elle permet de mettre en sécurité des informations importante portée par l'activité lorsque celle-ci perd l'attention de l'utilisateur. Dès que l'activité se retrouve masquée (partiellement ou totalement), le système crée un objet de type Bundle et appelle cette méthode afin que l'activité puisse y stocker les données qu'elle doit préserver. En effet, l'activité pourra être à tout moment arrêtée par le système à partir du moment où elle a perdu l'attention de l'utilisateur. Les données ainsi sauvée pourront être retrouvées au redémarrage de l'activité (méthode onCreate(Bundle) et/ou méthode onRestoreInstanceState(Bundle)).
Exercice 11
Question 1
Là encore on retrouve une question très classique. qui aboutira à écrire le fichier AndroidManifest.xml ayant la forme suivante :


Question 2
Question classique dont la réponse est donnée par le fichier fr/cnam/nfa025/ed2/part2/MusicController.java
Question 3
cf captue d'écran.
NFA025_2018_ED2}: Screen1
NFA025_2018_ED2}: Screen2
NFA025_2018_ED2}: Screen3
Object
Context
Outils
ContextWrapper
ContextThemeWrapper
Activity
MusicController
Menu
Trousse
HoloWorld
./AndroidManifest.xml
res/layout/controller.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/ed2/part2/Trousse.java
src/fr/cnam/nfa025/ed2/part2/Outils.java
src/fr/cnam/nfa025/ed2/part2/MusicController.java
src/fr/cnam/nfa025/ed2/part2/Menu.java
src/fr/cnam/nfa025/ed2/part2/HoloWorld.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

values android

source code Trousse.java

source code Outils.java

source code MusicController.java

source code Menu.java

source code HoloWorld.java

Éléments de correction de l'ED3
Elements de correction : NFA025_2016_ED3

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED3/Files.jar (180 Ko)

Exercice 1
Question 1
l'interface graphique correspondant au fichier layout XML proposé correspond à peu près à la capture d'écran suivante :

Image ED3 Exo1

il n'y a pas de pièges particulier ici, et le dessin est assez simple à réaliser sur la feuille. Une remarque cependant : l'interface utilise des poids dans un linearlayout, il faut donc donner une idée des proportions accordées à chaque widget, mais il n'est pas attendu un placement précis (aucun calcul n'est attendu).
Question 2
La réponse attendue ici est dans le code Java de l'activité portant cette interface. L'identifiant button1 pourra être utilisé pour récupérer une référence sur l'objet java implantant le bouton grâce à la méthode findViewById() de l'activité.

Une autre utilisation possible serait dans la méthode traitant les onClick de l'activité (méthode définie par le développeur de l'application). L'identifiant de la vue obtenu en appelant la méthode getId() sur la vue passée en paramètre permettrait de discriminer le click sur un bouton ou sur un autre.

Question 3
Le texte affiché par le bouton lorsque l'affichage de l'activité est actif n'est pas celui contenu dans l'attribut android:text comme on pourrait le supposer. En fait, la valeur associée à cet attribut est particulière et sa syntaxe est celle d'une commande pour le système android. Cette commande va permettre au système de substituer la véritable valeur au moment de l'affichage. La syntaxe de cette commande s'interprète de la manière suivante : le caractère @ en premier indique qu'il s'agit d'une référence à une ressource et non d'une valeur codée en dur. Ensuite vient le type de la ressource : string décrivant le type chaîne de caractères. Le caractère / suivant sert de séparateur entre le nom du type de ressource et le nom de la ressource elle même qui suit. Le dernier élément est donc le nom de la ressource elle même. Ce nom est utilisé par le système android pour retrouver parmi les ressources chaînes de caractères la chaîne voulue par le développeur de l'application (ici le nom de la ressource est libBouton).

Cela signifie que dans le dossier res/value de son application, le développeur à donné la description d'une ressource de type string avec le nom libBouton dans un fichier XML.

Question 4
Le fichier ex1_string.xml contient la liste des ressource chaînes de caractères associée à cette interface.
Exercice 2
Question 1
Le code source donné dans les éléments de réponses présente différent layouts android. Un premier placement est réalisé à partir de LinearLayout et le second à partir d'un RelativeLayout. À l'examen sur ce type de question, vous êtes libres de proposer l'implantation que vous voulez du moment que vous parvenez à respecter les grandes lignes de l'interface qui vous est présentée ici.
Question 2
Une des caractéristiques du système de gestion des ressources applicatives est sa capacité à s'adapter automatiquement à certaines caractéristiques du système au moment du chargement des ressources.
Petit rappel concernant la gestion des ressources android
Ainsi les dossier res d'une application android possède un certains nombres de ressources décrites dans des fichiers XML ou placées dans des sous-dossiers spécifiques. Dans le cadre de cette UE, noune nous intéresserons essentiellement qu'à 3 sous-dossiers principaux :
  • drawable : sous-dossier contenant des fichiers images (généralement au format png). Le nom des fichiers images doit-être un nom de ressources (c'est-à -dire une chaîne de caractères uniquement constituée de lettres minuscules et du caractère _). Ces ressources sont consignées par le processus de compilation qui génère des identifiants dans la classe R.drawable. Permettant de référencer chaque image du dossier drawable. Dans les fichiers XML les ressources sont référencées dans les valeurs d'attributs des balises grâce à la syntaxe : @drawable/nom_de_l_image.
  • layout : sous-dossier contenant des fichiers layout (généralement au format XML). Le nom des fichiers images doit être un nom des ressources (c'est-à-dire uniquement constitués de lettres minuscules et du caractère _). Comme pour les images, les ressources de type layout sont consignées par le processus de compilation qui génère des identifiants dans la classe R.layout. Permettant de référencer chaque image du dossier layout. Dans les fichiers XML les ressources sont référencées dans les valeurs d'attributs des balises grâce à la syntaxe : @layout/nom_du_layout.
  • values : sous-dossier contenant des fichiers XML contenant des ressources de différents type :
    • string : chaînes de caractères;
    • dimension : dimensions utilisées dans les layout XML;
    • color : code d'une couleur utilisable pour peindre l'écran.
    Le nom des fichiers ressources n'a pas d'importances (doit terminer par l'extension .xml). Par contre les fichiers ressources doivent contenir des déclarations de ressources XML (un document dont l'élément racine est définit par la balise resource) et contenant des éléments de type string, integers, dimension, color…. Les ressources sont référencées dans du code Java grâce à la classe R générée automatiquement par le processus de compilation qui analyse tous les fichiers XML présents dans res/values et consignes les différentes ressources en rcréant des entrées correspondantes dans les classes R.string, R.integer, R.color, R.dimension… Tandis que les ressources sont référencées dans les fichiers XML par les références de la forme : @string/nom_de_la_chaine, @integer/nom_de_l_entier, @dimension/nom_de_la_dimension

Le point fort de ce mécanisme de gestion de ressources est qu'il permet de charger des versions adapté des ressources à certaines caractéristiques du terminal considéré au moment du chargement de la ressource et non à la compilation : par exemple, prenons le cas d'une ressource de type chaîne de caractères "Hello World !". Il sera possible de charger une version par défaut de la ressource généralement déclarée dans le dossier values. Mais si le terminal est configuré pour utiliser la langue française il est possible de donner une version française de la chaîne de caractères en définissant la même ressources (avec le même identifiant) dans un autre sous-dossier values suffixé par -fr : le sous dossier res/values-fr. Ce sous dossier pourra contenir une version française des ressources de l'application que ce soient des chaînes de carctères, des entiers, des dimensions, des couleurs…

De façon identique on pourra créer un layout adapté aux système français en enregistrant la version francisée du layout dans le dossier res/layout-fr.

Dans cet exercice, on va proposer pour chacun des deux layout une version par défaut (dossier res/layout) et une version à utiliser lorsque le téléphone est en mode paysage (suffixe -land) dans le dossier res/layout-land.

Exercice 3
La solution présentée ici n'est probablement pas la solution la plus directe à l'exercice mais elle permet d'illustrer 2 techniques particulières :
  • l'utilisation des poids dans un LinearLayout. En particulier lorsque plus de 2 éléments sont à placer.
  • le deuxième est l'utilisation d'une balise très importante et sous-estimée : la balise include. De nos jours la notion de fragment est mise en avant, mais la balise include peut déjà répondre à certains problèmes auxquels les fragments sont supposés traiter.
Exercice 4
Question 1 et 2
Cette exercice ne présente pas de grosse difficultés seule la gestion des polices de caractères qui suit des règles un peu différentes peut poser des problèmes (la gestion des polices de caractères n'est pas au programme et donc à l'examen n'a pas compté mais elle donné ici à titre d'exemple).
Exercice 5
Question 1
Là encore l'exercice est assez classique, la difficulté principale reposant plus sur la longueur de l'exercice qui a beaucoup découragé (et un peu également la gestion des boutons radio).
Question 2
Ce fichier layout comporte quelques pièges (par exemple android:hint sur des Boutons). Il faut bien être attentif pendant la lecture du fichier XML. Je vous engage à d'abord essayer de dessiner l'IHM à partir du code source avant de regarder compiler la réponse. Cela vous permettra peut-être de prendre conscience des pièges.
Exercice 6
Question 1
pas de difficultés majeures si ce n'est de faire attention à respecter les proportions : les 2 derniers widgets sont moins haut que les gros boutons (les 2 dernière lignes ont la hauteur d'un bouton environ).
Question 2
Pas de difficultés particulières.
Exercice 7
Pas de difficultés particulières.
Exercice 8
Pas de difficultés particulières. On portera seulement un attention particulière sur la définition des ressources. Certains identifiants ont été récrits.
NFA025_2016_ED3}: Screen1
NFA025_2016_ED3}: Screen2
NFA025_2016_ED3}: Screen3
NFA025_2016_ED3}: Screen4
NFA025_2016_ED3}: Screen5
NFA025_2016_ED3}: Screen6
NFA025_2016_ED3}: Screen7
NFA025_2016_ED3}: Screen8
NFA025_2016_ED3}: Screen9
Object
Context
RendezVous
ContextWrapper
ContextThemeWrapper
Activity
ActiviteAgenda
ActiviteExo4
ActiviteExo5
ActiviteExo6
ActiviteIdentification
ChasseAuTresor
Exercice1Activity
MenuPrincipal
AndroidManifest.xml
res/layout/ex1_main.xml
res/values/ex1_strings.xml
src/fr/cnam/nfa025/ed3/Exercice1Activity.java
res/layout/ed3_ex2_avecll.xml
res/layout/ed3_ex2_avecrl.xml
res/layout-land/ed3_ex2_avecll.xml
res/layout-land/ed3_ex2_avecrl.xml
res/values/Ex2_strings.xml
res/drawable/logo_cnam.png
res/drawable-land/logo_cnam.png
src/fr/cnam/nfa025/ed3/ActiviteIdentification.java
res/layout/ed3_ex3_main.xml
res/layout/entree_date.xml
res/values/ed3_ex3_strings.xml
src/fr/cnam/nfa025/ed3/ActiviteAgenda.java
src/fr/cnam/nfa025/ed3/RendezVous.java
src/fr/cnam/nfa025/ed3/ActiviteExo4.java
res/layout/ed3_ex4.xml
res/layout/ed3_ex4_2.xml
res/values/ed3_ex4_strings.xml
res/drawable/hp_wand.png
res/layout/ed3_ex5_1.xml
res/layout/ed3_ex5_2.xml
res/values/strings_Ex5.xml
src/fr/cnam/nfa025/ed3/ActiviteExo5.java
res/layout/ed3_ex6_1.xml
res/layout/ed3_ex6_2.xml
res/values/ed3_ex6_str.xml
src/fr/cnam/nfa025/ed3/ActiviteExo6.java
res/drawable/back.png
res/drawable/foreward.png
res/layout/chasse.xml
src/fr/cnam/nfa025/ed3/ChasseAuTresor.java
res/values/ed3_ex7_rsrc.xml
res/layout/lance.xml
src/fr/cnam/nfa025/ed3/MenuPrincipal.java
res/values/lance_rsrc.xml

 Tous les fichiers  Masquer les fichiers 

Le manifest android contenat les point d'entrée de tous les exercices (1 à 6)

L'interface graphique correspondant à l'exercice 1 :

Le fichier chaînes de caractères de l'exercice 1 :

L'activité principale de l'exercice 1

L'interface graphique en mode portrait de l'exercice 2 construite avec des LinearLayout :

L'interface graphique en mode portrait de l'exercice 2 construite avec des RelativeLayout :

L'interface graphique en mode paysage de l'exercice 2 construite avec des LinearLayout :

L'interface graphique en mode paysage de l'exercice 2 construite avec desRelativeLayout :

Le fichier chaînes de caractères de l'exercice 2 :

Le fichier image contenant le logo du CNAM :

Le fichier image contenant le logo du CNAM :

L'activité principale de l'exercice 2

L'interface graphique de l'Exercice 3

Le layout inclus supplémentaire de l'Exercice 3

Le fichier chaînes de caractères de l'Exercice 3

L'activité principale de l'exercice 3

La classe RendezVous de l'exercice 3

L'activité de l'exercice 4

Le layout de la première question de l'exercice 4

Le layout de la deuxième question de l'exercice 4

Les ressources chaînes de caractères de l'exercice 4

Le fichier image de la baguette

Le layout de la question 1 de l'exercice 5

Le layout de la question 2 de l'exercice 5

Les ressources chaînes de caractères de l'exercice 5

L'activité de l'exercice 5

Le layout de la question 1 de l'exercice 6

Le layout de la question 2 de l'exercice 6

Les ressources chaînes de caractères de l'exercice 6

L'activité de l'exercice 6

Le fichier image contenant la flèche de retour :

Le fichier image contenant la flèche en avant :

Le layout de la question 1 de l'exercice 7

Une activité permettant l'affichage du layout de la question 1 de l'exercice 7

Les ressources associées à l'exercice 7

Le layout de la question 1 de l'exercice 8

Une activité permettant l'affichage du layout de la question 1 de l'exercice 8

Les ressources associées à l'exercice 8

Elements de correction : NFA025_2018_ED3

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_ED3/Files.jar (37 Ko)

Exercice 9
On reprend la correction de l'exercice HoloWorld de la série précédente.
Question 1
Cf. capture d'écran.
Question 2
Une solution possible est donnée dans le fichier holo_set.xml
Exercice 10
Cet exercice poursuit la correction de l'application guide touristique débutée dans la série d'exercices précédents. Il y a évidemment plusieurs solutions acceptables pour produire une mise en page de l'interface. Le fichier main_guide.xml propose une de ces solutions.
Exercice 11
On reprend l'exercice Trousse à Outils de la série précédente.
Question 1
Exécuter le programme pour découvrir l'interface. cf . capture d'écran.
Le fichier trousse.xml a été modifié en conséquence et les ressources ajoutées au fichier res/strings.xml
Question 2
Question 3
La classe NiveauABulleVue étend la classe View du système Android. Elle réécrit la méthode onDraw(Canvas). Cette méthode est appelée par le système chaque fois que la vue doit être redessinée à l'écran. C'est donc le système android qui appelle cette méthode et qui fournit l'outil Canvas à travers lequel le développeur va envoyer des commandes de dessin au système.
Exercice 12
On complète l'exercice « Remise en Forme » de la série d'exercices précédente.
Question 1
Le fichier main_forme.xml permet produire l'interface à l'écran. cf capture d'écran.
Question 2
Les informations codées en dur dans l'énoncé ont été modifiées dans le fichier source. Et les ressources ajoutées dans le fichier res/strings.xml.
Exercice 13
On reprend l'exercice «Service de musique en ligne» de la série d'exercices précédente.
Cf. capture d'écran.
NFA025_2018_ED3}: Screen1
NFA025_2018_ED3}: Screen2
NFA025_2018_ED3}: Screen3
NFA025_2018_ED3}: Screen4
NFA025_2018_ED3}: Screen5
NFA025_2018_ED3}: Screen6
NFA025_2018_ED3}: Screen7
Object
Context
Outils
View
ContextWrapper
NiveauBulleVue
ContextThemeWrapper
Activity
MusicController
NiveauABulle
MenuGuide
Menu
Trousse
HoloWorld
HoloSettings
./AndroidManifest.xml
res/drawable/default_artwork.png
res/drawable/logo.png
res/layout/controller.xml
res/layout/holo.xml
res/layout/holo_set.xml
res/layout/main_forme.xml
res/layout/main_guide.xml
res/layout/niveau_a_bulle.xml
res/layout/trousse.xml
res/values/strings.xml
src/fr/cnam/nfa025/ed3/part2/NiveauBulleVue.java
src/fr/cnam/nfa025/ed3/part2/Trousse.java
src/fr/cnam/nfa025/ed3/part2/Outils.java
src/fr/cnam/nfa025/ed3/part2/MusicController.java
src/fr/cnam/nfa025/ed3/part2/Menu.java
src/fr/cnam/nfa025/ed3/part2/HoloWorld.java
src/fr/cnam/nfa025/ed3/part2/NiveauABulle.java
src/fr/cnam/nfa025/ed3/part2/HoloSettings.java
src/fr/cnam/nfa025/ed3/part2/MenuGuide.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

drawable android

drawable android
layout android

layout android

layout android

layout android

layout android

layout android

layout android

values android

source code NiveauBulleVue.java

source code Trousse.java

source code Outils.java

source code MusicController.java

source code Menu.java

source code HoloWorld.java

source code NiveauABulle.java

source code HoloSettings.java

source code MenuGuide.java

Éléments de correction de l'ED4
Elements de correction : NFA025_2016_ED4

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED4/Files.jar (314 Ko)

L'essentiel des exercices de cette série porte sur l'utilisation des intents dans le système Android afin d'orchestrer les différents composants applicatifs sur un terminal mobile. Une bonne part de la mise en œuvre des intents porte donc sur le démarrage du seul composant applicatif que nous connaissons à ce stade : les activités. On verra donc a de nombreuse reprise la mise en œuvre des appels systèmes startActivity() et startActivityForResult(). Mais les intents ne servent pas qu'à cela, nous le découvrirons à l'occasion d'autres exercices plus tard dans d'autres séries.

Exercice 1
Pas de difficultés majeures ici.
L'affichage de messages dans une nouvelle activité est assez simple. Il faut cependant bien comprendre l'enchainement des appels permettant de réaliser cette opération. La gestion du clique sur le bouton aboutit à l'exécution de la méthode displayMessage(), qui crée un intent explicite désignant la classe DisplayMessage pour lancer une nouvelle activité. Ona joute dans la partie extra de l'intent une chaîne de caractère représentant le message à afficher (le contenu du champ de texte éditable) et on demande au système de lancer l'activité avec un startActivity().
Exercice 2
Un exercice assez classique depuis quelques années qui montre comment à partir dune simple activité et du mécanisme des intents, il est possible de réaliser une application assez complexe en jouant les chefs d'orchestre utilisant les composants applicatifs mis à disposition par le système ou d'autres applications.
Exercice 3
Encore un classique !
Cette fois-ci on donne 2 réponses, une similaire à celle de l'année dernière et une seconde plus complexe. Dans les deux cas cependant, on va plus loin que ce qui vous est demandé et ce qui vous sera demandé à l'examen. C'est plus une illustration assez complexe de ce que l'on peut faire lorsqu'on utilise le mécanisme des intents et quelques widgets Andorid.
Exercice 4
En reprenant l'idée du jeu de l'ED3, on ajoute la gestion du pseudo du joueur à l'aide d'une activité dédiée démarrer par un startActivityForResult()
Exercice 5
L'idée est ici la même que pour l'exercice précédent.
Exercice 6
On donne ici une réponse simplifiée...
Question 1
Pour la gestion du clic utilisateur, on utilisera classiquement un attribut android:onClick. Puis on définira la méthode correspondante dans la classe de l'activité ChasseAuTresor.

Dans cette méthode, nous utiliserons un appel de type startActivity en utilisant un intent explicite pour désigner l'activité Fouille

Question 2
On reprend le même mécanisme mais cette fois-ci l'activité sera lancée en utilisant un startActivityForResult. On associera le lancement de l'activité Fouille au numéro 1 que l'on définira dans une constante.

Lorsque l'activité Fouille s'exécutera, l'utilisateur collectera une série d'objets et à la fin de la fouille, il faut retourner cette liste d'objets. Pour ce faire l'activité construit un intent de résultat et stock dans la partie extras de l'intent les données des objets collectés (ici on va supposer qu'il s'agit de noms). Elle va ensuite positionner le résultat avec un appel à la méthode setResult et terminer son exécution avec un appel à la méthode finish.

L'activité ChasseAuTresor va alors reprendre la main et sa méthode onActivityResult va être appelée pour traiter le résultat.

Exercice 7
Une fois encore, on donne une réponse simplifiée, qui se focalise uniquement sur les question de communication entre les activités et la gestion du cycle de vie.
NFA025_2016_ED4}: Screen1
NFA025_2016_ED4}: Screen2
NFA025_2016_ED4}: Screen3
NFA025_2016_ED4}: Screen4
NFA025_2016_ED4}: Screen5
NFA025_2016_ED4}: Screen6
NFA025_2016_ED4}: Screen7
NFA025_2016_ED4}: Screen8
NFA025_2016_ED4}: Screen9
NFA025_2016_ED4}: Screen10
NFA025_2016_ED4}: Screen11
NFA025_2016_ED4}: Screen12
NFA025_2016_ED4}: Screen13
NFA025_2016_ED4}: Screen14
Object
Context
fr.cnam.nfa025.ed4.ChasseAuTresor$1
fr.cnam.nfa025.ed4.Reglages$1
Filter
BaseAdapter
fr.cnam.nfa025.ed4.Reglages2$2
fr.cnam.nfa025.ed4.Reglages2$3
fr.cnam.nfa025.ed4.Reglages2$4
ContextWrapper
PasDeFiltre
ArrayAdapter
ContextThemeWrapper
fr.cnam.nfa025.ed4.Reglages2$1
Activity
Afficheur
Afficheur2
ChasseAuTresor
DisplayActivity
ED4_Ex1
Fouille
IntentTest
Jeu
Judo
MenuPrincipal
MonJeu
MonJeuProfil
Reglages
Reglages2
SaisieInfoClub
OnClickListener
Constantes
OnSeekBarChangeListener
OnItemSelectedListener
TextWatcher
AndroidManifest.xml
src/fr/cnam/nfa025/ed4/Afficheur.java
src/fr/cnam/nfa025/ed4/Afficheur2.java
src/fr/cnam/nfa025/ed4/ChasseAuTresor.java
src/fr/cnam/nfa025/ed4/Constantes.java
src/fr/cnam/nfa025/ed4/DisplayActivity.java
src/fr/cnam/nfa025/ed4/ED4_Ex1.java
src/fr/cnam/nfa025/ed4/Fouille.java
src/fr/cnam/nfa025/ed4/IntentTest.java
src/fr/cnam/nfa025/ed4/Jeu.java
src/fr/cnam/nfa025/ed4/Judo.java
src/fr/cnam/nfa025/ed4/MenuPrincipal.java
src/fr/cnam/nfa025/ed4/MonJeu.java
src/fr/cnam/nfa025/ed4/MonJeuProfil.java
src/fr/cnam/nfa025/ed4/Reglages.java
src/fr/cnam/nfa025/ed4/Reglages2.java
src/fr/cnam/nfa025/ed4/SaisieInfoClub.java
res/drawable/back.png
res/drawable/hp_wand.png
res/drawable/iconemenu.png
res/drawable/logo_cnam.png
res/drawable/projectile1.png
res/layout/affichage.xml
res/layout/chasse.xml
res/layout/composante.xml
res/layout/composante2.xml
res/layout/ed4_ex1_disp.xml
res/layout/ed4_ex1_main.xml
res/layout/ed4_ex4_1.xml
res/layout/ed4_ex4_2.xml
res/layout/fouille.xml
res/layout/intent_test.xml
res/layout/lancer.xml
res/layout/prepare.xml
res/layout/principal.xml
res/layout/reglages.xml
res/layout/reglages2.xml
res/layout/saisie_info_club.xml
res/layout-land/reglages2.xml
res/values/ed4_ex4_strings.xml
res/values/ed4_ex6.xml
res/values/ex5_str.xml
res/values/Exo1_strings.xml
res/values/intentTest.xml
res/values/launch_game.xml
res/values/panneau_str.xml
res/values/tailleMenuRsrc.xml
res/values-fr/strings.xml

 Tous les fichiers  Masquer les fichiers 

















































Éléments de correction de l'ED5
Elements de correction : NFA025_2016_ED5

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED5/Files.jar (34 Ko)

Exercice 1
Ces exercices permettent de vous familiariser avec les notions de concurrence et en particulier les Thread et le UIThread.

La première version de l'activité horloge utilise l'intervention de l'utilisateur pour mettre à jour l'horloge. LE calcul de la nouvelle date et son affichage est réalisée dans la réaction de l'activité Horloge simple.

Exercice 2
Un exercice assez complexe permettant de gérer les combats en tâche de fond.
Exercice 3
La solution va un peu plus loin que les questions de l'ED en permettant de créer 10 billes. qui évoluent simultanément.
NFA025_2016_ED5}: Screen1
NFA025_2016_ED5}: Screen2
NFA025_2016_ED5}: Screen3
NFA025_2016_ED5}: Screen4
NFA025_2016_ED5}: Screen5
NFA025_2016_ED5}: Screen6
NFA025_2016_ED5}: Screen7
NFA025_2016_ED5}: Screen8
NFA025_2016_ED5}: Screen9
NFA025_2016_ED5}: Screen10
Object
fr.cnam.nfa025.ed5.ActiviteBille$1
Context
fr.cnam.nfa025.ed5.ActiviteCombatLive$1
fr.cnam.nfa025.ed5.ActiviteCombatLive$2
fr.cnam.nfa025.ed5.ActiviteCombatLive$3
fr.cnam.nfa025.ed5.ActiviteHorloge$1
Handler
Thread
TimerTask
Arme
Bille
BroadcastReceiver
De
DuelImpl
LCLog
MesResultats
Personnage
View
ContextWrapper
fr.cnam.nfa025.ed5.ActiviteHorlogeThread$1
fr.cnam.nfa025.ed5.ActiviteHorlogeTimer$1
fr.cnam.nfa025.ed5.DownloadServiceWiFiOnlyActivity$1
fr.cnam.nfa025.ed5.ActiviteHorlogeThread$2
Arene
DownloaderThread
fr.cnam.nfa025.ed5.ActiviteHorlogeTimer$2
ConnectivitySupervisor
Soldat
VueBille
ContextThemeWrapper
Service
Activity
DownloadServiceWiFiOnly
ActiviteBille
ActiviteCombatLive
ActiviteHorloge
ActiviteHorlogeThread
ActiviteHorlogeTimer
ClickHorloge
DownloadServiceWiFiOnlyActivity
Runnable
Serializable
OnClickListener
Combattant
Constantes
Duel
ResultatAttaque
AndroidManifest.xml
src/fr/cnam/nfa025/ed5/ActiviteBille.java
src/fr/cnam/nfa025/ed5/ActiviteCombatLive.java
src/fr/cnam/nfa025/ed5/ActiviteHorloge.java
src/fr/cnam/nfa025/ed5/ActiviteHorlogeThread.java
src/fr/cnam/nfa025/ed5/ActiviteHorlogeTimer.java
src/fr/cnam/nfa025/ed5/Arene.java
src/fr/cnam/nfa025/ed5/Arme.java
src/fr/cnam/nfa025/ed5/Bille.java
src/fr/cnam/nfa025/ed5/ClickHorloge.java
src/fr/cnam/nfa025/ed5/Combattant.java
src/fr/cnam/nfa025/ed5/ConnectivitySupervisor.java
src/fr/cnam/nfa025/ed5/Constantes.java
src/fr/cnam/nfa025/ed5/De.java
src/fr/cnam/nfa025/ed5/DownloadServiceWiFiOnly.java
src/fr/cnam/nfa025/ed5/DownloadServiceWiFiOnlyActivity.java
src/fr/cnam/nfa025/ed5/Duel.java
src/fr/cnam/nfa025/ed5/LCLog.java
src/fr/cnam/nfa025/ed5/Personnage.java
src/fr/cnam/nfa025/ed5/ResultatAttaque.java
src/fr/cnam/nfa025/ed5/Soldat.java
src/fr/cnam/nfa025/ed5/VueBille.java
res/layout/bille.xml
res/layout/dwl_controller.xml
res/layout/ex2_main.xml
res/layout/horloge.xml
res/layout-land/dwl_controller.xml
res/values/bille_str.xml
res/values/dimens.xml
res/values/dwl_str.xml
res/values/ex2_strings.xml
res/values/strings.xml
res/values-fr/dwl.xml

 Tous les fichiers  Masquer les fichiers 


































Éléments de correction de l'ED6
Elements de correction : NFA025_2016_ED7

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED7/Files.jar (12 Ko)

Exercice 1
La solution proposée ici va plus loin que ce qui était demandé à l'examen. En particulier au niveau graphiques qui vous donne un autre exemple de la mise en œuvre de la méthode onDraw() et de l'objet Canvas. Ce qui reste important ici est la mise en œuvre des capteurs.
Exercice 2
L'activité Magnetometre met en œuvre le capteur idoine et permet de détecter des variation du champ magnétique, le seuil de déclenchement est peut-être un peu trop haut (il a été paramétré pour un téléphone dont le magnétomètre était assez peu sensible).
Exercice 3
Le chronomètre utilise l'API standard de java java.lang.System.currentTimeMillis(). Cette méthode retourne une valeur entière de type long représentant le nombre millisecondes écoulées depuis le 1 janvier 1970 à 0h. On peut donc en déduire assez facilement le nombre de secondes écoulées.

La mise en œuvre du détecteur de proximité est assez classique. Par contre un bon nombre de téléphone ne donne pas réellement de mesure de distance. Mais donne une valeur à 0 en dessous d'un certains seuil et une valeurs de plusieurs centimètres (décorrélée de la distance réelle) au dessus de ce seuil.

Exercice 4
LA mise en œuvre du service de localisation ici repose sur l'utilisation du provider GPS qui implique de demander l'autorisation FINE_LOCATION. D'autres solutions aurait pue être proposées (Dans le principe la solution reposerait sur les même principes).
NFA025_2016_ED7}: Screen1
Object
fr.cnam.nfa025.ed7.ActiviteOuSuisJe$1
Context
DetecteurDeSecousse
fr.cnam.nfa025.ed7.LaBoussoleSimple$1
fr.cnam.nfa025.ed7.LaBoussoleSimple$2
View
ContextWrapper
fr.cnam.nfa025.ed7.LaBoussoleSimple$3
ContextThemeWrapper
Activity
ActiviteOuSuisJe
ActivitePtitsMessagesSecoues
LaBoussoleSimple
LocationListener
SensorEventListener
AndroidManifest.xml
src/fr/cnam/nfa025/ed7/ActiviteOuSuisJe.java
src/fr/cnam/nfa025/ed7/ActivitePtitsMessagesSecoues.java
src/fr/cnam/nfa025/ed7/LaBoussoleSimple.java
res/layout/ex2_main.xml
res/layout/ex3_main.xml
res/values/strings.xml

 Tous les fichiers  Masquer les fichiers 








Éléments de correction de l'ED7
Elements de correction : NFA025_2016_ED6

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2016_ED6/Files.jar (162 Ko)

Les corrections sont incomplètes, faute de temps pour les rédiger correctement. Une mise à jour plus complète sera mise en ligne très bientôt.
Exercice 1
La solution donnée est assez simple.
Cependant, on utilise dans ce premier exemple du code permettant de mettre en œuvre la géolocalisation pour enregistrer des données de trajectoire. Un exemple plus complet sera donné ultérieurement.
De plus, une implantation correcte de la base de données devrait nécessiter de créer des accesseurs pour chaque champ de la classe Position.
Exercice 2
Idem pour et exercice qui n'intègre pas complètement la gestion de la découverte de sort etc...
Exercice 3
Cet exercice est un peu plus complet que les exercices précédents et gère les principales fonctionnalités du gestionnaire de BD. En outre cet exemple illustre l'utilisation d'un gestionnaire de BD (sous classe de SQLiteOpenHelper) partagé entre plusieurs activités.
NFA025_2016_ED6}: Screen1
NFA025_2016_ED6}: Screen2
NFA025_2016_ED6}: Screen3
NFA025_2016_ED6}: Screen4
NFA025_2016_ED6}: Screen5
NFA025_2016_ED6}: Screen6
Object
Context
Club
SQLiteOpenHelper
fr.cnam.nfa025.ed6.JeuDeDonnees$1
Judoka
fr.cnam.nfa025.ed6.JudokaListActivity$1
Outils
Position
ProfilData
Sortileges
ContextWrapper
DBJeu
DBTrajectoire
DonneesJudo
ContextThemeWrapper
Activity
AddJudokaActivite
JeuDeDonnees
JudokaListActivity
Profil
SaisieInfoClub
Trajectoires
OnItemSelectedListener
SensorEventListener
OnItemClickListener
LocationListener
AndroidManifest.xml
src/fr/cnam/nfa025/ed6/AddJudokaActivite.java
src/fr/cnam/nfa025/ed6/DBJeu.java
src/fr/cnam/nfa025/ed6/DBTrajectoire.java
src/fr/cnam/nfa025/ed6/DonneesJudo.java
src/fr/cnam/nfa025/ed6/JeuDeDonnees.java
src/fr/cnam/nfa025/ed6/JudokaListActivity.java
src/fr/cnam/nfa025/ed6/Outils.java
src/fr/cnam/nfa025/ed6/Profil.java
src/fr/cnam/nfa025/ed6/SaisieInfoClub.java
src/fr/cnam/nfa025/ed6/Trajectoires.java
res/drawable/hp_wand.png
res/layout/add_judoka.xml
res/layout/ed6_ex1.xml
res/layout/ed6_ex2.xml
res/layout/ed6_ex2_profil.xml
res/layout/judo_list.xml
res/layout/saisie_info_club.xml
res/values/ed6_ex2_strings.xml
res/values/judo_str.xml
res/values/strings.xml
assets/fonts/harryp.TTF
assets/fonts/hogwartswizard.TTF
assets/fonts/parryhotter.ttf

 Tous les fichiers  Masquer les fichiers 























Notice: Undefined index: 4 in /mnt/133/sdb/d/9/jeanferdysusini/jfs_php_utilities.inc on line 240


Notice: Undefined index: 4 in /mnt/133/sdb/d/9/jeanferdysusini/jfs_php_utilities.inc on line 240


Notice: Undefined index: 4 in /mnt/133/sdb/d/9/jeanferdysusini/jfs_php_utilities.inc on line 240

Corrections faites en classe

Éléments de correction de l'exercice combat dans l'arène
Elements de correction : NFA025_2018_ED2_pres

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_ED2_pres/Files.jar (4 Ko)

Correction très libre de l'ED 2 exercice 4
Object
Personnage
Arene
Context
De
Arme
PersonnageArme
ContextWrapper
ContextThemeWrapper
Activity
Combat
./AndroidManifest.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/ed2/combat/Combat.java
src/fr/cnam/nfa025/ed2/combat/Personnage.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android de l'activité combat

définition des chaînes de caractères visibles par l'utilisateur.

source code Combat.java

source code Personnage.java

Éléments de correction de l'exercice Chef d'orchestre
Elements de correction : NFA025_2018_ED4_pres

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_ED4_pres/Files.jar (11 Ko)

Object
Context
ContextWrapper
ContextThemeWrapper
Activity
Activite2
IntentMaster
./AndroidManifest.xml
res/drawable/cnam.png
res/layout/act2.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/intentMaster/IntentMaster.java
src/fr/cnam/nfa025/intentMaster/Activite2.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

drawable android

layout android

layout android

values android

source code IntentMaster.java

source code Activite2.java

Éléments de correction de l'exercice Message et Réglages
Elements de correction : NFA025_2018_ED3_pres

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_ED3_pres/Files.jar (4 Ko)

Object
Context
Utils
ContextWrapper
ContextThemeWrapper
Activity
Reglages
RichMessage
./AndroidManifest.xml
res/layout/main.xml
res/layout/reglages.xml
res/values/strings.xml
src/fr/cnam/nfa025/rich_message/RichMessage.java
src/fr/cnam/nfa025/rich_message/Utils.java
src/fr/cnam/nfa025/rich_message/Reglages.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

values android

source code RichMessage.java

source code Utils.java

source code Reglages.java

Layouts
Elements de correction : NFA025_2018_Layout

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_Layout/Files.jar (3 Ko)

Object
Context
ContextWrapper
ContextThemeWrapper
Activity
Layout
./AndroidManifest.xml
res/layout/main.xml
res/layout/mainrl.xml
res/layout/maintl.xml
res/values/strings.xml
res/values-land/strings.xml
src/fr/cnam/nfa025/exo_layout/Layout.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

layout android

values android

values android

source code Layout.java

Exercice des horloges
Elements de correction : NFA025_2018_Horloges

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_Horloges/Files.jar (4 Ko)

Object
Action
Context
TimerTask
Thread
Action
MiseAJourTV
ContextWrapper
MaTache
MiseAJour
ContextThemeWrapper
Activity
HorlogeSimple
HorlogeTimer
Horloge
Runnable
./AndroidManifest.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/horloges/Horloge.java
src/fr/cnam/nfa025/horloges/HorlogeSimple.java
src/fr/cnam/nfa025/horloges/HorlogeTimer.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

values android

source code Horloge.java

source code HorlogeSimple.java

source code HorlogeTimer.java

Service de téléchargement
Elements de correction : NFA025_2018_Download

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_Download/Files.jar (4 Ko)

Object
Context
Thread
Util
ContextWrapper
Telechargement
ContextThemeWrapper
Service
Activity
ServiceTelechargement
DownloadActivity
./AndroidManifest.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/download/Util.java
src/fr/cnam/nfa025/download/ServiceTelechargement.java
src/fr/cnam/nfa025/download/DownloadActivity.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

values android

source code Util.java

source code ServiceTelechargement.java

source code DownloadActivity.java

Exercice du niveau à bulle
Elements de correction : NFA025_2018_NiveauABulle

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_NiveauABulle/Files.jar (4 Ko)

Object
Context
View
fr.cnam.nfa025.trousse_a_outils.NiveauABulle$1
Util
ContextWrapper
VueNiveauABulle
ContextThemeWrapper
Activity
NiveauABulle
SensorEventListener
Runnable
./AndroidManifest.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/trousse_a_outils/VueNiveauABulle.java
src/fr/cnam/nfa025/trousse_a_outils/Util.java
src/fr/cnam/nfa025/trousse_a_outils/NiveauABulle.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

values android

source code VueNiveauABulle.java

source code Util.java

source code NiveauABulle.java

Base de données : collection de trésors
Elements de correction : NFA025_2018_CollectionTresors

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_CollectionTresors/Files.jar (4 Ko)

Object
Tresor
SQLiteOpenHelper
Utils
Context
DB_Tresors
ContextWrapper
ContextThemeWrapper
Activity
CollectionDeTresors
./AndroidManifest.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/tresors/Utils.java
src/fr/cnam/nfa025/tresors/Tresor.java
src/fr/cnam/nfa025/tresors/CollectionDeTresors.java
src/fr/cnam/nfa025/tresors/DB_Tresors.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

values android

source code Utils.java

source code Tresor.java

source code CollectionDeTresors.java

source code DB_Tresors.java

SQLite Démo faite en cours.
Elements de correction : NFA025_2018_DBDemo

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA025_2018_DBDemo/Files.jar (142 Ko)

Object
Context
SQLiteOpenHelper
Util
ContextWrapper
MaBaseDeDonnees
ContextThemeWrapper
Activity
MainActivity
./AndroidManifest.xml
res/drawable/ic_launcher.png
res/drawable-land/ic_launcher.png
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa025/sqlite_demo/Personne.java
src/fr/cnam/nfa025/sqlite_demo/Util.java
src/fr/cnam/nfa025/sqlite_demo/MainActivity.java
src/fr/cnam/nfa025/sqlite_demo/MaBaseDeDonnees.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

drawable android

drawable android

layout android

values android

source code Personne.java

source code Util.java

source code MainActivity.java

source code MaBaseDeDonnees.java


NFA024 : Principes et programmation système et réseau pour smart-phones et tablettes tactiles

Support de cours et liens utiles

Éléments de correction des TPs

Corrections faites en classe

Éléments de correction du TP1 : illustration du cycle de vie
Elements de correction : NFA024_2018_TP1

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP1/Files.jar (4 Ko)

Object
Context
Util
ContextWrapper
ContextThemeWrapper
Activity
FirstTest
./AndroidManifest.xml
res/layout/main.xml
res/layout/main_1.xml
res/values/strings.xml
res/values-fr/strings.xml
res/values-land/strings.xml
src/fr/cnam/nfa024/tp1/Util.java
src/fr/cnam/nfa024/tp1/FirstTest.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

values android

values android

values android

source code Util.java

source code FirstTest.java

Éléments de correction du TP2 : calculatrices
Elements de correction : NFA024_2018_TP2

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP2/Files.jar (5 Ko)

Object
Context
Utils
ContextWrapper
ContextThemeWrapper
Activity
CalcBasic
DisplayText
Calculatrice
./AndroidManifest.xml
res/layout/basic.xml
res/layout/calculatrice.xml
res/layout/disp.xml
res/values/strings.xml
src/fr/cnam/nfa024/calc/Calculatrice.java
src/fr/cnam/nfa024/calc/CalcBasic.java
src/fr/cnam/nfa024/calc/Utils.java
src/fr/cnam/nfa024/calc/DisplayText.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

layout android

values android

source code Calculatrice.java

source code CalcBasic.java

source code Utils.java

source code DisplayText.java

Éléments de correction du TP2 : dessins de figures
Elements de correction : NFA024_2018_TP3

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP3/Files.jar (5 Ko)

Object
View
Context
Animate
Figure
VueFigure
ContextWrapper
Carre
Rond
Triangle
ContextThemeWrapper
RectangleArrondi
Activity
MainActivity
SensorEventListener
Runnable
./AndroidManifest.xml
res/layout/main.xml
res/layout/main_spinner.xml
res/values/strings.xml
src/fr/cnam/nfa024/dessine/VueFigure.java
src/fr/cnam/nfa024/dessine/MainActivity.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

values android

source code VueFigure.java

source code MainActivity.java

Éléments de correction du TP4 : La boussole
Elements de correction : NFA024_2018_TP4

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP4/Files.jar (3 Ko)

Object
Context
View
ContextWrapper
Direction
ContextThemeWrapper
Activity
Boussole
SensorEventListener
./AndroidManifest.xml
res/layout/boussole.xml
res/values/strings.xml
src/fr/cnam/nfa024/boussole/Boussole.java
src/fr/cnam/nfa024/boussole/Direction.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

values android

source code Boussole.java

source code Direction.java

Éléments de correction du TP5 : Carnet d'adresses
Elements de correction : NFA024_2018_TP5

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP5/Files.jar (6 Ko)

Object
Context
Util
SQLiteOpenHelper
Contact
ContextWrapper
DBManager
ContextThemeWrapper
Activity
CreerContact
VoirContacts
Carnet
Serializable
./AndroidManifest.xml
res/layout/contact.xml
res/layout/principal.xml
res/layout/tout_voir.xml
res/values/strings.xml
src/fr/cnam/nfa024/carnet/DBManager.java
src/fr/cnam/nfa024/carnet/Util.java
src/fr/cnam/nfa024/carnet/Contact.java
src/fr/cnam/nfa024/carnet/CreerContact.java
src/fr/cnam/nfa024/carnet/Carnet.java
src/fr/cnam/nfa024/carnet/VoirContacts.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

layout android

values android

source code DBManager.java

source code Util.java

source code Contact.java

source code CreerContact.java

source code Carnet.java

source code VoirContacts.java

Éléments de correction du TP6 : Les bornes Belib
Elements de correction : NFA024_2018_TP6

 ?  Description  Fichiers  Classes  Captures d'écran  Tout voir  Rien voir Fichiers : NFA024_2018_TP6/Files.jar (5 Ko)

Object
Handler
Context
BorneInfo
fr.cnam.nfa024.belib.BelibActivity$2
Util
Thread
fr.cnam.nfa024.belib.BelibActivity$1
ContextWrapper
OpenDataAcces
ContextThemeWrapper
Activity
BelibActivity
LocationListener
OnItemClickListener
./AndroidManifest.xml
res/layout/liste.xml
res/layout/main.xml
res/values/strings.xml
src/fr/cnam/nfa024/belib/BelibActivity.java
src/fr/cnam/nfa024/belib/Util.java
src/fr/cnam/nfa024/belib/OpenDataAcces.java

 Tous les fichiers  Masquer les fichiers 

Le manifest android de l'application.

layout android

layout android

values android

source code BelibActivity.java

source code Util.java

source code OpenDataAcces.java