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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 Applications Java sous Android IvMad, 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 Applications Java sous Android IvMad, 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, 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).

2 Applications Java sous Android IvMad, 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, 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, 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 : Pour développer avec l'ide Eclipse Google fournit un plugin ADT (Android Development Tools): Pour le développementt avec l'ide NetBeans Android propose le plugin "nbandroid" accessible à : 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 : Applications Java sous Android IvMad, Le développement Android La chaine de production Java Android

3 Applications Java sous Android IvMad, Le système Android Applications Java sous Android IvMad, Java2SE (Oracle) et Java Dalvik (Google) Architecture d'une application Java Android Applications Java sous Android IvMad, Architecture Android Applications Java sous Android IvMad, 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

4 Applications Java sous Android IvMad, 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 Applications Java sous Android IvMad, Développer avec Eclipse Les outils nécessaires sont : Android SDK: Eclipse: Le plugin ADT de 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, Développer avec Eclipse Zone de stockage des projets Eclipse

5 Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse

6 Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Installation du plug-in ADT pour Eclipse -> Help -> Installer un nouveau Software

7 Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse Renseigner les champs: Name et Location Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Développer avec Eclipse

8 Applications Java sous Android IvMad, Développer avec Eclipse Applications Java sous Android IvMad, Installation du SDK Android Applications Java sous Android IvMad, Installation du SDK Android Applications Java sous Android IvMad, Développer avec Eclipse Installation d un téléphone virtuel Android

9 Applications Java sous Android IvMad, Android SDK Manager Applications Java sous Android IvMad, Android Virtual Device Manager Installation d un téléphone virtuel Android Applications Java sous Android IvMad, Android Virtual Device Manager Applications Java sous Android IvMad, Android Virtual Device Manager

10 Applications Java sous Android IvMad, Nouveau projet Eclipse-Android Applications Java sous Android IvMad, Nouveau projet Eclipse-Android Applications Java sous Android IvMad, Nouveau projet Eclipse-Android Applications Java sous Android IvMad, Nouveau projet Eclipse-Android

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

12 Applications Java sous Android IvMad, Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 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, Nouveau projet Eclipse-Android Log.i: méthode de traçage de l'exécution d'une application Android Applications Java sous Android IvMad, 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

13 Applications Java sous Android IvMad, 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!)

14 Applications Java sous Android IvMad, 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 Applications Java sous Android IvMad, 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, 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.

15 Applications Java sous Android IvMad, 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, 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, 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, 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.

16 Applications Java sous Android IvMad, Le principe de l'interface graphique Applications Java sous Android IvMad, 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, 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, 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).

17 Applications Java sous Android IvMad, Programmer: Bonjour tout le monde Applications Java sous Android IvMad, 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, Avec une image (Java) Applications Java sous Android IvMad, 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"

18 Applications Java sous Android IvMad, Récupérer la saisie d'un texte (Java) Applications Java sous Android IvMad, 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, 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, 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()).

19 Applications Java sous Android IvMad, 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, 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, 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, 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();

20 Android Spinner (ComboBox) public class SpinnerComBoxActivity extends Activity implements OnClickListener { Applications Java sous Android IvMad, 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, 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, Android Toggle button Applications Java sous Android IvMad, Android - GUI dynamique public class ToggleButtonMainActivity extends Activity 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);

21 Applications Java sous Android IvMad, 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, 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;

22 Applications Java sous Android IvMad, 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 Applications Java sous Android IvMad, 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, 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.

