APPLICATIONS JAVA. 1. Android. Développement d'activités Java sous Android. Android Partie I. L'architecture du système Android. Application Android



Documents pareils
TP SIN Programmation sur androïde Support : eclipse

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

TP au menu «UI ANDROID»

Tutorial pour une application simple

1.3 Gestion d'une application

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Warren PAULUS. Android SDK et Android x86

Les fondamentaux du développement d applications Java

TD/TP 1 Introduction au SDK d Android

Android 4 Les fondamentaux du développement d'applications Java

TP2 : Client d une BDD SqlServer

Projet Android (LI260) Cours 2

Installation et prise en main

SOMMAIRE

Java DataBaseConnectivity

De Java à Android version 0.1

Créer des applications Android

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

Développement sous Android

Education Delivery Intelligent Tool

Table des matières. Partie I Concepts de base Préface... VII

TP1 : Initiation à Java et Eclipse

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Création d un service web avec NetBeans 5.5 et SJAS 9

Programmation mobile avec Android

Edutab. gestion centralisée de tablettes Android

Introduction ANDROID

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Introduction à JDBC. Accès aux bases de données en Java

Programmation Mobile Android Master CCI

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Assistance à distance sous Windows

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Votre premier projet Android

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

BIRT (Business Intelligence and Reporting Tools)

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Terminaux Mobiles Communicants

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Introduction à Eclipse

Plan du cours. Historique du langage Nouveautés de Java 7

La base de données XML exist. A. Belaïd

Développement Android. J.-F. Couchot

Optimiser pour les appareils mobiles

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Programmation Android L3 informatique

Interfaces graphiques avec l API Swing

1. Base de données SQLite

LES ACCES ODBC AVEC LE SYSTEME SAS

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Application web de gestion de comptes en banques

Projet de Veille Technologique

Android en action. Abdelkader Lahmadi Université de Lorraine

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

LES TABLETTES : GÉNÉRALITÉS

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Eclipse atelier Java

Compte Rendu d intégration d application

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Android et le Cloud Computing

Module BD et sites WEB

TAGREROUT Seyf Allah TMRIM

Encore plus de widgets et de conteneurs

Table des matières Introduction Démarrage Les composants graphiques... 26

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Tutoriel d installation de Hibernate avec Eclipse

GUIDE DE DÉMARRAGE RAPIDE

SECURIDAY 2013 Cyber War

Programmer en JAVA. par Tama

contact@nqicorp.com - Web :

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Guide de l'utilisateur de l'application mobile

Guide pas à pas pour l'utilisation de la Console de gestion des stratégies de groupe

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Mettre en place un accès sécurisé à travers Internet

Dongle WiFi de QUMI Manuel de l utilisateur

Partager sa connexion Internet via le WiFi avec Windows 8

as Architecture des Systèmes d Information

MANUEL PROGRAMME DE GESTION DU CPL WI-FI

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Java 7 Les fondamentaux du langage Java

Capture Pro Software. Démarrage. A-61640_fr

ECLIPSE ET PDT (Php development tools)

DirXML License Auditing Tool version Guide de l'utilisateur

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Android UIThread, Thread, Handler et AsyncTask

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Compte-rendu de projet de Système de gestion de base de données

Android. Présentation d Android. Florent Garin

Tutoriel Android. Pour démarrer la programmation d'applications Android

contact@nqicorp.com - Web :

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?

Tutoriel Android - TP de prise en main

COMMENT INSTALLER LE SERVEUR QIPAIE

Transcription:

Applications Java sous Android IvMad, 2011-2014 2 APPLICATIONS JAVA Android Partie I 1. Android Développement d'activités Java sous Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet. Ivan MADJAROV - 2014 Applications Java sous Android IvMad, 2011-2014 3 L'architecture du système Android Android est un système d'exploitation basé Linux pour les appareils mobiles (Smartphone et Tablette) avec une interface de programmation Java. Le SDK Android a tous les outils nécessaires pour le développement d'applications: Compilateur Débogueur Emulateur Machine virtuelle Applications Java sous Android IvMad, 2011-2014 4 Application Android Android estunsecrééparl'open Handset Alliance dirigée par Google. Android propose une interface de programmation Java avec sa propre machine virtuelle DVM (Virtual Machine Dalvik). L'interface fournit des outils pour la compilation, le débogage et un simulateur de périphérique mobile est embarqué. Android utilise une machine virtuelle spéciale. Son byte-code est incompatible avec celui de Java standard (Oracle). Un outil "dx" est proposé pour convertir un fichier Java classe dans le format Android "dex" (Dalvik exécutable). Une application Android est emballée dans un fichier.apk (Android Package) par AAPT (Android Asset Packaging Tool) Pour développer Google fournit ADT (Android Development Tools) pour l'ide Eclipse et pour l'ide NetBeans de Sun (Oracle).

