Programmation mobile: Android PIF6004 Sujets Spéciaux en informatique II Programmation mobile: Android Sujets Introduction Anatomie d’une application Exemple d’une application (voir: Image Recognition on an Android Mobile Phone, Kristian Bon Jean Ive Billiaums)
Introduction Architecture d’Android
Architecture d’Android Introduction Architecture d’Android Android est basé sur un HAL LINUX, fournissant des une multitude de pilotes existants, la gestion de la mémoire, gestion des processus/threads, gestion de la sécurité et des accès réseau La couche Libraries, écrites en C/C++, composée du Surface Manager, utilisé pour l’affichage des diverses fenêtres. OpenGL/ES (3D) et SGL (2D) sont les librairies graphiques du système, le Media Framework offre les fonctionnalités pour manipuler les formats media, ainsi que les fonts bitmap et vector, SQLite est le système de gestion de base de données, Webkit est le fureteur fournit par Android. Le android Runtime contient la machine virtuelle Dalvik qui interprète les Dex-files (byte code) qui résultent de la conversion de fichiers .jar lors du buildtime
Architecture d’Android Introduction Architecture d’Android La couche Application Framework, écrites en JAVA, est composée des applications venant avec le téléphone (ou tablette). Le Activity Manager gère le cycle de vie de chaque application. Le Package Manager fait un suvis des applications installés sur l’appareil. Le Windows Manager est une abstraction du Surface Manager. Le Telephony Manager contient les API des applications du téléphone (tablette). Le Content Provider est un framework qui permet l’échange de données entre les applications. Le Resource Manager permet de stocker des chaînes, images etc… Le View System contient des boutons, des listes et gère aussi la redirection des événements, les layouts, les dessins. Le Location Manager, le Notification Manager et XMPP Manager sont d’autres APIs
Architecture d’Android Introduction Architecture d’Android La couche Application, contient toutes les applications: Home, Contacts, fureteur, applications User
Introduction Les APIs Location Manager: permet la réception d’informations géographiques, il peut vous permettre de savoir votre localisation et par des Intents vous avertir quand vous vous approchez d’un endroit donné XMPP Service: permet la transmission de messages à d’autres systèmes Android, ces messages sont des Intents avec un nom et une valeur, ces messages peuvent contenir divers types d’information. Notification Manager: permet l’ajout de notifications dans la barre de status
Introduction Les APIs Views: Lists views, Grid views, Gallery views, boutons, checkbox, Map view (permet aux développeurs d’intégrer des cartes aux applications, Web view (permet d’intégrer du contenu HTML à une application
Anatomie d’une application Une application Android peut être divisée en 4 composantes: Activity, IntentReceiver, Service, ContentProvider Une Activity est une interface utilisateur, une application mail comporte 3 activités: Mail list, une fenêtre pour afficher les messages, une fenêtre pour composer les courriels. Le IntentReceiver est une fonction exécutée lors de l’occurrence d’un événement externe Un Service est une tâche (méthode, code) qui ne possède pas d’interface et qui fonctionne en arrière-plan (backgroud) Le ContentProvider permet le partage de données entre processus/threads et applications
Anatomie d’une application Le fichier AndroidManifest.xml contient des informations chargées au démarrage d’une application et ce avant l’exécution du code de l’application Ce fichier décrit les composantes (ex: activity etc..), définit entre autre quelle activity est démarrée lors du démarrage de l’application. Permet aussi de définir certaines permissions, comme les accès internet, le nom et l’icône de l’application sont aussi définis dans ce fichier, les librairies utilisées sont aussi identifiées
Anatomie d’une application
Anatomie d’une application Phases de création (build) d’un package Android
Exemple d’une application Reconnaissance d’images d’œuvre d’art (Android Museum Guide): Structure de contrôle de l’application
Exemple d’une application Base de données: structure
Exemple d’une application Base de données: création et utilisation Ouverture de la base de données, un objet DBAdaptor est instantié quand la méthode open() est exécutée
Exemple d’une application Base de données: création et utilisation Création des tables
Exemple d’une application Base de données: création et utilisation Création des tables (table vector)
Exemple d’une application Base de données: création et utilisation Informations dans un fichier XML
Exemple d’une application Base de données: création et utilisation Analyse lexicale (parsing) du fichier XML: méthode startElement()
Exemple d’une application Base de données: création et utilisation Extraction des données du fichier XML
Exemple d’une application Base de données: création et utilisation Écriture des données du fichier XML sur la Bd Méthode commitPainting()
Exemple d’une application Démarrage de l’application: lecture de la Bd
Exemple d’une application En sélectionnant Start Tour, la Tour-activity est démarrée, permet d’afficher une image preview
Exemple d’une application Le bouton « takePicture » est associé à une méthode OnClickListener() qui elle appelle la méthode takePicture()
Exemple d’une application Recherche d’image (threading): classe GPDS1
Exemple d’une application Recherche d’image (threading): classe GPDS1
Exemple d’une application Recherche d’image (threading): classe GPDS1 calculateBatch()
Exemple d’une application Recherche d’image (threading): méthode findMatch()
Exemple d’une application Recherche d’image (threading): méthode findMatch() Calcul de la distance
Exemple d’une application Recherche d’image (threading): méthode findMatch() < 0.65
Exemple d’une application Affichage des résultats: Classe ShowInfo, méthode setInfoFromPID()
Exemple d’une application Résultats:
Exemple d’une application Résultats: fichier main.xml contient la description du layout ( 1 textView, 2 boutons)
Exemple d’une application Résultats: liaison du fichier main.xml avec l’activité principale
Exemple d’une application Résultats: ButtonListener permet de déterminer quelle bouton est enfoncé
Exemple d’une application Résultats: Tour screen a un layout contenant un camera preview
Exemple d’une application Résultats: Création du layout contenant un camera preview en Java
Exemple d’une application Résultats: Affichage des informations
Exemple d’une application Résultats: Affichage des informations: layout avec tabs, ImageView et WebView
Exemple d’une application Résultats: Affichage des informations: layout avec tabs, ImageView et WebView …..
Exemple d’une application Résultats: Affichage des informations: classe ShowInfo.java
Exemple d’une application Résultats: Affichage des informations: classe ShowInfo.java ….