Anniversaire

 

annivVoici un petit programme illustrant tout ce que j'ai pu raconter (ou à venir) sur le développement sous Android.

 

Les activités

MainActivity: C'est l'activité principale (d'où son nom...). Utilisation d'une image en background en drawable et drawable-land.

AProposDeActivity: A propos de l'application, activité très simple qui va:

  • Mettre en oeuvre un TextView pouvant gérer automatiquement un lien vers un site (en l'occurence supertos.free.fr !) (cf. layout a_propos_de.xml.)
  • L'utilisation d'une intention implicite permettant de lancer un navigateur quelconque afin que l'utilisateur puisse connaître la dernière version de l'application. Cette fonction étant disponible suite à un clique sur le bouton version impliquant l'utilisation d'un listener OnClickListener.
  • L'utilisation du PackageManager afin de connaître et d'afficher la version de l'application en cours.

ParamActivityAlarm: Permet de paramétrer l'heure utilisée par le service ServiceCtrlAnniversaire exécuté par les alarmes pour lancer des contrôles de dates d'anniversaire avec celle du jour.

ParamActivityRappel: Permet de paramétrer la durée entre une alarme et les rappels.

ParamActivityNotif: Permet de préciser comment un utilisateur sera informé des anniversaires

  • Utilisation d'objets boutons toggle (interrupteur on/off) pour paramétrer les notifications qui peuvent être envoyées
  • La détection de clique sur des boutons pour effectuer une opération associée.

ImportExportActivity: Permet de sauver les données de la base sous forme de fichiers XML zipés sur la carte SD et de les recharger. L'écran est volontairement bloqué en mode portrait par code.

ListEventActivity: Donne dans une liste l'ensemble des évènements (anniversaires) que l'utilisateur a enregistré pour lancer une activité de consultation/modification d'un évènement. Permet aussi la suppression ou la création de nouveau évènement.

  • Personnalisation d'une liste (cf. MyListAdaptater).

CreationEventActivity: Création/modification/consultation du détail d'un évènement.

 

Pratiquement toutes les activités auront à traiter:

La sauvegarde et la restauration des données saisies en cas d'arrêt de l'activité/relance: onSaveInstanceState.

L'utilisation de tables SQLite pour affecter des objets à l'écran avec des valeurs ou pour enregistrer les saisies faites via bean et DAO.

 

Les services

Trois services sont créés:

Le premier est ServiceAutoRun: C'est à lui que revient la programmation des alarmes qui permettra le lancement du contrôle d'anniversaire à un moment T.

 

Le second service est ServiceCtrlAnniversaire: C'est lui qui va indiquer les anniversaires par notification s'il y en a à fêter.

 

Le troisième service est ServiceUpdateAppWidget: Il a en charge de récupérer les enregistrements anniversaires en cours ou, s'il n'y en a pas, la liste des futurs anniversaires afin de mettre à jour le contenu de l'AppWidget Anniversaire en conséquence.

 

BroadCast receiver

BroadcastReceiverAutoRun: cette classe permet de lancer un service à la fin du boot d'un device androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...). Utilisation startServiceIntent sur une intention explicite.

 

AppWidget

WidgetConfigureActivity: Non vraiment exploité pour le moment. Configuration d'un AppWidget déposé sur l'écran d'accueil.

AnniversaireWidget: AppWidget simple qui permet d'afficher les anniversaires en cours ou ceux qui vont bientôt arriver.

 

Autres classes

Des classes pour gérer la base de données SqLite.

SqLiteAnniversaire pour une connexion à la base.

DaoAnniversaires et autres classes DAO, DAOFactory et les beans qui vont bien (BeanAnniversaires, BeanEtat, BeanParametres): une solution pour résoudre le problème évoqué entre des bases de données SQL et le développement orienté objet.

AnnivSqLiteOpenHelper pour gérer la connexion, création et l'alimentation de la BdD.

LogAnniv, une classe pour gérer des logs.

FiltreNom permet de filtrer les fichiers pour n'avoir que les .xml. Utilisé suite à l'exportation (XmlAnniversaire) des données de la base pour zipper (ZipAnniversaire) les fichiers .xml

XmlAnniversaire permet de lire/écrire des flux XML. Détection d'une carte SD pour création de répertoire anniversaire qui contiendra les données xml (éventuellement zippées).

ZipAnniversaire pour zipper/dézipper des fichiers.

MyListAdaptater personnalisation du contenu de la liste ListEventActivity.

ContactAnniv récupération d'informations sur un contact.

Le code

Source:Image non trouvée !et l'exécutable (apk) zippéImage non trouvée ! ou installableImage non trouvée !. Pour installer les apk, n'oubliez pas d'autoriser les sources inconnues !

Pour recompiler le projet, créez un projet androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) application project avec application et projet nommés Anniversaire et un package à fr.free.supertos.anniversaire

Image non trouvée !

Une fois le projet créé, supprimez le répertoire res, src et le fichier AndroidManifest.xml

Il ne reste plus qu'à y mettre le contenu du zip à la place et à rafraichir le projet...

 

Bug

J'ai oublié de raffraichir l'affreux appWidget disponible éventuellement sur l'écran d'accueil. Donc si vous n'arrêtez pas votre portable, la liste des anniversaires affichée ne se mettra pas à jour le lendemain...

 

L'ergonomie

Tout cela pourrait être bien plus beau à l'affichage. Mais ce n'était pas forcement le but recherché ici dans la version 1.03 !