Applications Java sous Android IvMad, 2011-2014 5 Application Android L'ADT effectue automatiquement la conversion d'une classe "dex" en.apk au cours du déploiement. Android supporte le graphisme 2-D et 3-D avec OpenGL library. Le stockage de données dans une BD est pris en charge par SQLite. SQLite est une Open Source Database intégrée dans Android. SQLite supporte les fonctionnalités standards pour une BDR telles que SQL syntaxe, la gestion des transactions et "prepared statements". Une application Android s'exécute dans son propre processus et sous son propre nom d'utilisateur qui est généré automatiquement au cours de son déploiement. Par conséquent, l'application est isolée des autres applications en cours et ne peut pas facilement affecter leur sécurité. Applications Java sous Android IvMad, 2011-2014 6 L'architecture du système Android Le GUI d'android est un système mono-thread, événementiel avec une bibliothèque à composants extensibles organisée autour du modèle Model-View-Controller (MVC). Model: représente les données et le conteneur de données: base de données, images, sons, etc. View: c'est la partie de l'application chargée de rendre l'affichage, l'envoi de l'audio aux haut-parleurs, générant un retour tactile. Controller: c'est la partie qui répond à des actions externes: le clavier, l'écran tactile, les appels entrants. Applications Java sous Android IvMad, 2011-2014 7 Le développement Android Android dispose d'un SDK basé sur le langage Java. Le SDK d'android est disponible pour les plateformes Linux, Mac et Windows à l'adresse : http://code.google.com/android/download.html Pour développer avec l'ide Eclipse Google fournit un plugin ADT (Android Development Tools): https://dl-ssl.google.com/android/eclipse/ Pour le développementt avec l'ide NetBeans Android propose le plugin "nbandroid" accessible à : http://nbandroid.kenai.com. Le développement pour Android est possible aussi sans un IDE particulier en se servant des commandes du SDK d'android avec Ant pour la compilation et la gestion du simulateur. A consulter : http://ydisanto.developpez.com/tutoriels/android/debuter/ Applications Java sous Android IvMad, 2011-2014 8 Le développement Android La chaine de production Java Android

Applications Java sous Android IvMad, 2011-2014 9 Le système Android Applications Java sous Android IvMad, 2011-2014 10 Java2SE (Oracle) et Java Dalvik (Google) Architecture d'une application Java Android Applications Java sous Android IvMad, 2011-2014 11 Architecture Android Applications Java sous Android IvMad, 2011-2014 12 L'application Android Une application Android en général est composée d'éléments identifiables qui peuvent se séquencer différemment en fonction des objectifs : 1. Interface graphique : la partie visuelle de l'application, elle sert de support pour les interactions de l'utilisateur. 2. Traitement d'un événement : Les interactions de l'utilisateur avec le GUI déclenche des événements qui sont gérés par les écouteurs d'événements (Listener) 3. Opération de fond (Intent) : Des opérations de fond peuvent échanger des messages par la technique des Intents. 4. Connexion TCP ou Bluetooth : connexion à un réseau Wi-Fi ou à un autre Smartphone. 5. Affichage des résultats : on retourne à l'interface graphique

Applications Java sous Android IvMad, 2011-2014 2 APPLICATIONS JAVA Android Partie II 2. Android Développement sous Eclipse avec SDK Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet. Ivan MADJAROV - 2014 Applications Java sous Android IvMad, 2011-2014 3 Développer avec Eclipse Les outils nécessaires sont : Android SDK: http://dl.google.com/android/android-sdk_r22.3-windows.zip Eclipse: http://www.eclipse.org/downloads/eclipse-standard-kepler-x86_64.zip Le plugin ADT de Eclipse: https://dl-ssl.google.com/android/eclipse/ Préparation de l environnement Installation du SDK Android dans SE. Installation plug-in ADT pour Android dans Eclipse Installation d un téléphone virtuel Android Configuration d'une unité virtuel dans l'ide Eclipse Un téléphone ou tablette Android se connectent à un PC par le câble USB. Applications Java sous Android IvMad, 2011-2014 4 Développer avec Eclipse Zone de stockage des projets Eclipse