23 Applications Java sous Android IvMad, Android : Bluetooth (2) Pour s'assurer que le périphérique possède le Bluetooth on procéder à une vérification rapide en instanciant la classe BluetoothAdapter. Le retour de son objet va indiquer la présence ou non de cette option. BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothadapter == null) Toast.makeText(BluetoothActivity.this, "Pas de Bluetooth!", Toast.LENGTH_SHORT).show(); else Toast.makeText(BluetoothActivity.this,"Le Bluetooth est disponible", Toast.LENGTH_SHORT).show(); Pour autoriser l'opération, il faut ajouter la permission d'accéder aux API Bluetooth en ajoutant la ligne suivante dans le fichier AndroidManifest.xml : <uses permission android:name="android.permission.bluetooth"/> Applications Java sous Android IvMad, Android : Bluetooth (3) Le Bluetooth peut être disponible sur l'appareil mais non activé. On peut demander l'autorisation à l'utilisateur d'activer cette option. Pour cela, on appelle la méthode startactivityforresult avec un paramètre d'intent BluetoothAdapter.ACTION_REQUEST_ENABLE. On vérifie que le Bluetooth n'est pas activé et on demande son activation : private final static int BLUETOOTH_ACTIVATION = 1; BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter();... if (!bluetoothadapter.isenabled() { startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), BLUETOOTH_ACTIVATION); Un dialog-box incitera l'utilisateur d'accepter ou non l'activation du Bluetooth sur son appareil. Le résultat de sa décision est récupérable par la méthode onactivityresult. Applications Java sous Android IvMad, Android : Bluetooth (4) On surcharge la méthode onactivityresult pour savoir si le Bluetooth est activé ou non. La méthode est appelée à la sortie de la boite de protected void onactivityresult(int requestcode,int resultcode,intent data) { super.onactivityresult(requestcode, resultcode, data); if (requestcode == BLUETOOTH_ACTIVATION) { if (resultcode == RESULT_OK) { Toast.makeText(BluetoothActivity.this, "Bluetooth est activé", Toast.LENGTH_SHORT).show(); else { Toast.makeText(BluetoothActivity.this, "Bluetooth non activé", Toast.LENGTH_SHORT).show(); Applications Java sous Android IvMad, Android : Bluetooth (5) Si on rend l'appareil Bluetooth détectable cela permet à d'autres appareils de le découvrir et de se connecter par la suite. Pour cela, on utilise la méthode startactivityforresult avec le paramètre Intent approprié : startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), BLUETOOTH_SCAN); On obtient la liste des appareils déjà liés avec getboundeddevices. Set<BluetoothDevice> knowndevices = bluetoothadapter.getboundeddevices(); for (BluetoothDevice device : knowndevices) { Log.v("BluetoothActivity", "appareil = " + devices.getname()); Set : interface de collection pour des objets qui n'autorisent pas des doublons dans l'ensemble, existe au moins un nul (un tableau d'objets). for-each : boucle qui accède à chaque élément d'une collection d'objets comme dans un tableau (eg, ArrayList).

24 Applications Java sous Android IvMad, Android : Bluetooth (6) Le code complet (étudiez les instructions 'Set' et 'for') : public class BluetoothDeviceListActivity extends Activity { private final static int BLUETOOTH_SCAN = 1; String s = protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter(); startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE),BLUETOOTH_SCAN); Set<BluetoothDevice> knowndevices = bluetoothadapter.getbondeddevices(); for (BluetoothDevice device : knowndevices) { s += "appareil = " + device.getname(); Toast.makeText(BluetoothDeviceListActivity.this,"Les Bluetooth liés: "+s,toast.length_short).show(); Applications Java sous Android IvMad, Android : Bluetooth (7) La recherche d'appareils inconnus est un traitement asynchrone et gourmant en energie effectué par le Broadcast Receiver. Android permet de créer une classe qui implémente BroadcastReceiver pour recevoir des Intents et appliquer des comportements spécifiques au code. L interface BroadcastReceiver possède une seule méthode onreceive() qu'on doit implémenter. BroadcastReceiver bluetoothreceiver = new BroadcastReceiver() { public void onreceive(context context, Intent intent) { String action = intent.getaction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getparcelableextra(bluetoothdevice.extra_device); Toast.makeText(BluetoothActivity.this, "New Device = " + device.getname(), Toast.LENGTH_SHORT).show(); ; Applications Java sous Android IvMad, Android : BT (8) Mettre tout ensemble Ajouter les permissions dans le fichier manifest.xml Applications Java sous Android IvMad, Android : Wi-Fi (1) Sous Android le Wi-Fi est géré par un WifiManager. LeWifiManager représente un Android Wi-Fi Connectivity Service. Il est capable de configurer une connexion Wi-Fi, de gérer une connexion en cours, de scanner pour des points d'accès et d'enregistrer tout changement dans une connexion Wi-Fi. Le Wi-FiManager utilise la méthode getsystemservice en précisant le type de service en constante: Context.WIFI_SERVICE String service = Context.WIFI_SERVICE; WifiManager wifi = (WifiManager)getSystemService(service); Pour autoriser l'utilisation du Wi-FiManager les paramètres des permissions pour accès et modification doivent être réglés dans le fichier manifest du projet. <uses permission android:name="android.permission.access_wifi_state"/> <uses permission android:name="android.permission.change_wifi_state"/>

25 Applications Java sous Android IvMad, Android : Wi-Fi (2) Avec le Wi-FiManager on peut notamment activer ou désactiver la fonction Wi-Fi dans l'appareil par la méthode setwifienabled, obtenir le statut actuel du Wi-Fi par la méthode getwifistate ou vérifier si le Wi-Fi est activé avec la méthode iswifienabled. if (!wifi.iswifienabled()) if (wifi.getwifistate()!= WifiManager.WIFI_STATE_ENABLING) wifi.setwifienabled(true); La méthode getwifistate() retourne un entier entre 0 et 4 pour indiquer la situation en cours du WiFi de l'appareil : 0 WIFI_STATE_DISABLING 1 WIFI_STATE_DISABLED 2 WIFI_STATE_ENABLING 3 WIFI_STATE_ENABLED 4 WIFI_STATE_UNKNOWN Applications Java sous Android IvMad, Android : Wi-Fi (3) Si on met tout ensemble on peut vérifier l'état de notre appareil : public class WiFiStateActivity extends Activity { String[] wifistate = {"WIFI_STATE_DISABLING", "WIFI_STATE_DISABLED", "WIFI_STATE_ENABLING", "WIFI_STATE_ENABLED", protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); String service = Context.WIFI_SERVICE; WifiManager wifi = (WifiManager)getSystemService(service); Toast.makeText(this, "Wi Fi : " + wifistate[wifi.getwifistate()], Toast.LENGTH_LONG).show(); Applications Java sous Android IvMad, Android : Wi-Fi (4) Pour obtenir des informations détaillées sur une connexion il faut se référer à la méthode getconnectioninfo de la classe WifiInfo. Cette classe offre un certain nombre de méthodes qui apportent des informations importantes sur les paramètres du réseau Wi-Fi: getssid : Retourne l'identificateur du réseau en cours; getbssid() : Retourne l'identificateur de base de ce réseau; getmacaddress() : Retourne l'adresse MAC de l'appareil; getipaddress() : Retourne l'adresse IP de l'appareil en format 'int'. Une conversion en format 'String' est alors nécessaire. getlinkspeed() : Retourne le débit en Mbps getrssi() : Retourne le niveau de puissance reçu du réseau connecté. Applications Java sous Android IvMad, Android : Wi-Fi (5) Afficher les éléments d'une connexion Wi-Fi en ajoutant les composants dans un StringBuilder par la méthode append()

26 Applications Java sous Android IvMad, Android : Wi-Fi (6) Avec le Wi-FiManager on peut procéder à la recherche des hotspot (bornes Wi-Fi) dans le voisinage par la méthode startscan. Pour effectuer cette opération il faut utiliser un Broadcasr Receiver avec un Intent SCAN_RESULTS_AVAILABLE_ACTION passé en paramètre. Cela assure un traitement asynchrone et la prise du résultat quand le scan a terminé. On appelle la méthode getscanresults pour obtenir les résultats sous la forme d'une liste d'objets ScanResult. Chaque objet du type ScanResult comporte les détails de la connexion repérée. Le résultat du Scan est récupéré dans un objet de type List<E>. C'est une collection d'éléments indexés à partir de zéro. List<ScanResult> results = wifi.getscanresults(); Applications Java sous Android IvMad, Android : Wi-Fi (7) Retourne le nombre de hotspot détectés et le SSID avec le plus fort signale à proximité Applications Java sous Android IvMad, Android : StrictMode Dans une application Android, on doit éviter d'effectuer des opérations lentes sur le thread de l'interface utilisateur (GUI). Les opérations lecture et écriture de fichiers et l'accès au réseau sont considérées comme lentes, car le temps d'aboutir est indéfini, voir imprévisible. StrictMode est configuré pour une sécurité accrue, c.à.d. pour éviter de faire des choses incorrectes. L'exception NetworkOnMainThreadException est provoqué si l'accès réseau est effectué de l'interface utilisateur (le thread principal de l'application). A partir de l'android 3.0 on peut désactiver cette option pour faire des tests plus facilement sur l'accès réseau en plaçant dans la méthode oncreate() le code: StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Applications Java sous Android IvMad, Android : client-side TCP socket package ivmad.tcp.client; import java.io.datainputstream; import java.io.dataoutputstream; import java.io.ioexception; import java.net.socket; import java.net.inetaddress; import java.net.unknownhostexception; import android.app.activity; import android.os.bundle; import android.os.strictmode; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; import android.widget.textview; public class ClientTCPAndroidActivity extends Activity { LinearLayout layout; EditText textout; TextView textin; Button buttonsend; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); layout = new LinearLayout(this); layout.setorientation(linearlayout.vertical); textin = new TextView(this); textin.settext("message à soumettre"); textout = new EditText(this); buttonsend = new Button(this); buttonsend.settext("envoyer"); buttonsend.setonclicklistener(buttonsendonclicklistener); layout.addview(textin); layout.addview(textout); layout.addview(buttonsend); setcontentview(layout);

27 Applications Java sous Android IvMad, Android : client-side TCP socket Button.OnClickListener buttonsendonclicklistener = new Button.OnClickListener() { public void onclick(view v) { Socket socket = null; DataOutputStream dataoutputstream = null; DataInputStream datainputstream = null; InetAddress serveraddr; String serveripaddress = " "; // Définir les droits d'accès au ressources réseaux StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); try { serveraddr = InetAddress.getByName(serverIpAddress); socket = new Socket(serverAddr, 1234); dataoutputstream = new DataOutputStream(socket.getOutputStream()); datainputstream = new DataInputStream(socket.getInputStream()); dataoutputstream.writeutf(textout.gettext().tostring()); textin.settext(datainputstream.readutf()); catch (UnknownHostException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); finally { if (socket!= null && dataoutputstream!= null && datainputstream!= null) { try { socket.close(); dataoutputstream.close(); datainputstream.close(); catch (IOException e) { e.printstacktrace(); ; Applications Java sous Android IvMad, Android : client-side TCP socket Le fichier AndroidManifest.xml contient la description des ressources et les autorisations d'accès au réseau Internet L'autorisation d'accéder au réseau et configurée dans le Manifest de l'application <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="ivmad.tcp.client" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="15" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".clienttcpandroidactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> Applications Java sous Android IvMad, Android : client-side TCP socket Le serveur TCP reçoit le message du client Android Le client TCP basé Android envoie un message au Serveur basé TCP Applications Java sous Android IvMad, Android : client HTTP Avant de procéder à une connexion réseau, il faut s'assurer que cette connexion est disponible. Un téléphone portable, un Smartphone ou une tablette peut être hors réseau ou connexion Wifi désactivée. Cette disponibilité est testée avec les méthodes getactivenetworkinfo() et isconnected(). La classe ConnectivityManager détecte les connexions Wifi, GPRS, UMTS, etc. public boolean isnetworkavailable() { ConnectivityManager cm = (ConnectivityManager) getsystemservice(context.connectivity_service); NetworkInfo networkinfo = cm.getactivenetworkinfo(); // Si le réseau est indisponible networkinfo = null et la // méthode retourne false, sinon true. if (networkinfo!= null && networkinfo.isconnected()) { return true; return false;

28 Applications Java sous Android IvMad, Android : HTTP connection HttpURLConnection avec URL sont des classes disponibles depuis Java 2.0 standard. C'est un client léger d'usage général basé HTTP et approprié pour la plupart des applications Android. try { URL url = new URL(" HttpURLConnection con = (HttpURLConnection) url.openconnection(); // méthode qui lit un contenu sur le Stream d'entrée readstream(con.getinputstream()); catch (Exception e) { e.printstacktrace(); Applications Java sous Android IvMad, Android : HTTP connection Lecture du Stream d'entrée dont la connexion est effectuée par HttpURLConnection et URL. private void readstream(inputstream in) { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(in)); String line = "", str = ""; while ((line = reader.readline())!= null) { str += line; Toast.makeText(getApplicationContext(),str,Toast.LENGTH_LONG).show(); catch (IOException e) { e.printstacktrace(); finally { if (reader!= null) { reader.close();

29 Applications Java sous Android IvMad, APPLICATIONS JAVA Android Partie V 4. Interface graphique dans une application Android avec XML 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 Applications Java sous Android IvMad, Android : connexion à MySQL Une application Java peut se connecter à une BD MySQL avec un connecteur JDBC. Ceci est juste pour Java2SE et JSP. Le pilote JDBC est l'interface de liaison entre l'application et le SGBD. Les récentes version d'android préconisent l'utilisation d'un service Web et une connexion basée HTTP par l'intermédiaire de scripts PHP ou JSP pour accéder au contenu de la BD et pour recevoir sur l'unité mobile sous Android le résultat d'une requête SQL. Néanmoins, il est possible de réussir une connexion avec une BD basée MySQL en se servant d'un connecteur JDBC ancienne génération beaucoup plus adapté aux connexions lentes d'un Smartphone ou une Tablette. Ainsi, dans les transparents qui suivent je présente une connexion réussie avec le connecteur JDBC dans le contexte de la DOSI : mysql-connector-java ga-bin.jar Applications Java sous Android IvMad, Android: connexion à MySQL public void listdb() { // Renseigner les champs nécessaires à la connexion String url = "jdbc:mysql://dbs-perso.luminy.univmed.fr:3306/nom_bd"; String user = "nom_utilisateur"; String pass = "mot_de_passe"; try { // Instancier le driver JDBC Class.forName("com.mysql.jdbc.Driver").newInstance(); // Effectuer la connexion avec le serveur de la BD Connection con = DriverManager.getConnection(url, user, pass); // Confirmer la connexion Toast.makeText(getApplicationContext(),"Connexion OK!",Toast.LENGTH_SHORT).show(); // Préparer la requete SQL String result = ""; Statement st = con.createstatement(); Toast affiche un contenu ResultSet rs = st.executequery("select * from contact"); dans un cadre temporaire en // Recuperer le résultat de la requete fonction de trois paramètres: ResultSetMetaData rsmd = rs.getmetadata(); // Extraire les éléments propres à chaque champs context, text, duration while(rs.next()) { result += rsmd.getcolumnname(1) + ": " + rs.getint(1) + "\n"; result += rsmd.getcolumnname(2) + ": " + rs.getstring(2) + "\n"; result += rsmd.getcolumnname(3) + ": " + rs.getstring(3) + "\n"; result += rsmd.getcolumnname(4) + ": " + rs.getstring(4) + "\n"; rs.close(); con.close(); // Afficher le résultat Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); catch(exception e) { e.printstacktrace();

30 Applications Java sous Android IvMad, Android: connexion à MySQL Dans l'ide Eclipse le connecteur JDBC doit être rajouté au projet qui gère les classes de la connexion. Télécharger dans un dossier le connecteur à partir de l'adresse: Par simple glisser dans l'interface Eclipse: copier/coller mettre le pilote dans le répertoire 'libs' Bouton droit sur le projet pour choisir 'Properties' -> 'Java buil Path' -> Libraries -> 'Add Jars' -> Ajouter dans Libs du projet. Applications Java sous Android IvMad, Android: connexion à MySQL // Insérer des données dans une table public void insertdb() { try { // Instancier le connecteur Class.forName("com.mysql.jdbc.Driver").newInstance(); // Etablir la connexion avec le serveur de la BD Connection con = DriverManager.getConnection(url, user, pass); // Construire la requête d'insertion de données requises à partir // d'une interface utilisateur sur l'unité mobile String ssql = ""; ssql += "INSERT INTO Contact(prenom,nom,tel)"; ssql += " VALUES ('"+lastnametext.gettext().tostring()+ "','"+firstnametext.gettext().tostring()+ "','"+telnumbertext.gettext().tostring()+"');"; // Créer l'opérateur Statement st = con.createstatement(); // Lancement de la requête int nb = st.executeupdate(ssql); // Fermeture des connexions st.close(); con.close(); catch(exception e) { e.printstacktrace(); Applications Java sous Android IvMad, GUI par XML : Layout (1) Android, vis-à-vis des autres systèmes d'exploitation mobiles, possède la possibilité de créer des interfaces graphiques àl'aidedefichiers XML. Cette particularité favorise la séparation de la description de l'interface graphique (layout XML) de la logique applicative (code Java). Cela a pour effet la séparation du fond de la forme et facilite par exemple la "localisation" d'une interface graphique en fonction de la langue (français, anglais, bulgare), du contexte d'utilisation (jour ou nuit) ou la modification de l ergonomie (boutons, listes, cases à cocher). Android inclut un système proche des CSS de W3C bien connu pour le développement Web. Il s'agit des styles et des thèmes qui permettent le respect d'une cohérence à travers une application. Ainsi, l'interface graphique est construite dans des fichiers XML présents dans le dossier res/layout d'un projet Android (Eclipse). Applications Java sous Android IvMad, XML : les bases XML signifie extensible Markup Language C'est un langage à balises accompagné normalement d'une description sémantique (grammaire) et éventuellement de scripts CSS ou procédure de transformation XSLT pour la visualisation du document XML par un navigateur Web. Les balises sont ouvrantes, <balise_ouvrante> ou fermantes, </balise_fermante>, ou balises à paramètre <balise paramètre1, paramètre2 /> Les balises peuvent être imbriquées : on peut insérer un ou plusieurs couples de balises <cinematheque> élément racine <film> élément enfant <nom>die Hard 4</nom> <realisateur>len Wiseman</realisateur> <annee_sortie>2012</annee_sortie> <acteur prenom="bruce" nom="willis" /> </film> </cinematheque> balise à contenu balise avec attributs

31 Applications Java sous Android IvMad, Les Transformations XML Applications Java sous Android IvMad, Android : Styles et Thèmes Un style est un ensemble d'attributs de formatage qu'on peut appliquer àdeséléments simples mis dans un fichier XML. Par exemple, on peut définir un style qui spécifie une taille ou une couleur appliqué à un certain type d'éléments View. Un thème est un ensemble d'attributs de formatage qu'on peut appliquer à une unité pour toutes les activités d'une application. Parexemple,onpeutdéfinirunthème qui met des couleurs spécifiques pour l'ensemble des éléments d'une fenêtre (bordure et fond), définir la taille du texte et les couleurs des menus dans un fichier XML. Créer ses propres Styles et Thèmes : Créer un fichier 'styles.xml' avec un nœud '<ressource>' dans le répertoire 'res/values' du projet. Pour chaque style ou thème il faut ajouter un élément '<style name="nom_de_style">'. Les éléments de style sont déclarés à l'intérieur par des '<item name="android:style>valeur</item>'. Applications Java sous Android IvMad, Layout XML : les plus utilisés (2) Un XML layout est un conteneur permettant d'organiser le placement des différents widgets dans l'interface utilisateur (UI). Ainsi : FrameLayout :Leswidgets contenus dans le FrameLayout sont affichés en haut à gauche de l'écran. LinearLayout :Tousleswidgets sontaffichéslesunsaprèslesautres,soit verticalement, soit horizontalement. RelativeLayout : Permet d'organiser les différents widgets en fonctions de la position des autres widgets. TableLayout : Permet d'organiser les widgets en lignes et en colonnes en imitant une présentation en forme de tableau. Sous Android, la notion de mise en page est reliée à la notion de Layout ce qui représente l agencement des différents éléments graphiques dans l'interface graphique en fonction des différentes tailles et résolutions d écran. Applications Java sous Android IvMad, Layout XML : les plus utilisés (3) On peut déclarer les Layouts par code Java ou par XML. La déclaration en XML convient pour les interfaces statiques et la déclaration Java convient aux interfaces dynamiques. Les approches peuvent entre combinées en fonction des objectifs de l'application à développer. La déclaration du Layout de la principale vue (activity_main.xml) se trouve dans le répertoire "res/layout" à partir de la racine du projet. android:orientation : pour l orientation du LinearLayout (Vertical ou Horizontal). android:layout_width et android:layout_height : fill_parent (match_parent) pour direquecelareprésentelatailleduparentouwrap_content pour dire qu elle prend la taille de contenu.

32 Applications Java sous Android IvMad, Application Android L'application Android est décrite dans le fichier AndroidManifest.xml. Le fichier contient la description de tous les Activities, Services, BroadcastReceivers, ContentProvider de l'application. Le fichier contient aussi les éléments de sécurité pour l'application: l'autorisation pour un accès réseau par exemple. C'est aussi le fichier qui contient la description des composants de déploiement d'une application Android. Applications Java sous Android IvMad, AndroidManifest.xml L'application Android est décrite dans le fichier AndroidManifest.xml. Autorisations pour accéder au réseau Applications Java sous Android IvMad, Le projet ADT Android Un projet plugin ADT est décomposé de la manière suivante: src/: les sources Java du projet libs/: bibliothèques tierces res/: res/drawable: ressources images res/layout: description des IHM en XML res/values: chaines de caractères et dimensions gen/: les ressources auto générées par ADT assets/: ressources brutes (raw bytes) bin/: bin/classes: les classes compilées en.class bin/classes.dex: exécutable pour la JVM Dalvik bin/myapp.zip: les ressources de l'application bin/myapp.apk: application empaquetée avec ses ressource et prête pour le déploiement Applications Java sous Android IvMad, Les ressources d'une application Android Le répertoire res contient toutes les ressources qui seront mises dans le apk : drawable-hdpi -imagesenhautedéfinition; drawable-ldpi - images en basse définition; drawable-mdpi - images en moyenne définition; layout - description en XML des interfaces; values - définitions en XML de constantes (chaînes, tableaux, valeurs numériques); anim - description en XML d animations; menus - description en XML de menus pour l application; xml - fichiers XML utilisés directement par l application; raw - tous les autres types de ressources : sons, vidéos,

33 Applications Java sous Android IvMad, Accès aux ressources Android Référencement d une ressource dans un fichier xml. La forme générale est : "@type/identificateur", Par exemple : Fait référence à une chaine contenue dans un fichier XML placé dans le répertoire res/values et définie comme suit: <resources> <string name="letexte">contenu du texte à afficher</string> </resources> Référencement d une ressource dans le code Java. La forme générale est : R.type.nom. La classe Ressource (R) permet l accès aux ressources. Par exemple : R.string.letexte fait référence à la chaine ci-dessus. Dans l'application on accède aux ressources par la mise en place de l interface principale: setcontentview(r.layout.nom_du_fichier_xml); Applications Java sous Android IvMad, Application Android et XML (1) Création d un nouveau projet Android : commencer par File -> New -> Android Project -> Next -> Project Name (premiereapplication) -> Next -> Next -> Package Name (com.premiere.application) -> Finish. Avec cela l application est créée et peut être lancée par le bouton Run (Run as -> Android application). Les fichiers XML de l application Android: ouvrir le fichier premiereapplication -> res -> values -> string.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World, Premiere_applicationActivity!</string> <string name="app_name">premiere_application</string> </resources> Modifier le texte de l'attribut "hello" avec "Android, Bonjour tout le monde!". Sauvegarder et relancer l'application. Applications Java sous Android IvMad, Application Android et XML (1) Ajouter des composants dans le fichier string.xml: Ouvrir l'onglet "Ressources". Cliquer sur le bouton "Add" choisir attribut "String" confirmer avec "OK". Inscrire dans le champ Name "prenom" et dans le champ Value "Entrez votre prénom :". Refaire les opérations d ajout pour encore deux attributs: Name "nom", Value "Entrez votre nom :" et Name "bouton", Value "Envoyer". Sauvegarder à chaque modification! Applications Java sous Android IvMad, Application Android et XML (1) L'application Android affiche à son exécution un texte de bien venu. L'interface graphique peut être gérer par des fichiers XML. Ainsi, la taille des caractères et la couleur du texte peut être préciser. Pour créer les fichiers XML nécessaires il faut procéder par: Faire clic droit sur le dossier values -> New -> Other -> Android -> Android XML File -> Next -> File (dimensions.xml) -> Finish. Créer ensuite un nouvel attribut de type Dimension avec le couple Name: "dimmessage", Value: "30px". Pour enregistrer CTRL/S. Créer de la même façon un fichier colors.xml, enajoutantunattributde type Color avec Name: couleurmessage, et Value: "#ffa800". Pour enregistrer CTRL/S.

34 Applications Java sous Android IvMad, Application Android et XML (1) Interface graphique: le contenu du fichier main.xml qui se situe dans res -> layout est modifié ainsi: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= " android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="bottom" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" /> </LinearLayout> Applications Java sous Android IvMad, Application Android et XML (1) Les attributs XML de l'interface graphique. android:id identifie l'élément et le rend accessible dans code Java; android:layout_width, android:layout_height défini les dimensions de l élément; fill_parent l élément prend toute la place disponible; wrap_content l élément prend la place qu il a besoins; android:layout_gravity précise la position de l élément; (center_horizontal, center_vertical, etc ) android:text configure le texte à afficher; (string.xml) android:textsize configure la taille du texte affiché; (dimensions.xml) android:textcolor configure la couleur du texte; (colors.xml) android:hint texte à afficher lorsque EditText est vide; (strings.xml) android:layout_weight rapport de taille entre éléments; Applications Java sous Android IvMad, Application Android et XML (1) Au lancement de l'application l'écran suivant apparait sur le simulateur Android. Dans le champ de saisie un prénom peut être tapé. Ainsi, l'interface graphique est fonctionnelle. Le bouton "Envoyer" n'est attaché à un traitement d'évènements. C'est pourquoi aucune réaction pour l'instant n'est possible. Applications Java sous Android IvMad, Installer une application Android Sous Android, les applications sont des fichiers *.apk. Installer une application Android depuis un fichier apk sur un téléphone portable ou une tablette équipés du système Android : Installer AppManager en le récupérant depuis Android Market Transférer le fichier apk à installer sur la carte SD (on peut aussi utiliser MountUSB) Lancer AppManager Appuyer sur la touche menu et sélectionner "Install from SD", sélectionner l application à installer (si l application n apparait pas, appuyer sur menu et "Whole SD") Deuxième possibilité: Envoyer le fichier apk par . A l'ouverture de la pièce attachée l'application s'installe automatiquement

35 Applications Java sous Android IvMad, Application Android et XML (Juno) On crée un projet de base. Le code généré par l'environnement Eclipse (Juno) et l'arborescence des ressources sont les suivants: package ivmad.iut.viewproject; import android.os.bundle; import android.app.activity; import android.view.menu; public class MainActivity extends Activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); return true; Applications Java sous Android IvMad, Application Android et XML (2) Dans la méthode OnCreate, on définit la vue à l aide de la méthode setcontentview et on lui affecte R.layout.activity_main qui représente la vue, déclarée dans le dossier Layout. R désigne la ressource utilisée dans le dossier res. Toutes les ressources qui se trouvent dans le dossier res sont précompilées et des liens sont générés dans le dossier R.java. (C'est automatique à la création du projet) Les ressources du dossier res peuvent être modifiées car ce sont des descriptions en format XML, c.à.d. des fichiers textes à balisages Applications Java sous Android IvMad, Application Android et XML (2) Pour changer une vue on change le fichier res/layout/activity_main.xml <LinearLayout xmlns:android=" res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageView android:id="@+id/android_picture" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/normal_paddin g" android:src="@drawable/android" android:contentdescription="@string/image_cont ent_description" /> <Button android:id="@+id/create_account" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margintop="@dimen/small_padding " android:text="@string/create_account" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingtop="@dimen/normal_padding" android:text="@string/ " android:textsize="@dimen/normal_text_size" android:textcolor="@color/black_color" /> <EditText android:id="@+id/user_ " android:layout_width="@dimen/large_padding" android:layout_height="wrap_content" android:inputtype="text address" android:layout_gravity="center" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingtop="@dimen/normal_padding" android:textsize="@dimen/normal_text_size" android:text="@string/password" android:textcolor="@color/black_color" /> <EditText android:id="@+id/user_password" android:layout_width="@dimen/large_padding" android:layout_height="wrap_content" android:layout_gravity="center" android:inputtype="textpassword" /> <Button android:id="@+id/connect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margintop="@dimen/normal_paddin g" android:text="@string/connect" /> </LinearLayout> Applications Java sous Android IvMad, Application Android et XML (2) LinearLayout : android:orientation : Orientation verticale. android:layout_width et android:layout_height : Hauteur et largeur du Layout ImageView : élément qui sert à afficher une image android:layout_height : Définir la hauteur de l élément. android:id : Identifiant de l élément android:layout_width : Largeur de l élément. android:src : Image source utilisée pour l ImageView. android:layout_margintop : Marge externe du haut. Les différentes tailles utilisées sont déclarées dans le fichier dimens.xml (dossier values) et utilisées en suivant la android:contentdescription : utiliser pour la description du contenu de l image

36 Applications Java sous Android IvMad, Application Android et XML (2) Button android:layout_gravity : Position de l élément (center, left, right ). android:text : Texte à afficher dans l élément. Toute les chaines de caractères utilisées sont déclarées dans le ficher strings.xml et utilisées à l aide de la TextView android:textcolor :Couleurdutexte. Toute les couleurs utilisées sont déclarées dans le fichier colors.xml et utilisées à l aide de la android:paddingtop : Marge interne du haut. android:textsize : Définie la taille du texte. EditText android:inputtype : Type du texte qui sera saisie dans la zone d édition. Applications Java sous Android IvMad, Application Android et XML (2) TextView et EditText (similaire aux CSS3) android:paddingtop : C est pour l espacement du haut du Layout. android:gravity : Spécifie l emplacement du contenu dans le conteneur. android:textsize : Spécifie la taille de texte. android:textstyle : Spécifie un style au texte (bold, italic, bolditalic). android:textcolor : Spécifie la couleur du texte. android:id : Donne un identifiant à l objet, afin de pouvoir y accéder depuis une activité. android:hint : Spécifie un texte par défaut sur la zone. Ce texte sera affiché quand aucun android:text n est défini (sert surtout en texte d indication pour des champs de formulaire par exemple). Applications Java sous Android IvMad, Application Android et XML (3) Intent: Lesandboxing (bac à sable) est une pratique de sécurité dans la téléphonie mobile qui consiste à séparer les applications entre elles. Android exécute une application en limitant les actions autorisées (accès mémoire, accès sur les capteurs, etc ). Pour contourner cette difficulté de communication entre applications on utilise les Intent (Intentions). Un Intent permet d envoyer et recevoir des messages (avec ou sans des données) pour déclencher une action, dans un composant d une même application (une Activity) voir même dans une autre application. Ainsi, un Intent est un ensemble de données qui peut être passé à un autre composant applicatif (de la même Activity ou non) de façon implicite (requête pour une action: lire de la musique ou scanner un code barre) ou explicite (lancement d une classe externe). Applications Java sous Android IvMad, Application Android et XML (4) La figure illustre la manière dont un Intent implicite est délivré à travers le système pour démarrer une autre activité. L'activité A crée un Intent par startactivity(). Le système Android cherche les applications dont l'intent filter correspond. Si une correspondance est trouvée le système démarre l'activité B en appelant la méthode oncreate().

37 Applications Java sous Android IvMad, Application Android et XML (5) Dans un contexte de l'informatique, le broadcasting désigne une méthode de transmission de données à l'ensemble des machines d'un réseau. Pour pouvoir recevoir des Intent, Android permet de créer une classe qui implémente BroadcastReceiver avec une seule méthode onreceive(). Le système Android envoie l'intention (Intent) à tous les BroadCast Receiver abonnés par ordre de priorité (AndroidManifest.xml). Un BroadCast Receiver est un composant Android qui écoute et enregistre tout changement dans le mobile: la reception de messages SMS, appels téléphoniques, statut de la batterie, accès au réseau Wi-Fi, etc. Applications Java sous Android IvMad, Application Android et XML (6) Le fichier colors.xml contient les couleurs utilisées dans l application <?xml version="1.0" encoding="utf-8"?> <resources> <color name="black_color">#000</color> </resources> Le fichier dimens.xml défini les dimensions utilisées. Les tailles déclarées sont en dp (density independant pixel) pour la taille des composants et en sp (scale independant pixel) pour la taille des polices. Les tailles en dp / sp garantissent les mêmes proportions dans les interfaces quelques soit la densité de l écran cible <resources> <dimen name="padding_small">8dp</dimen> <dimen name="padding_medium">8dp</dimen> <dimen name="padding_large">16dp</dimen> <dimen name="normal_text_size">15sp</dimen> <dimen name="normal_padding">20dp</dimen> <dimen name="large_padding">100dp</dimen> <dimen name="small_padding">10dp</dimen> </resources> Applications Java sous Android IvMad, Application Android et XML (7) Le fichier string.xml est utilisé pour déclarer les chaines de caractères <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> FirstAndroidView</string> <string name="hello_world"> Bonjour tout le monde!</string> <string name="menu_settings">settings</string> <string name="title_activity_main"> MainActivity</string> <string name="image_content_description"> Logo Android</string> <string name="create_account"> Créer un compte</string> <string name=" ">adresse </string> <string name="password">mot de passe</string> <string name="connect">se connecter</string> </resources> Applications Java sous Android IvMad, Application Android et XML (8) Gérer l'événement du bouton et afficher le résultat dans une autre Vue par la création d'une deuxième activité. La vue est décrite dans le fichier XML: res/layout/login_display.xml <LinearLayout xmlns:android= /res/android android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingtop="@dimen/layout_padding_to p" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ " android:textcolor="@color/black_color" android:textsize="@dimen/big_text_size" android:textstyle="bold" /> <TextView android:id="@+id/ _display" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:hint="@string/hint_mail" android:textcolor="@color/black_color" android:textsize="@dimen/big_text_size" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingtop="@dimen/normal_padding" android:text="@string/password" android:textcolor="@color/black_color" android:textsize="@dimen/big_text_size" android:textstyle="bold" /> <TextView android:id="@+id/password_display" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:hint="@string/hint_pass" android:textcolor="@color/black_color" android:textsize="@dimen/big_text_size" /> </LinearLayout>

38 Applications Java sous Android IvMad, Application Android et XML (9) Le nouvelle Vue est liée à une nouvelle activité dont il faut créer le code Java dans le fichier : src/nom.package/logindisplayactivity.java public class LoginDisplayActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login_display); Les activités et les ressources d'une application Android sont décrites dans le fichier XML : AndroidManifest.xml La ligne à ajouter pour la nouvelle Vue à côté du nom de l'activité principale : <activity android:name=".logindisplayactivity" /> Actualiser le fichier string.xml avec les chaines pour la nouvelle Vue: <string name="title_activity_login_display">logindisplayactivity</string> <string name="hint_mail">"ici : L'adresse de l'utilisateur"</string> <string name="hint_pass">"ici : Le mot de passe de l'utilisateur"</string> Applications Java sous Android IvMad, Application Android et XML (10) Le fichier XML dimens.xml doit être mis à jour en ajoutant les lignes suivantes: <dimen name="layout_padding_top">80dp</dimen> <dimen name="big_text_size">20sp</dimen> Pour mettre en place le passage d une activité à une autre il faut ajouter du code dans la MainActivity.java. On déclare un OnClickListener sur le bouton libellé "se connecter". Pour le passage d une activité à une autre on crée un Intent Les intents sont des messages utilisées par le système comme moyen de communication avec des applications, activités Le premier argument représente le contexte et le second représente l activité d arrivée. On utilise la méthode startactivity avec comme argument l intent crée. Applications Java sous Android IvMad, Application Android et XML (11) Pour récupérer l'événement du bouton "se connecter" on ajoute le code suivant dans la méthode OnCreate(). loginbutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { Intent intent = new Intent(MainActivity.this, LoginDisplayActivity.class); startactivity(intent); ); Le code actuel effectue le passage de la première activité à la seconde sans transfert de données d'une activité à l'autre. Pour transmettre ces données, il faut ajouter à l intent une clé permettant de les identifier. On déclare EXTRA_LOGIN et EXTRA_PASSWORD pour le passage des données. Lors du clic sur le bouton, on récupère les textes saisies par l utilisateur gettext().tostring. On associe ces valeurs avec l intent par la méthode putextra Applications Java sous Android IvMad, Application Android et XML (12) L'étape suivante: il faut récupérer les données transmises par l intent et les assigner aux zones de texte dans l'activité LoginDisplayActivity à l aide de la méthode getintent en vérifiant que ce dernier n est pas nulle. Initialiser les deux zones de textes servant à afficher les informations utilisateurs (login/password). Récupérer les deux informations à l aide de leurs clés et de la méthode getstringextra. Il faut utiliser la méthode gettypeextra où Type correspond au type de la donnée passé. Lier les textes récupérés aux TextView à l aide de la méthode settext En plus, un contrôle de la saisie peut être mis en place pour éviter les champs vides ou l'adresse mail non conforme aux standards en se servant des "paternes" avec les symboles autorisés.

39 Applications Java sous Android IvMad, Application Android et XML (13) import android.app.activity; import android.content.intent; import android.os.bundle; import android.widget.textview; public class LoginDisplayActivity extends Activity { final String EXTRA_LOGIN = "user_login"; final String EXTRA_PASSWORD = "user_password"; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login_display); Intent intent = getintent(); TextView logindisplay = (TextView) findviewbyid(r.id. _display); TextView passworddisplay = (TextView) findviewbyid(r.id.password_display); if (intent!= null) { logindisplay.settext(intent.getstringextra(extra_login)); passworddisplay.settext(intent.getstringextra(extra_password)); Applications Java sous Android IvMad, Application Android et XML (14) import java.util.regex.matcher; import java.util.regex.pattern; import android.os.bundle; import android.app.activity; import android.content.intent; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.toast; public class MainActivity extends Activity { final String EXTRA_LOGIN = "user_login"; final String EXTRA_PASSWORD = "user_password"; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); final EditText login = (EditText) findviewbyid(r.id.user_ ); final EditText pass = (EditText) findviewbyid(r.id.user_password); final Button loginbutton = (Button) findviewbyid(r.id.connect); Applications Java sous Android IvMad, Application Android et XML (15) loginbutton.setonclicklistener(new OnClickListener() { public void onclick(view v) { final String logintxt = login.gettext().tostring(); final String passtxt = pass.gettext().tostring(); // le 'pattern' pour vérifier le contenu de l'adresse mail Pattern p = Pattern.compile(".+@.+\\.[a-z]+"); // Le 'matcher' va comparer le 'pattern' avec le 'string' passé en argument Matcher m = p.matcher(logintxt); // Si l adresse mail saisie ne correspond au format d une // adresse mail on affiche un message d'erreur if (!m.matches()) { Toast.makeText(MainActivity.this,R.string. _format_error,Toast.LENGTH_SHORT).show(); // Pour éviter l'exécution des opérateurs qui suivent return; Applications Java sous Android IvMad, Application Android et XML (16) // le cas des différents champs qui ne doivent pas être vides if (logintxt.equals("") passtxt.equals("")) { Toast.makeText(MainActivity.this,R.string. _or_password_empty,Toast. LENGTH_SHORT).show(); return; // activer la vue pour afficher le résultat Intent intent = new Intent(MainActivity.this,LoginDisplayActivity.class); intent.putextra(extra_login, logintxt); intent.putextra(extra_password, passtxt); startactivity(intent); );

40 Applications Java sous Android IvMad, Application Android et XML (17) Applications Java sous Android IvMad, ListView Android A la base une classe ListView utilise des objets TextView pour chaque ligne de la liste Applications Java sous Android IvMad, Les menus sous Android Les types de menus existants au sein de la plateforme Android Les menus d options : Le menu apparait quand on clique sur le bouton "Menu" du téléphone ou de la tablette. Les menus s affichent en bas de l écran. La méthode utilisée pour la création des options du menu: public boolean oncreateoptionsmenu(menu menu) On rajoute des événements lorsque l on clique sur un des items du menu, grâce à la méthode onmenuitemselected(int featureid, MenuItem item) Les menus d options à préférences étendues : Ils permettent d afficher un menu en bas de l écran lors de l appui sur une touche d option d un menu. Les menus contextuels : On les retrouve généralement en cliquant sur un objet avec un appui long ou court, une fenêtre de choix s affiche alors. Pour ouvrir un menu contextuel on ses sert de la méthode: oncreatecontextmenu(contextmenu menu, View v, ContextMenuInfo menuinfo) Applications Java sous Android IvMad, Les menus sous Android Pour créer un menu simple on procède par un nouveau projet Android sous Eclipse et on modifie le code Java de l'activité principale de la manière suivante: import android.app.activity; import android.view.menu; public class MenuOptionActivity extends Activity { public boolean oncreateoptionsmenu(menu menu) { menu.add("options"); menu.add("quitter"); return true; Après lancement du projet on appuie sur le bouton "menu" du téléphone ou de la tablette

41 Applications Java sous Android IvMad, Les menus sous Android La manière la plus adaptée à une maintenance et un développement efficace est de passer par les fichiers XML. Le même principe est valable et pour la création des menus. Le menu est décrit dans le fichier res/menu/menu.xml <menu xmlns:android=" <item android:title="options" <item android:title="quitter" </menu> Puis dans le code de la méthode oncreateoptionsmenu, on récupère le menu sous forme XML et l afficher. public boolean oncreateoptionsmenu(menu menu) { // Création du menu inflater MenuInflater inflater = getmenuinflater(); // On envoi a la variable menu le fichier xml parsé par l'inflater inflater.inflate(r.menu.monmenu, menu); return true; Applications Java sous Android IvMad, Les menus sous Android Etape suivante: On rajoute des événements lorsque l on clique sur un des items du menu, grâce à la méthode onmenuitemselected(int featureid, MenuItem item) Deux paramètres sont passés: id du panel contenant le menu et l'item qui est cliqué public boolean onmenuitemselected(int featureid, MenuItem item) { // On récupère l'id de l'item et on le compare switch (item.getitemid()) { // choix égal à itemoptions case R.id.itemOptions: // On affiche un message Toast.makeText(this, "Ouverture des options", Toast.LENGTH_SHORT).show(); return true; // choix égal à itemquitter case R.id.itemQuitter: // On ferme l'activité finish(); return true; return super.onmenuitemselected(featureid, item); Applications Java sous Android IvMad, Les menus sous Android Dans le fichier res/menu/menu.xml on peut ajouter l'item qui définie le chargement d'une image ou icone dans l'élément du menu: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android=" <item android:title="options" android:id="@+id/itemoptions" android:icon="@drawable/icon_preferences"> </item> <item android:title="quitter" android:id="@+id/itemquitter" android:icon="@drawable/icon_quit"> </item> </menu> Les deux fichiers graphiques sont enregistrés dans le dossier res/drawable Applications Java sous Android IvMad, Tableau dans une application Android La structure tableau dans toutes les plates-formes représente un moyen efficace de présentation et/ou de stockage d'information. Le point de départ pour mettre en place un tableau dans une application Android est de s'adresser à l'élément TableLayout. Le principe est un peu le même que pour le tableau en HTML : TableLayout défini un tableau, dans lequel on rajoute des lignes TableRow contient les composants. Les colonnes peuvent être définies comme extensibles (setcolumnstretchable()) pour gérer la largeur des colonnes tout en laissant une occuper l espace vide pour arriver à la largeur du conteneur rétractables (setcolumnshrinkable()) pour obtenir l effet inverse. Le TableLayout ne gère pas l affichage des bordures, lignes, colonnes ou cellules. C'est à définir dans un fichier style.xml.

42 Applications Java sous Android IvMad, Tableau dans une application Android Créer le tableau dans res/layout/main.xml <TableLayout > <TableRow <TextView android:text="cm"/> <TextView android:text="inch"/> </TableRow> <TableRow <TextView android:text="2.54"/> <TextView android:text="1"/> </TableRow> <TableRow <TextView android:text="5.08"/> <TextView android:text="2"/> </TableRow> <TableRow <TextView android:text="7.62"/> <TextView android:text="3"/></tablerow> </TableLayout> Applications Java sous Android IvMad, Tableau dans une application Android Un style peut être appliqué pour chacune des colonnes comme une feuille de style CSS dans le fichier style.xml. <resources xmlns:android=" <style name="apptheme" /> <style name="defaulttextview" <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item></style> <style name="frag1tablelayout"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item></style> <style name="frag1headertablerow" parent="frag1tablelayout"> <item name="android:layout_marginbottom">3dp</item></style> <style name="frag1tablerow" parent="frag1tablelayout"></style> <style name="frag1col" parent="defaulttextview"> <item name="android:layout_marginbottom">1dp</item> <item <style name="frag1headercol" parent="frag1col"> <item name="android:textstyle">bold</item></style> </resources> Applications Java sous Android IvMad, Tableau dans une application Android Ajouter une bordure au tableau grâce à un objet drawable en forme de rectangle défini en arrière plan. Pour cela on créer l'objet drawable dans le répertoire /res/drawable/tableborder.xml. <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=" > <solid android:color="#ffffff"/> <stroke android:width="1dp" android:color="#777777"/> <corners android:radius="3dp" /> <padding android:left="100dp" android:top="5dp" android:right="10dp" android:bottom="5dp" /> </shape> Applications Java sous Android IvMad, Géolocalisation avec Java Android En général une unité mobile Android propose des moyens de déterminer sa géolocalisation: Par le module GPS (Global Positioning System), Par triangulation des cellules mobiles (3G), Par le réseau Wifi. Pour géolocaliser un Android, l'activité implémente LocationListener. On s'adresse ensuite à l objet LocationManager pour gérer l'abonnement aux mises à jour des coordonnées GPS. Dans l'activité (Vue) on surcharge 4 méthodes : onproviderenabled est appelée quand une source de localisation est activée; onproviderdisabled est appelée quand une source de localisation est désactivée; onstatuschanged est appelée quand le statuts d une source change; onlocationchanged est appelée quand les coordonnées GPS changent.

43 Applications Java sous Android IvMad, Géolocalisation avec Java Android Le fichier AndroidManifest.xml doit être enrichi avec les permissions requises pour accéder aux services de localisation, Internet et au GPS: <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.internet" /> Applications Java sous Android IvMad, Géolocalisation avec Java Android Pour s abonner à la mise à jour des coordonnées GPS, il faut utiliser la méthode requestlocationupdates(string, long, float, LocationListener) possédant 4 arguments : Le provider utiliser pour recevoir les mises à jour des coordonnées utilisateurs (GPS / NETWORK ) L'intervalle minimum entre deux notifications (en millisecondes) L'intervalle minimum entre deux notifications (en mètre) L instance du LocationListener Il est conseillé de s abonner aux mises à jour des coordonnées GPS dans la méthode onresume et de se désabonner dans la méthode onstop afin de stopper l utilisateur des ressources de localisation alors que l application n en a plus l utilité, sinon le processus de mise à jour continu est la consommation de la batterie est importante. Applications Java sous Android IvMad, Géolocalisation avec Java Android import android.app.activity; import android.content.context; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.widget.toast; public class SimpleGeoLocalisationActivity extends Activity { private LocationManager locationmanager; private LocationListener locationlistener; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_simple_geo_localisation); // On s'adresse à la classe LocationManager pour obtenir localisation GPS locationmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locationlistener = new MyLocationListener(); // Géolocalisation par GPS locationmanager.requestlocationupdates(locationmanager.gps_provider, 0, 0, locationlistener); Applications Java sous Android IvMad, Géolocalisation avec Java Android // Géolocalisation par les cellules du réseau GSM, précision 500m // locationmanager.requestlocationupdates(locationmanager.network_provider, 0, 0, locationlistener); public void onlocationchanged(location loc) { if (loc!= null) { Toast.makeText(getBaseContext(), "Localisation actuelle Lat: " + loc.getlatitude() + " Lng: " + loc.getlongitude() + " Alt: " + loc.getaltitude() + " Prec: " + loc.getaccuracy(), Toast.LENGTH_LONG).show(); public void onproviderdisabled(string provider) { public void onproviderenabled(string provider) { public void onstatuschanged(string provider, int status,bundle extras) {

44 Applications Java sous Android IvMad, Android: AsyncTask (Thread) Un thread est un fil d'exécution ou tâche utilisé avec l'interface graphique d'un programme Java ou par des programmes de calcul intensif. Une application Android consommatrices de ressources (requêtes http, calculs lourds, ) doitfaireappelàunthread séparé pour "déconnecter" le GUI du calcul. Ainsi, les deux taches fonctionnent de manière asynchrone (AsyncTask) sans provoquer l'arrêt de l'activité principale si elle est bloquée trop longtemps. Créer un nouveau projet appelé AsyncTache qui prend en charge un traitement long de manière asynchrone. Modifier le res/layout/main.xml en ajoutant un Button qui sert à lancer le traitement et une ProgressBar pour afficher la progression du traitement (transparent suivant). Applications Java sous Android IvMad, Android: AsyncTask (Thread) Le code XML à mettre dans res/layout/main.xml : <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:layout_margintop="10dp" android:id="@+id/btnlaunch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="lancer la tâche" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="progression de la tâche asynchrone:" /> <ProgressBar android:id="@+id/pbasync" style="?android:attr/progressbarstylehorizontal" android:layout_width="fill_parent" android:layout_margin="10dp" android:layout_height="wrap_content" /> </LinearLayout> Applications Java sous Android IvMad, Android: AsyncTask (Thread) Le code Java pour l'activité principale: public class AsyncTacheActivity extends Activity { private ProgressBar mprogressbar; private Button mbutton; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_async_big_calcul); // On récupère les composants de notre layout mprogressbar = (ProgressBar) findviewbyid(r.id.pbasync); mbutton = (Button) findviewbyid(r.id.btnlaunch); // On met un Listener sur le bouton mbutton.setonclicklistener(new OnClickListener() { public void onclick(view arg0) { LaTache tache = new LaTache(); tache.execute(); // On lance la tache séparée ); Applications Java sous Android IvMad, Android: AsyncTask (Thread) Ecriture de la classe LaTache, qui hérite d AsyncTask private class LaTache extends AsyncTask<Void, Integer, Void> Les trois paramètres attendus sont des types génériques : Le premier est le type des paramètres fournis à la tâche Le second est le type de données transmises durant la progression du traitement Le troisième est le type du résultat de la tâche Une AsyncTask implémente la méthode doinbackground, qui réalise le traitement de manière asynchrone dans un thread séparé. Trois méthodes appelées depuis l'ui thread, capables de le modifier: onpreexecute est appelée avant le traitement; onprogressupdate est appelée pour afficher la progression de la tache onpostexecute est appelée après le traitement sont optionnelles. UnappelàlaméthodepublishProgress permetlamiseàjourdelaprogression.on ne doit pas appeler la méthode onprogressupdate directement.

45 Applications Java sous Android IvMad, Android: AsyncTask (Thread) Applications Java sous Android IvMad, Android: AsyncTask (Thread) private class LaTache extends AsyncTask<Void, Integer, Void> { protected void onpreexecute() { super.onpreexecute(); Toast.makeText(getApplicationContext(), "Début du traitement asynchrone", Toast.LENGTH_LONG).show(); protected void onprogressupdate(integer... values){ super.onprogressupdate(values); // Mise à jour de la ProgressBar mprogressbar.setprogress(values[0]); protected Void doinbackground(void... arg0) { int p; for (p=0; p<=100; p++) { for (int i=0; i< ; i++) { /* vide */ // la méthode publishprogress met à jour l'interface en // invoquant la méthode onprogressupdate publishprogress(p); return null; protected void onpostexecute(void result) { Toast.makeText(getApplicationContext(), "Le traitement asynchrone est terminé", Toast.LENGTH_LONG).show(); Ecran 1 au lancement de l'activité Ecran 2 fin de l'activité Ecran 3 résultat de l'activité : tri par sélection Applications Java sous Android IvMad, Android: AsyncTask (Thread) Appliquer un traitement lourd comme le tri par sélection d'un certain nombre d'entiers générés aléatoirement: int[] tbl = new int[100];... tbl[i] = (int)(math.random()*128);... protected void triselection(int[] tbl, int N) { int min, t, i; for (i=0; i<n-1; ++i) { min = i; for (int j=i+1; j<n; ++j) { if (tbl[j] < tbl[min]) { min = j; t = tbl[min]; tbl[min] = tbl[i]; tbl[i] = t; Applications Java sous Android IvMad, Connexion TCP avec AsyncTask (1) Une application Android se connectant sur un serveur TCP par la méthode de traitement asynchrone de la requête réseau: public class TCPAsyncTaskActivity extends Activity { private String stringurl = " "; private TextView public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); textview = new TextView(this); setcontentview(textview); TCPAsyncTaskRequest();

46 Applications Java sous Android IvMad, Connexion TCP avec AsyncTask (2) La méthode vérifie la connexion et l'accessibilité du service réseau pour faire appel alors à la méthode gérée par AsyncTask. public void TCPAsyncTaskRequest() { ConnectivityManager connmgr = (ConnectivityManager) getsystemservice(context.connectivity_service); NetworkInfo networkinfo = connmgr.getactivenetworkinfo(); if (networkinfo!= null && networkinfo.isconnected()) { new AccessServerTask().execute(stringUrl); else { textview.settext("no network connection available."); Applications Java sous Android IvMad, Connexion TCP avec AsyncTask (3) La méthode appelle la méthode qui exécute la tache asynchrone en fond et libère ainsi l'interface utilisateur. La méthode onpostexecute retourne le résultat du traitement. private class AccessServerTask extends AsyncTask<String,Void,String> protected String doinbackground(string... urls) { // params comes from the execute() call: params[0] is the url. return runtcpclient(urls[0]); // onpostexecute displays the results of the protected void onpostexecute(string result) { textview.settext(result); Applications Java sous Android IvMad, Connexion TCP avec AsyncTask (3) La méthode qui effectue le traitement réseau. private String runtcpclient(string myurl) { try { Socket s = new Socket(myurl, 1234); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); // send output msg String outmsg = "Connexion du client TCP sur le port: 1234" + System.getProperty("line.separator"); out.write(outmsg); out.flush(); // accept server response String inmsg = in.readline() + System.getProperty("line.separator"); // close connection s.close(); return inmsg; catch (UnknownHostException e) { return "Aucune connexion!"; catch (IOException e) { return "Aucune connexion!"; Applications Java sous Android IvMad, Android : SQLite base de données SQLite est Open Source Database accessible dans chaque unité mobile avec SE Android. L'utilisation d'une BD SQLite ne demande aucune installation ou administration. SQLite supporte le type TEXT (String en Java), INTEGER (long en Java) et REAL (double en Java). Tous les autres types doivent être converti vers un reconnu chez SQLite. Si une application Android crée une BD elle est alors sauvegardée par défaut dans le dossier: DATA/data/APP_NAME/databases/FILENAME. Le package android.database contient les classes nécessaires à la manipulation d'une BD. Le package android.database.sqlite contient des classes spécifiques à SQLite.

47 Applications Java sous Android IvMad, Android : SQLite Pour créer et modifier une BD dans une application Android on étend (hérite) la sous-classe SQLiteOpenHelper. Le constructeur de l'activité fait appel à la méthode super(): super(context, DATABASE_NAME, null, DATABASE_VERSION); Dans cette classe les méthodes oncreate() et onupgrade() sont à réécrire. oncreate() est appelé pour la création de la BD si elle n'existe pas. onupgrade() est appelé pour modifier le schéma de la BD. Les deux méthodes prennent en paramètre la référence de la BD. La classe SQLiteOpenHelper fourni les méthodes getreadabledatabase() et getwriteabledatabase() pour accéder à un objet de type SQLiteDatabase en lecture ou en écriture. Une table de BD doit être identifiée par un _id qui est pris automatiquement pour une clé primaire. Applications Java sous Android IvMad, Android : SQLite SQLiteDatabase est la classe de base pour opérer avec une BD sous Android. Elle fournie les méthodes pour ouvrir, interroger, modifier ou fermer une BD. Elle fournie aussi les méthodes: insert(), update() et delete() et la méthode execsql(), qui exécute une requête SQL directement. L'objet ContentValues fourni le binôme key/values. La clé (key) est l'attribut d'une colonne et la valeur (values) représente son contenu. ContentValues peut être utilisé pour insérer ou modifier des enregistrements dans la BD. Les requêtes sont créées via les méthodes rawquery() ou query() et avec la classe SQLiteQueryBuilder. rawquery() accepte directement la requête SQL en paramètre. query() propose une interface structurée pour la requête SQL. SQLiteQueryBuilder est la classe qui facilite la création des requêtes SQL. Applications Java sous Android IvMad, Android : SQLite public class MaBaseDeDonneesAndroid extends SQLiteOpenHelper { // Version de la BD private static final int DATABASE_VERSION = 1; // Nom de la BD private static final String DATABASE_NAME = "contactsmanager"; // Nom de la table dans la BD private static final String TABLE_CONTACTS = "contacts"; // Noms des colonnes dans la table private static final String KEY_ID = "id"; private static final String KEY_NAME = "name"; private static final String KEY_PH_NO = "phone_number"; public MaBaseDeDonneesAndroid(Context context) { // Ouverture et création de la BD si n'existe pas super(context, DATABASE_NAME, null, DATABASE_VERSION); Applications Java sous Android IvMad, Android : SQLite // Création de la public void oncreate(sqlitedatabase db) { String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PH_NO + " TEXT" + ")"; db.execsql(create_contacts_table); // Effacer ou modifier une public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // Drop older table if existed db.execsql("drop TABLE IF EXISTS " + TABLE_CONTACTS); // Create tables again oncreate(db);

48 Applications Java sous Android IvMad, Android : SQLite // Ajouter un 'contact' dans la table void addcontact(contact contact) { SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); // Prendre le nom values.put(key_name, contact.getname()); // Prendre le numéro de téléphone values.put(key_ph_no, contact.getphonenumber()); // Insérer une ligne dans la table db.insert(table_contacts, null, values); // Fermer la BD db.close(); Applications Java sous Android IvMad, Android : SQLite // "Afficher" le contenu de la table public List<Contact> getallcontacts() { List<Contact> contactlist = new ArrayList<Contact>(); // Sélectionner toutes les lignes de la table String selectquery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getwritabledatabase(); Cursor cursor = db.rawquery(selectquery, null); // On boucle pour ajouter les lignes à la liste if (cursor.movetofirst()) { do { Contact contact = new Contact(); contact.setid(integer.parseint(cursor.getstring(0))); contact.setname( cursor.getstring(1) ); contact.setphonenumber( cursor.getstring(2) ); contactlist.add(contact); // Ajouter un contact à la liste while (cursor.movetonext()); return contactlist; // Retourne une liste de contacts Applications Java sous Android IvMad, Android : NFC NFC 'Near Field Communication) is the international standard for contactless exchange of data. In contrast of other technologies, such as wireless LAN and Bluetooth, the maximum distance of two devices is 10cm. The development of the standard started in 2002 by NXP Semiconductors and Sony. There are various possibilities for NFC use with mobile devices; for example, paperless tickets, access controls, cashless payments, and car keys. With the help of NFC tags you can control your phone and change settings. Data can be exchanged simply by holding two devices next to each other. There are a variety of NFC tags that can be read with a smartphone. The spectrum ranges from simple stickers and key rings to complex cards with integrated cryptographic hardware. Tags also differ in their chip technology. The most important is NDEF (NFC Data Exchange Format), which is supported by most tags.

TP SIN Programmation sur androïde Support : eclipse

TP SIN Programmation sur androïde Support : eclipse TP SIN Programmation sur androïde Support : eclipse Support : Smartphone sur androïde Pré requis (l élève doit savoir): Savoir utiliser un ordinateur Savoir utiliser un Smartphone Programme Objectif terminale

Plus en détail

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

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer Programmation des applications mobiles avec Android 1 Inspiré du cours de Olivier Le Goaer 2 OS mobile : outils de développement D après le cours de Olivier Le Goaer 3 Plateforme de développement MobileApp

Plus en détail

TP au menu «UI ANDROID»

TP au menu «UI ANDROID» TP au menu «UI ANDROID» Pré-requis & Installation ( du couvert) soit installer en natif sur vos postes (!!! ATTENTION!!! FromScratch 1,1 Go à télécharger ) JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html

Plus en détail

Tutorial pour une application simple

Tutorial pour une application simple ANDROID & ECLIPSE Tutorial pour une application simple 1. Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition

Plus en détail

1.3 Gestion d'une application

1.3 Gestion d'une application 1.3 Gestion d'une application 1. Un premier projet... Il est temps maintenant d'écrire la véritable première application Android avec l'inévitable affichage du mot bonjour, ce qui évidemment pour un développement

Plus en détail

Outils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr

Outils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr Outils, langage et approche Android Une introduction Nicolas Stouls nicolas.stouls@insa lyon.fr Webographie La bible contenant «tout» : http://developer.android.com/index.html Les supports cette intervention

Plus en détail

Warren PAULUS. Android SDK et Android x86

Warren PAULUS. Android SDK et Android x86 Android SDK et Android x86 2010/2011 Voici un petit tutoriel pour installer Android de façon à ce qu il soit compatible avec NetBeans et Eclipse, ainsi que l utilisation d Android x86. Ce tutoriel a été

Plus en détail

Les fondamentaux du développement d applications Java

Les fondamentaux du développement d applications Java Android 5 Les fondamentaux du développement d applications Java Nazim BENBOURAHLA Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez

Plus en détail

TD/TP 1 Introduction au SDK d Android

TD/TP 1 Introduction au SDK d Android TD/TP 1 Introduction au SDK d Android Romain Raveaux 1 Introduction Android est un système d'exploitation pour téléphone portable de nouvelle génération développé par Google. Celui-ci met à disposition

Plus en détail

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

Android 4 Les fondamentaux du développement d'applications Java La plateforme Android 1. Présentation 13 2. Historique 14 3. Google Play 15 3.1 Création d'un compte développeur 16 3.2 Publication d'une application 16 3.3 Suivi et mise à jour d'une application 18 Environnement

Plus en détail

TP2 : Client d une BDD SqlServer

TP2 : Client d une BDD SqlServer TP2 : Client d une BDD SqlServer Objectifs : utiliser la barre de menu, utiliser les préférences d application (settings) ou (options), gérer la persistance des données, utiliser la bibliothèque jtds:jdbc

Plus en détail

Projet Android (LI260) Cours 2

Projet Android (LI260) Cours 2 Projet Android (LI260) Cours 2 Nicolas Baskiotis Université Pierre et Marie Curie (UPMC) Laboratoire d Informatique de Paris 6 (LIP6) S2-2013/2014 Plan Les ressources Debug Communication entre activités

Plus en détail

Installation et prise en main

Installation et prise en main TP1 Installation et prise en main Android est le système d'exploitation pour smartphones, tablettes et autres appareils développé par Google. Pour permettre aux utilisateurs d'installer des applications

Plus en détail

www.elektor.fr/android SOMMAIRE

www.elektor.fr/android SOMMAIRE www.elektor.fr/android Android Apprendre à programmer des applis Environnement de développement Eclipse Programmation orientée objet en JAVA Auteur : Stephan Schwark Éditeur : Elektor ISBN : 978-2-86661-187-3

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

De Java à Android version 0.1

De Java à Android version 0.1 De Java à Android version 0.1 David Roche De Java à Andoid 1 Ce document est publié sous licence Creative Commons Vous êtes libres : de reproduire, distribuer et communiquer cette création au public de

Plus en détail

Créer des applications Android

Créer des applications Android Créer des applications Android Auteurs : Philippe Lacomme, Raksmey Phan Les outils nécessaires sont : - Android SDK - Eclipse - Le plugin ADT de Eclipse Plan (ceci n est pas un cours) Outils: Préparation

Plus en détail

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

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1 Les connexions sans fil avec Android JMF (Tous droits réservés) 1 Plan de l'exposé Wi-Fi : un rappel Démo 1 : trouver les réseaux Wi-Fi Démo 2 : repérer les appareils connectés sur notre réseau Wi-Fi Démo

Plus en détail

Développement sous Android

Développement sous Android Développement sous Android Chapitres traités Architecture générale d'android Android est une plateforme ouverte pour le développement de mobiles (smartphones). C'est la première plateforme pour appareils

Plus en détail

Education Delivery Intelligent Tool

Education Delivery Intelligent Tool Education Delivery Intelligent Tool Projet AMO2 Maxence RAOUX Joachim SEGALA RICM 4 Avril 2012 Sommaire I. Presentation du projet... 2 1. Contexte... 2 2. Demande... 2 3. Spécifications... 2 II. Guide

Plus en détail

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

Table des matières. Partie I Concepts de base... 1. Préface... VII Table des matières Préface... VII Partie I Concepts de base... 1 1. Tour d horizon... 3 Avantages et inconvénients de la programmation des smartphones... 3 Contenu d un programme Android... 4 Fonctionnalités

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

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

Création d un service web avec NetBeans 5.5 et SJAS 9 Sommaire Création d un service web avec NetBeans 5.5 et SJAS 9 1. Présentation... 2 2. Création d un service web avec NetBeans... 2 2.1. Création d une application Web... 2 2.2. Création du service web...

Plus en détail

Programmation mobile avec Android

Programmation mobile avec Android Programmation mobile avec Android Pierre Nerzic - [email protected] février-mars 2015 Abstract Il s agit des transparents du cours mis sous une forme plus facilement imprimable et lisible.

Plus en détail

Edutab. gestion centralisée de tablettes Android

Edutab. gestion centralisée de tablettes Android Edutab gestion centralisée de tablettes Android Résumé Ce document présente le logiciel Edutab : utilisation en mode enseignant (applications, documents) utilisation en mode administrateur (configuration,

Plus en détail

Introduction ANDROID

Introduction ANDROID Introduction ANDROID 1 Un monde ouvert Première plateforme ouverte pour appareils mobiles.les applications natives et tierces utilisent les mêmes API. Un système d exploitation open source libre pour appareils

Plus en détail

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

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 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 Centre ressource Génie Electrique Intervenant : Enseignant

Plus en détail

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

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Programmation Mobile Android Master CCI

Programmation Mobile Android Master CCI Programmation Mobile Android Master CCI Bertrand Estellon Aix-Marseille Université March 23, 2015 Bertrand Estellon (AMU) Android Master CCI March 23, 2015 1 / 266 Organisation de l UE Objectifs du cours

Plus en détail

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

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt benjamin.damecourt@me.com. UFR SITEC Master 2 EESC 11 janvier 2012 Dossier Développer en Java sur téléphone mobile Benjamin Damécourt [email protected] UFR SITEC Master 2 EESC 11 janvier 2012 Table des matières Introduction 2 Pré-requis 3 Hello World! 5 Installation

Plus en détail

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

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction jean-michel Douin, douin au cnam point fr version : 8 Décembre 2014 Notes de cours 1 Sommaire Le socle, les fondements Le patron

Plus en détail

Assistance à distance sous Windows

Assistance à distance sous Windows Bureau à distance Assistance à distance sous Windows Le bureau à distance est la meilleure solution pour prendre le contrôle à distance de son PC à la maison depuis son PC au bureau, ou inversement. Mais

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

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

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers - TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers vendredi 22 février 2013 Installation : Pour programmer des applications Android, il faut tout d abord veiller à disposer

Plus en détail

Votre premier projet Android

Votre premier projet Android 3 Votre premier projet Android Maintenant que le SDK Android est installé, il est temps de créer votre premier projet. La bonne nouvelle est qu il n exige aucune ligne de code les outils Android créent

Plus en détail

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

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations Projet Viticulture TP 3 : bases de données externes Description du thème Partie 1 : bases de données locales SQLite Partie 2 : projet H2O stockage local Partie 3 : bases de données distantes Partie 4 :

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Terminaux Mobiles Communicants

Terminaux Mobiles Communicants Terminaux Mobiles Communicants Programmation Android P-F. Bonnefoi Version du 4 avril 2011 Table des matières 1 Open Handset Alliance.............................................. 5 2 Android : matériel

Plus en détail

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

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger

Plus en détail

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

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

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

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Développement Android. J.-F. Couchot

Développement Android. J.-F. Couchot Développement Android J.-F. Couchot 12 novembre 2012 Table des matières 1 Introduction à l OS embarqué Android 3 I Composants principaux d une application................................ 3 I.1 Une activité............................................

Plus en détail

Optimiser pour les appareils mobiles

Optimiser pour les appareils mobiles chapitre 6 Optimiser pour les appareils mobiles 6.1 Créer un site adapté aux terminaux mobiles avec jquery Mobile... 217 6.2 Transformer son site mobile en application native grâce à PhoneGap:Build...

Plus en détail

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

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013 Département IRIS Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013 Objectifs : Mise en œuvre d'une chaine de développement pour cibles Android. Table des matières 2.1.Mise

Plus en détail

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

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. - 1 - PREAMBULE Les conditions générales d utilisation détaillant l ensemble des dispositions applicables

Plus en détail

Programmation Android L3 informatique

Programmation Android L3 informatique Programmation Android L3 informatique Étienne Payet Département de mathématiques et d informatique Ces transparents sont mis à disposition selon les termes de la Licence Creative Commons Paternité - Pas

Plus en détail

Interfaces graphiques avec l API Swing

Interfaces graphiques avec l API Swing Interfaces graphiques avec l API Swing Les Swing Les classes graphiques Swing dérivent de la classe JComponent, qui hérite ellemême de la classe AWT (Abstract Window Toolkit). Tous les composants Swing

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

LES ACCES ODBC AVEC LE SYSTEME SAS

LES ACCES ODBC AVEC LE SYSTEME SAS LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie

Plus en détail

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)

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) 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) Module 1 : Programmer une application informatique Durée

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines ([email protected]) Dr. MAHMOUDI Ramzi ([email protected]) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Android en action. Abdelkader Lahmadi Université de Lorraine - 2013

Android en action. Abdelkader Lahmadi Université de Lorraine - 2013 Android en action Abdelkader Lahmadi Université de Lorraine - 2013 Plan La boîte à outils JDK SDK Android Eclipse Plugin Android pour Eclipse Architecture et composants La main à la pâte Hello Android

Plus en détail

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

LES TABLETTES : GÉNÉRALITÉS

LES TABLETTES : GÉNÉRALITÉS LES TABLETTES : GÉNÉRALITÉS Fonctionnement Qu est-ce qu une tablette tactile? Une tablette tactile est un appareil doté d'un écran qui permet d'interagir simplement en touchant l'écran ou à l'aide d'un

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier

Plus en détail

Eclipse atelier Java

Eclipse atelier Java Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

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

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM Utilisation de GCM (Google Cloud Messaging) pour Android Ce TP est inspiré de : http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html On va écrire deux parties. Une application Android

Plus en détail

Android et le Cloud Computing

Android et le Cloud Computing Android et le Cloud Computing 1 Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet [email protected] 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

TAGREROUT Seyf Allah TMRIM

TAGREROUT Seyf Allah TMRIM TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation

Plus en détail

Encore plus de widgets et de conteneurs

Encore plus de widgets et de conteneurs 14 Encore plus de widgets et de conteneurs Nous avons déjà présenté un certain nombre de widgets et de conteneurs, et ce chapitre sera le dernier qui leur sera exclusivement consacré : il présente plusieurs

Plus en détail

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

Table des matières Introduction... 1 1. Démarrage... 8 2. Les composants graphiques... 26 Table des matières À propos de l'auteur... x Préface... xi Avant-propos... xiv 1. Public visé et prérequis... xiv 2. Sources des exemples... xv 3. Accès aux vidéos... xv 4. URL raccourcies... xv 5. Remerciements...

Plus en détail

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

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel d installation de Hibernate avec Eclipse Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création

Plus en détail

GUIDE DE DÉMARRAGE RAPIDE

GUIDE DE DÉMARRAGE RAPIDE GUIDE DE DÉMARRAGE RAPIDE Bienvenue dans SugarSync. Ce guide explique comment installer SugarSync sur votre ordinateur principal, configurer vos dossiers à synchroniser dans le cloud SugarSync. et utiliser

Plus en détail

SECURIDAY 2013 Cyber War

SECURIDAY 2013 Cyber War Club de la Sécurité Informatique à l INSAT Dans le cadre de la 3ème édition de la journée nationale de la sécurité informatique SECURIDAY 2013 Cyber War SECURINETS Présente Formateurs: 1. Emna BEY 2. Manel

Plus en détail

Programmer en JAVA. par Tama ([email protected]( [email protected])

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

E-mail : [email protected] - Web : http://www.nqicorp.com

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com - 5, rue Soutrane - 06560 Valbonne Sophia-Antipolis E-mail : [email protected] - Web : http://www.nqicorp.com NQI Orchestra 3.3 - Guide d'installation Windows.................................................................

Plus en détail

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)

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) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Guide de l'utilisateur de l'application mobile

Guide de l'utilisateur de l'application mobile Guide de l'utilisateur de l'application mobile Avis de droit d'auteur Copyright Acronis International GmbH, 2002-2012. Tous droits réservés. «Acronis», «Acronis Compute with Confidence», «Acronis Recovery

Plus en détail

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

Guide pas à pas pour l'utilisation de la Console de gestion des stratégies de groupe Page 1 sur 16 Guide pas à pas pour l'utilisation de la Console de gestion des stratégies de groupe Paru le 17/09/2004 Ce guide pas à pas explique comment utiliser la Console de gestion des stratégies de

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

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

Mettre en place un accès sécurisé à travers Internet Mettre en place un accès sécurisé à travers Internet Dans cette partie vous verrez comment configurer votre serveur en tant que serveur d accès distant. Dans un premier temps, les méthodes pour configurer

Plus en détail

Dongle WiFi de QUMI Manuel de l utilisateur

Dongle WiFi de QUMI Manuel de l utilisateur Dongle WiFi de QUMI Manuel de l utilisateur (Nom du modèle : QW-Wifi10) Version : 1.1 Date : 6 décembre 2011 **Avant d'utiliser la dongle WiFi, vérifiez en premier la version du logiciel QUMI.** Comment

Plus en détail

Partager sa connexion Internet via le WiFi avec Windows 8

Partager sa connexion Internet via le WiFi avec Windows 8 Partager sa connexion Internet via le WiFi avec Windows 8 Dans certains cas, vous pouvez avoir besoin de créer un point d'accès WiFi afin que vos ordinateurs ou mobiles WiFi puissent utiliser une unique

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

MANUEL PROGRAMME DE GESTION DU CPL WI-FI

MANUEL PROGRAMME DE GESTION DU CPL WI-FI MANUEL PROGRAMME DE GESTION DU CPL WI-FI Le programme de gestion du CPL Wi-Fi sert à régler tous les paramètres de l'adaptateur. En effet, le CPL Wi-Fi possède une interface de configuration. Cette interface

Plus en détail

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

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90. Analyste et développeur pendant plus de 10 ans, Thierry GROUSSARD s est ensuite orienté vers la formation et plus particulièrement dans le domaine du développement. Sa connaissance approfondie des besoins

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

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

Capture Pro Software. Démarrage. A-61640_fr Capture Pro Software Démarrage A-61640_fr Prise en main de Kodak Capture Pro Software et de Capture Pro Limited Edition Installation du logiciel : Kodak Capture Pro Software et Network Edition... 1 Installation

Plus en détail

ECLIPSE ET PDT (Php development tools)

ECLIPSE ET PDT (Php development tools) ECLIPSE ET PDT (Php development tools) Eclipse Eclipse est un IDE (Integrated Development Environment)).C estun projet de la Fondation Eclipse visant à développer tout un environnement de développement

Plus en détail

DirXML License Auditing Tool version 1.1 - Guide de l'utilisateur

DirXML License Auditing Tool version 1.1 - Guide de l'utilisateur DirXML License Auditing Tool version 1.1 - Guide de l'utilisateur Présentation Installation DirXML License Auditing Tool (DLAT) vous permet de déterminer le nombre de licences DirXML utilisées dans une

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

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

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante : Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante : http://www.hegerys.com/documentation/magicsafe-windows-doc.pdf

Plus en détail

Android UIThread, Thread, Handler et AsyncTask

Android UIThread, Thread, Handler et AsyncTask Android UIThread, Thread, Handler et AsyncTask jean-michel Douin, douin au cnam point fr version : 21 septembre 2012 Notes de cours 1 Bibliographie utilisée http://developer.android.com/resources/index.html

Plus en détail

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

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication Table des matières Atelier pratique 8 : Implémentation de la réplication 1 Exercice 1 : Création d'une publication 1 Exercice

Plus en détail

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

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Android. Présentation d Android. Florent Garin http://www.docdoku.com http://twitter.com/docdoku

Android. Présentation d Android. Florent Garin http://www.docdoku.com http://twitter.com/docdoku Android Présentation d Android 20 novembre 2010 Florent Garin http://www.docdoku.com http://twitter.com/docdoku Florent Garin Co-fondateur de DocDoku Société innovante IT http://www.docdoku.com Co-fondateur

Plus en détail

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

Tutoriel Android. Pour démarrer la programmation d'applications Android Tutoriel Android Pour démarrer la programmation d'applications Android Remarque préalable Comme il est impossible de traiter tous les aspects d'android, seulement quelques uns seront présentés. De plus

Plus en détail

E-mail : [email protected] - Web : http://www.nqicorp.com

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com - 5, rue Soutrane - 06560 Valbonne Sophia-Antipolis E-mail : [email protected] - Web : http://www.nqicorp.com NQI Orchestra 3.3 - Guide d'installation Linux....................................................................

Plus en détail

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

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom? Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?. 1 Télécharger X-Lite La première étape est de télécharger le logiciel X-Lite du fabricant. S il vous plaît choisir le logiciel

Plus en détail

Tutoriel Android - TP de prise en main

Tutoriel Android - TP de prise en main Tutoriel Android - TP de prise en main To cite this version:. Tutoriel Android - TP de prise en main. École d ingénieur. France. 2014, pp.51. HAL Id: cel-01082588 https://hal.archives-ouvertes.fr/cel-01082588v2

Plus en détail

COMMENT INSTALLER LE SERVEUR QIPAIE

COMMENT INSTALLER LE SERVEUR QIPAIE COMMENT INSTALLER LE SERVEUR QIPAIE A. INSTALLEZ LE SERVEUR QIPAIE...2 B. VÉRIFIEZ LE PARTAGE DU RÉPETOIRE DES COPIES DE SÉCURITÉ QIPAIE....12 C. COMMENT REFAIRE LE PARTAGE DBQIPAIEBACKUPS DANS WINDOWS

Plus en détail