Mise à jour : (Samedi 04 Février 2023, 16:53)
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 :
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED1/Files.jar (39 Ko)
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.
Combat
implante en quelque sorte le «moteur de jeu» qui va calculer de façon itérative les différentes actions du combat.
Personnage
définit des objets personnage avec leurs caractéristiques principales :
Arme
implante une arme avec son bonus d"attaque et les dégâts maximum qu'elle peut infliger.
PersonnageArme
qui étend la classe Personnage
pour lui permettre de tenir un arme.
De
implante le tirage de dés en proposant en quelques sortes des fonctions utilitaires (méthodes de classe) basées sur Math
.random
()
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.
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.
Pour implanter cet exercice on crée une unique classe RendezVous
.
Comment aurait-on pu forcer un peu plus ce caractère imutable de la classe ?
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED2/Files.jar (53 Ko)
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.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é.
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.
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).
Voir directement le code de la solution.
Les erreurs sont commentées dans le code.
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
()
)
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 fichierAM_6.xml
pour avoir une idée du fichier à écrire.
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
…
|
||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_ED2/Files.jar (9 Ko)
La correction est dans les commentaires du fichier HoloWorld.java
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 :
AndroidManifest.xml
et qui se termine par la production d'un code équivalent au suivant :
fr/cnam/nfa025/ed2/part2/Trousse.java
.
fr/cnam/nfa025/ed2/part2/Menu.java
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
)
).
AndroidManifest.xml
ayant la forme suivante :
fr/cnam/nfa025/ed2/part2/MusicController.java
|
||||||||||||||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED3/Files.jar (180 Ko)
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).
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
sur la vue passée en paramètre permettrait de discriminer le click sur un bouton ou sur un autre.
getId
()
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.
ex1_string.xml
contient la liste des ressource chaînes de caractères associée à cette interface.
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.
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.
.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…
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
.
LinearLayout
. En particulier lorsque plus de 2 éléments sont à placer.
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_ED3/Files.jar (37 Ko)
holo_set.xml
main_guide.xml
propose une de ces solutions.
trousse.xml
a été modifié en conséquence et les ressources ajoutées au fichier res/strings.xml
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.
main_forme.xml
permet produire l'interface à l'écran. cf capture d'écran.
res/strings.xml
.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
./ | 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
? 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
et startActivity
()
. Mais les intents ne servent pas qu'à cela, nous le découvrirons à l'occasion d'autres exercices plus tard dans d'autres séries.
startActivityForResult
()
startActivity
()
.
startActivityForResult
()
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
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED5/Files.jar (34 Ko)
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED7/Files.jar (12 Ko)
onDraw
()
et de l'objet Canvas
. Ce qui reste important ici est la mise en œuvre des capteurs.
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2016_ED6/Files.jar (162 Ko)
SQLiteOpenHelper
) partagé entre plusieurs activités.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_ED2_pres/Files.jar (4 Ko)
|
||||||||||||||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_ED4_pres/Files.jar (11 Ko)
|
||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_ED3_pres/Files.jar (4 Ko)
|
||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_Layout/Files.jar (3 Ko)
|
||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_Horloges/Files.jar (4 Ko)
|
||||||||||||||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_Download/Files.jar (4 Ko)
|
||||||||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_NiveauABulle/Files.jar (4 Ko)
|
||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_CollectionTresors/Files.jar (4 Ko)
|
||||||||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA025_2018_DBDemo/Files.jar (142 Ko)
|
||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP1/Files.jar (4 Ko)
|
||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP2/Files.jar (5 Ko)
|
||||||||||||||||||||||||
./ | 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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP3/Files.jar (5 Ko)
|
||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP4/Files.jar (3 Ko)
|
||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP5/Files.jar (6 Ko)
|
||||||||||||||||||||||||||||||||||||
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
? Description Fichiers Classes Captures d'écran Tout voir Rien voir Fichiers : NFA024_2018_TP6/Files.jar (5 Ko)
|
||||||||||||||||||||||||||||||||||||
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