Applications Java sous Android IvMad, 2011-2014 5 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 6 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 7 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 8 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2014 9 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 10 Développer avec Eclipse 1 2 3 Applications Java sous Android IvMad, 2011-2014 11 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 12 Développer avec Eclipse Installation du plug-in ADT pour Eclipse -> Help -> Installer un nouveau Software

Applications Java sous Android IvMad, 2011-2014 13 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 14 Développer avec Eclipse Renseigner les champs: Name et Location 1 2 3 Applications Java sous Android IvMad, 2011-2014 15 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 16 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2014 17 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2014 18 Installation du SDK Android Applications Java sous Android IvMad, 2011-2014 19 Installation du SDK Android Applications Java sous Android IvMad, 2011-2014 20 Développer avec Eclipse Installation d un téléphone virtuel Android

Applications Java sous Android IvMad, 2011-2014 21 Android SDK Manager Applications Java sous Android IvMad, 2011-2014 22 Android Virtual Device Manager Installation d un téléphone virtuel Android Applications Java sous Android IvMad, 2011-2014 23 Android Virtual Device Manager Applications Java sous Android IvMad, 2011-2014 24 Android Virtual Device Manager

Applications Java sous Android IvMad, 2011-2014 25 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 26 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 27 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 28 Nouveau projet Eclipse-Android

Applications Java sous Android IvMad, 2011-2014 29 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 30 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 31 Nouveau projet Eclipse-Android Code généré à la création du projet Applications Java sous Android IvMad, 2011-2014 32 Nouveau projet Eclipse-Android Pour exécuter l'application on click sur le bouton "Run". L'émulateur Android est lancé (le chargement est long)

Applications Java sous Android IvMad, 2011-2014 33 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2014 34 Plug-Ins Eclipse-Android Le "premier_projet_android" avec les composants à compiler et à exécuter dans un environnement d'émulateur La classe R accède aux ressources Classe interne associée à une ressource Nom de la ressource dans le répertoire res/layout Applications Java sous Android IvMad, 2011-2014 35 Nouveau projet Eclipse-Android Log.i: méthode de traçage de l'exécution d'une application Android Applications Java sous Android IvMad, 2011-2014 36 ADT Bundle pour Windows Pour le développement Android un seul kit est proposé le ADT Bundle qui inclue tous les outils nécessaires pour le développement d'une application sous Eclipse: Eclipse + ADT plugin Android SDK Tools Android Platform-tools The latest Android platform The latest Android system image for the emulator http://developer.android.com/sdk/index.html

Applications Java sous Android IvMad, 2011-2014 37 Intégrer un Smartphone au ADT Le Smartphone doit être configuré en mode "PTP" Avant de lancer Eclipse il faut brancher le Smartphone à l'ordinateur Ouvrir un invité de commandes et exécuter la commande: C:\Program Files\Android\android-sdk\platform-tools\adb.exe -c devices A la demande du Smartphone autoriser l'adresse MAC du PC sur le Smartphone (étape à ne pas rater!)

Applications Java sous Android IvMad, 2011-2014 2 APPLICATIONS JAVA Android Partie III 3. Architecture d'une application Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet. Ivan MADJAROV - 2014 Applications Java sous Android IvMad, 2011-2014 3 Composantes Android (1) Les éléments essentiels du Framework Android : Activity : C'est la composante principale d'une application Android. Elle représente la couche représentative et visuelle de l'application qui peut avoir plusieurs couches qui alternent entre elles lors de l'exécution. Fragment : C'est une portion d'interface plus souple et dynamique. Donc, une activité peut être constituée de plusieurs fragments. Views : Le IHM (GUI) est un "layout" ouune"widgets" couche qui hérite des classes "android.view.view"et "android.view.viewgroups". Service : A la différence d'une Activity un Service ne possède pas d'interface mais permet l'exécution d'un traitement en tâche de fond. Donc il n'a pas de vue, mais permet l exécution d un algorithme sur un temps indéfini et terminé en fonction de la tâche. Applications Java sous Android IvMad, 2011-2014 4 Composantes Android (2) Content Provider : Il permet le partage des données entre applications, via un fournisseur de contenu (photos, contacts,...). Intents : Les composantes Android (Activity, Service, Broadcast receiver) communiquent via des messages système que l'on appelle Intent (intention). Une application peut appeler un service ou une activité (explicite) ou appeler un service du système Android (implicites). Broadcast Receiver : C'est le récepteur d'événements qui réagit à un événement système et les "Intents" implicites. Il ne possède pas d'interface utilisateurs et est destiné à l'exécution de tâches légères. Pour des tâches plus lourdes on lance un service. Un broadcast receiver peut afficher un message, lancer une activité ou un service. Intent-Filter : un filtre d'intention sert à indiquer à une activité, service ou broadcast receiver quels Intents peuvent implicitement traiter.

Applications Java sous Android IvMad, 2011-2014 5 Cycle de vie d une application Android public class MainActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.acceuil); // suspendue détruit: ondestroy invoqué protected void ondestroy() { super.ondestroy(); // actif suspendue: ne détient plus le focus protected void onpause() { super.onpause(); // suspendue actif: onresume invoqué protected void onresume() { super.onresume(); // démarrage actif: détient le focus et est démarré protected void onstart() { super.onstart(); protected void onstop() { super.onstop(); Applications Java sous Android IvMad, 2011-2014 6 Architecture d'une application Android oncreate : La méthode est appelée à la création d'une activité pour initialiser les données nécessaires à l'exécution de l'application. A l'appel de la méthode un Bundle est passé en argument. Il contient l état de sauvegarde enregistré lors de la dernière exécution. onstart : La méthode est appelée dans le cas où l'application est en arrière-plan et qu elle repasse en avant-plan. Si l'activité ne peut pas passer en avant plan alors, l activité sera transférée à OnStop. onresume : La méthode est appelée après OnStart quand l'application passe en background à cause d une autre application. onpause : La méthode met en pause l'application et se relance avec la méthodes OnResume. onstop : Appelée quand l'activité n est plus visible. ondestroy : Appelée quand l'application est fermée (processus closed). Applications Java sous Android IvMad, 2011-2014 7 Contexte d'une application Android Le contexte relève l'état courant d'une application et les informations sur son environnement et sert à récupérer des objets transmis par d'autres parties de l'application. On dispose de quatre méthodes: getapplicationcontext() : récupère le contexte de l'application en cours; getcontext() : récupère le contexte de la vue courante; getbasecontext() : récupère le contexte défini par la méthode setbasecontext() this : peut être utilisé quant on hérite directement de la classe Context. Applications Java sous Android IvMad, 2011-2014 8 Programmer sous Android Interface graphique par programmation (partie dynamique) Pour faciliter le développement, Android propose un grand nombre de "widgets": des éléments d interface graphique qu'on peut utiliser dans une application de manière directe et simple. On peut utiliser les classiques : boutons, listes déroulantes, cases à cocher mais aussi de composants plus poussés : des horloges, des sélecteurs de dates, des galeries photos et des afficheurs de vidéos. Interface graphique par fichier XML (partie statique) Le fichier XML sera lu par le programme et l interface graphique sera automatiquement générée en conséquence. Il devient ainsi beaucoup plus facile de modifier et de faire évoluer une interface graphique déjà existante, et pouvoir l'adaptée suivant le contexte.

Applications Java sous Android IvMad, 2011-2014 9 Le principe de l'interface graphique Applications Java sous Android IvMad, 2011-2014 10 Le principe de l'interface graphique Le GUI sous Android est basée sur les View, les Layout et les Widget. Un layout (gabarit) est une View (vue) spéciale qui peut contenir d'autres View, ainsi le layout joue le rôle d'un conteneur. Le Layout n'est pas destinée à fournir du contenu ou des contrôles à l'utilisateur. Les layouts se contentent de disposer les Views par un gestionnaire de placement. Les Views se chargent de mettre le contenu utilisateur en place. Une View qui ne peut pas en englober d'autres est appelée un widget (composant). Applications Java sous Android IvMad, 2011-2014 11 Composants graphiques (Java) La class View est une zone de composant et source d'événement ce qui forme la base du GUI. Applications Java sous Android IvMad, 2011-2014 12 Vues et schémas (Java) Les éléments graphiques héritent de la classe View. On peut regrouper des éléments graphiques dans une ViewGroup. ViewGroup : le regroupement est prédéfini sous la forme de schémas (layout) qui proposent une prédispositions des objets graphiques: LinearLayout : dispose les éléments de gauche à droite et du haut vers le bas; RelativeLayout : les éléments enfants les uns par rapport aux autres; TableLayout : disposition en imitant un tableau par lignes et colonnes; FrameLayout : disposition en haut à gauche en empilant les éléments. La classe ViewGroup ressemble à un gestionnaire de placement connu en Swing de Java2SE. Les déclarations peuvent se faire aussi en XML, ce qui évite de passer par les instanciations Java (on verra ça par la suite).

Applications Java sous Android IvMad, 2011-2014 13 Programmer: Bonjour tout le monde Applications Java sous Android IvMad, 2011-2014 14 Label de texte et zone de texte (Java) import android.app.activity; import android.os.bundle; import android.widget.textview; public class Bonjour extends Activity { public void oncreate(bundle icicle) { super.oncreate(icicle); TextView tv = new TextView(this); tv.settext("bonjour tout le monde!"); setcontentview(tv); Fait passer une instance de l'activité Simulateur d'unité mobile sous Android Définir le conteneur et l'ordre de placement des composants La méthode settext de la classe TextView met un String dans GUI. La méthode setcontentview affiche la chaine de caractère dans l'interface graphique. Applications Java sous Android IvMad, 2011-2014 15 Avec une image (Java) Applications Java sous Android IvMad, 2011-2014 16 TextView, EditText, ImageView, Bouton ImageView() est la boite qui peut contenir une image. Les images utiles au projet sont placées dans le dossier "res/drawable"

Applications Java sous Android IvMad, 2011-2014 17 Récupérer la saisie d'un texte (Java) Applications Java sous Android IvMad, 2011-2014 18 Android - un bouton public void onclick(view view) { // au click changer le texte sur la bouton btn.settext("bouton cliqué"); // récupérer le texte tapé dans le champ String montxt = edit.gettext().tostring(); // définir un affichage de texte TextView txt = new TextView(this); // mettre le texte du champ txt.settext(montxt); // ajouter un texte au Layout layout.addview(txt); package ivmad.tp.nowdatetime; import android.os.bundle; import android.app.activity; import android.view.view; import android.widget.button; import java.util.date; public class MainActivity extends Activity implements View.OnClickListener { Button btn; public void oncreate(bundle icicle) { super.oncreate(icicle); btn = new Button(this); btn.setonclicklistener(this); updatetime(); setcontentview(btn); public void onclick(view v) { updatetime(); private void updatetime() { btn.settext(new Date().toString()); Applications Java sous Android IvMad, 2011-2014 19 Déroulement de l'exemple (1) La déclaration de paquetage doit être identique à celle utilisée pour créer le projet. Pour un projet Java il faut importer les classes auxquelles l'application fait référence. La plupart des classes spécifiques à Android se trouvent dans le paquetage android Les classes de Java SE sont utilisables par les programmes Android, mailil faut consulter le guide de référence des classes Android pour connaitre leur disponibilité et compatibilité. Les activités sont des classes publiques héritées de la classe de base android.app.activity. Les widgets sont des éléments d interface graphique qu'on peut utiliser dans une application. Applications Java sous Android IvMad, 2011-2014 20 Déroulement de l'exemple (2) L activité contient un bouton : Button btn; Un bouton est un widget Android et peut être utilisé dans une application. Pour capturer tous les clics de bouton dans l'activité elle-même on implémente OnClickListener (écouteur d'événement). La méthode oncreate() est appelée au lancement de l activité, alors on établi un chaînage vers la superclasse afin d initialiser l activité Android de base (super.oncreate(<bundle object>)). L instance de bouton créée (new Button(this)), on demande l envoie de tous les clics sur ce bouton à l instance de l activité (setonclicklistener()) qui appelle la méthode onclick(view v). Un appel la méthode privée updatetime() est constitué, et pour finir on configure la vue du contenu de l activité avec le bouton lui-même (setcontentview()).

Applications Java sous Android IvMad, 2011-2014 21 Déroulement de l'exemple (3) Tous les widgets dérivent de la classe de base View. Bundle icicle est un gestionnaire opaque, que toutes les activités reçoivent lors de leur création. Avec Swing, un clic sur un JButton déclenche un ActionEvent qui est transmis à l ActionListener configuré pour ce bouton (Java2SE). Avec Android un clic sur un bouton fait appel de la méthode onclick() sur l instance OnClickListener configurée pour ça. L écouteur reçoit la vue qui a déclenché le clic et on fait alors appel à la méthode privée updatetime(). L ouverture de l activité (oncreate()) ou un clic sur le bouton (onclick()) doit provoquer la mise à jour du label du bouton avec la date courante. On utilise pour cela la méthode settext(), qui fonctionne exactement comme avec les JButton de Swing. Applications Java sous Android IvMad, 2011-2014 22 Toast : popup surgissant Afficher un contenu dans un popup surgissant La classe Toast avec la méthode maketext affiche une fenêtre popup pour un délai 'court' ou 'long'. La méthode prend trois paramètres: Context context = getapplicationcontext(); // référence vers l'application String text = "Bonjour toast!"; // le texte à afficher int duration = Toast.LENGTH_SHORT; // La durée d'exposition Toast toast = Toast.makeText(context, text, duration); // Appel toast.show(); // Visualiser Appel direct du Toast pour une durée 'courte' Toast.makeText(this,text,Toast.LENGTH_SHORT).show(); Appel direct du Toast pour une durée 'longue' Toast.makeText(this,text,Toast.LENGTH_LONG).show(); Applications Java sous Android IvMad, 2011-2014 23 CheckBox CheckBox cba, cbb, cbc; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); // add button Button b = new Button(this); b.settext("cliquez ici!"); b.setonclicklistener(this); ll.addview(b); //add checkboxes cba = new CheckBox(this); cba.settext("bleu"); ll.addview(cba); cbb = new CheckBox(this); cbb.settext("blanc"); ll.addview(cbb); cbc = new CheckBox(this); cbc.settext("rouge"); ll.addview(cbc); setcontentview(ll); Afficher avec Toast public void onclick(view v) { Toast tst; String answer=""; if (cba.ischecked()) { answer += cba.gettext()+" "; if (cbb.ischecked()) { answer += cbb.gettext()+" "; if (cbc.ischecked()) { answer += cbc.gettext()+" "; tst = Toast.makeText(this, answer, Toast.LENGTH_LONG); tst.show(); Applications Java sous Android IvMad, 2011-2014 24 Radio bouton protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Gestionnaire de placement LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); // Bouton Button b = new Button(this); b.settext("affichez votre langage préféré"); b.setonclicklistener(this); ll.addview(b); // Radio boutons en groupe rg = new RadioGroup(this); rg.setorientation(radiogroup.vertical); rba = new RadioButton(this); rba.settext("java"); rg.addview(rba); rbb = new RadioButton(this); rbb.settext("python"); rg.addview(rbb); rbc = new RadioButton(this); rbc.settext("c#"); rg.addview(rbc); // Placement dans layout ll.addview(rg); setcontentview(ll); Afficher avec Toast public void onclick(view v) { Toast tst; if ( rba.ischecked() ) { tst = Toast.makeText(this, rba.gettext(), Toast.LENGTH_LONG); tst.show(); if ( rbb.ischecked() ) { tst = Toast.makeText(this, rbb.gettext(), Toast.LENGTH_LONG); tst.show(); if ( rbc.ischecked() ) { tst = Toast.makeText(this, rbc.gettext(), Toast.LENGTH_LONG); tst.show();

Android Spinner (ComboBox) public class SpinnerComBoxActivity extends Activity implements OnClickListener { Applications Java sous Android IvMad, 2011-2014 25 String colors[] = {"Red","Blue","White","Yellow","Black"; Spinner sp; public class SpinnerComBoxActivity extends Activity implements OnClickListener { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); Button b = new Button(this); b.settext("affichez votre choix"); b.setonclicklistener(this); ll.addview(b); sp = new Spinner(this); // Appliquer une 'Array' pour le 'Spinner' ArrayAdapter<String> sparrayadapter = new ArrayAdapter<String> (this,android.r.layout.simple_spinner_item,colors); sp.setadapter(sparrayadapter); ll.addview(sp); setcontentview(ll); public void onclick(view v) { int i = sp.getselecteditemposition(); Toast.makeText(getBaseContext(),"Votre choix: "+colors[i],toast.length_short).show(); Applications Java sous Android IvMad, 2011-2014 26 Android Spinner (ComboBox) Pour réaliser la liste déroulante avec la classe Spinner dans le fichier activity_spinner_com_box.xml il faut ajouter le code suivant: <Spinner android:id="@+id/spinner01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawselectorontop="true"> </Spinner> Applications Java sous Android IvMad, 2011-2014 27 Android Toggle button Applications Java sous Android IvMad, 2011-2014 28 Android - GUI dynamique public class ToggleButtonMainActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ScrollView scrl = new ScrollView(this); final LinearLayout ll = new LinearLayout(this); ll.setorientation(linearlayout.vertical); scrl.addview(ll); // ajouter un 'Toggle button' ToggleButton tb = new ToggleButton(this); tb.settexton("on"); tb.settextoff("off"); tb.setchecked(true); tb.setlayoutparams(new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); ll.addview(tb); this.setcontentview(scrl);

Applications Java sous Android IvMad, 2011-2014 29 Android : Ecrire dans un fichier WriteData(getApplicationContext(),textOut); // Appel de la méthode... // context: id de l'application public void WriteData(Context context, String data) { FileOutputStream fout = null; OutputStreamWriter osw = null; try { // Ouvrir un fichier 'contacts.dat' en mode ajouter fout = context.openfileoutput("contacts.dat",mode_append); osw = new OutputStreamWriter(fOut); osw.write(data); // Ecrire les données dans le flux de sortie osw.flush(); // Vider le flux de sortie // affiche le résultat de l'opération Toast.makeText(context,"Sauvegarde réussie",toast.length_short).show(); catch (Exception e) { Toast.makeText(context,"Problème de sauvegarde!",toast.length_short).show(); finally { try { osw.close(); // Fermer le flux d'écriture fout.close(); // Fermer le fichier 'contact.dat' catch (IOException e) { Toast.makeText(context,"Problème de sauvegarde",toast.length_short).show(); Applications Java sous Android IvMad, 2011-2014 30 Android : Lire dans un fichier String dataread = ReadData(getApplicationContext()); // Appel de la méthode... // context: id de l'application public String ReadData(Context context) { FileInputStream fin = null; InputStreamReader isr = null; char[] inputbuffer = new char[255]; String data = null; try { fin = context.openfileinput("contacts.dat"); // Ouvrir le fichier isr = new InputStreamReader(fIn); // Lire dans le flux d'entrée isr.read(inputbuffer); // Lire le contenu du tampon data = new String(inputBuffer); // Convertir les données en chaine de car. // affiche le contenu du fichier dans un popup surgissant Toast.makeText(context,"Contenu: "+data,toast.length_short).show(); catch (Exception e) { Toast.makeText(context,"Erreur de lecture",toast.length_short).show(); finally { try { isr.close(); fin.close(); catch (IOException e) { Toast.makeText(context,"Erreur de lecture",toast.length_short).show(); return data;

Applications Java sous Android IvMad, 2011-2014 2 APPLICATIONS JAVA Android Partie IV 4. Application réseaux, Bluetooth, Wi-Fi Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet. Ivan MADJAROV - 2014 Applications Java sous Android IvMad, 2011-2014 3 Android : LogCat view Le développement pose toujours le problème de tester l'application avant sa mise en "service". La View de l'application est en mode graphique. Les logs permettent l'affichage en mode texte dans la fenêtre du LogCat. Pour afficher les opérateurs 'log' dans Eclipse il faut activer le LogCat view: Window->Show View->Other...->LogCat. Pour écrire un opérateur 'Log' il faut importer la classe android.util.log qui propose les méthodes Log.i() "Info", Log.d() "Debug", Log.w() "Warning", Log.e() "Error". Exemple: Log.i("NameActivity", "Bonjour, ça marche!"); Applications Java sous Android IvMad, 2011-2014 4 Android : Bluetooth (1) Bluetooth est un protocole d'interconnexion à de courtes distances, de type "peer-to-peer" avec une bande passante faible. La communication est cryptée entre les périphériques appariés. L'API Bluetooth permet de scanner et de lier les appareils entre eux et de transférer des données. Les connexions Bluetooth sont gérées par les classes suivantes : BluetoothAdapter : est l'unité locale où l'application Bluetooth est lancée. BluetoothDevice : est le périphérique distant avec lequel on cherche à communiquer. BluetoothSocket : fait une demande de connexion au périphérique distant par l'appel de la méthode createrfcommsockettoservicerecord. BluetoothServerSocket : installe un Socket Bluetooth serveur pour écouter les demandes de connexion entrantes en utilisant la méthode listenusingrfcommwithservicerecord.