APPLICATIONS JAVA. 3. Java 2 Micro Edition (J2ME) Développement d'applications mobiles Mobile Information Device Profile (MIDP) J2ME - MIDlet



Documents pareils
APPLICATIONS JAVA. 1. JDBC Java Database Connectivity. Applications Web

Java ME : une présentation. Jean-Marc Farinone

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP1 : Initiation à Java et Eclipse

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Manuel d installation de l application Dimona New via SMS

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Programmer en JAVA. par Tama

1.3 Gestion d'une application

Java 7 Les fondamentaux du langage Java

Machine virtuelle Java pour Palm TX

Tutorial pour une application simple

INITIATION AU LANGAGE JAVA

Initiation à JAVA et à la programmation objet.

Encadré par : Michel SIMATIC

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

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

as Architecture des Systèmes d Information

Bases Java - Eclipse / Netbeans

Sélection du contrôleur

TP1 : Initiation à Java et Eclipse

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Introduction au langage Java

RMI le langage Java XII-1 JMF

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Langage Java. Classe de première SI

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

TP SIN Programmation sur androïde Support : eclipse

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

Remote Method Invocation (RMI)

Une introduction à Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

DOCUMENTATION VISUALISATION UNIT

Cours 1: Java et les objets

Programmation Objet Java Correction

Application web de gestion de comptes en banques

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

Tutorial et Guide TeamViewer

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

TD/TP 1 Introduction au SDK d Android

Héritage presque multiple en Java (1/2)

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

GUIDE de prise en main. let s play

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

Introduction à Eclipse

FAQ pour tablette Windows 8 (NS-15MS0832 et NS-15MS0832B) Avril 2015

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

MMSCam. Travail de diplôme Pilotage à distance d un téléphone MMS. Département d électricité et d informatique. Auteur : Jeanmonod David

Java DataBaseConnectivity

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

Interfaces graphiques avec l API Swing

JOnAS Day 5.1. Outils de développements

Facility Touch Client. SAUTER EY-TC505F110 Logiciel Facility Touch Client Mise en service. Manuel D /26 D D

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

J2ME. Développement d applications Java pour terminaux mobiles - 1 -

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Warren PAULUS. Android SDK et Android x86

Assistance à distance sous Windows


TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Projet de Veille Technologique

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

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

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

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

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

Manuel du composant CKForms Version 1.3.2

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

SAUVEGARDER SES DONNEES PERSONNELLES

Java Licence Professionnelle CISII,

L51W Guide de l application

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

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Optimiser pour les appareils mobiles

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

La carte à puce. Jean-Philippe Babau

Portage et développement de jeux Java sur téléphones mobiles. Licence Professionnelle SIL 25 juin 2007

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Traitement de données

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Déploiement d applications Java ME

Utiliser des logiciels Windows sous Linux Ubuntu

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java Licence professionnelle CISII,

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

RESPONSIVE WEB DESIGN

ENVOI EN NOMBRE DE MESSAGES AUDIO

7.0 Guide de la solution Portable sans fil

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Guide de démarrage rapide : NotifyLink pour Windows Mobile

Transcription:

APPLICATIONS JAVA J2ME - MIDlet Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 2 3. Java 2 Micro Edition (J2ME) Développement d'applications mobiles Mobile Information Device Profile (MIDP)

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 3 J2ME Domaines d application Carte à Puce (carte bancaire, badge) Téléphone mobile (Smartphone) Assistant Personnel (PDA) Cartable Electronique (ebook) Appareil photo et caméscope Décodeur TV Numérique (Canal+) Console de Jeu Terminal de paiement, Guichet, Parcmètre Voiture Satellite, Sonde Electroménager Portail maison, parque résidence Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 4 J2ME - Java 2 Micro Edition J2ME définit deux grandes familles d'appareils : Appareils à fonctionnalités dédiées ou limitées : ressources et interface graphique limitées, peuvent se connecter par intermittence au réseau CLDC (Connected Limited Device Configuration : JSR30 - mémoire 128KB à 512KB). (exemple : téléphone mobile, agenda électronique, PDA, pagers,...) Appareils proposant une interface graphique riche, possédant une connexion continue au réseau CDC (Connected Device Configuration : JSR36 - RAM > 512 Kb) (exemple : PDA haut de gamme, Smartphone, système de navigation,...) J2ME est modulaire grâce à trois types d'entités : Les configurations : définissent des caractéristiques minimales d'un large sous type de matériel, d'une machine virtuelle et d'api de base Les profiles : définissent des API relatives à une fonctionnalité commune à un ensemble d'appareils (exemple : interface graphique,...) Les packages optionnels : définissent des API relatives à une fonctionnalité spécifique dont le support est facultatif

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 5 J2ME - Java 2 Micro Edition Configuration et Profile Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 6 J2ME - Java 2 Micro Edition (CLDC) De nombreuses classes sont définies dans J2SE et J2ME mais souvent elles possèdent moins de fonctionnalités dans l'édition mobile. L'API du CLDC se compose de quatre packages : java.io : classes pour la gestion des entrées - sorties par flux java.lang : classes de base du langage java java.util : classes utilitaires pour gérer les collections, la date et l'heure javax.microedition.io : classes pour gérer des connections génériques L'API du MIDP se compose des API du CDLC et de trois packages javax.microedition.midlet : cycle de vie de l'application javax.microedition.lcdui : interface homme machine javax.microedition.rms : persistance des données Les applications créées avec MIDP sont des MIDlets : classes qui permettent le dialogue entre le système et l'application.

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 7 J2ME - Java 2 Micro Edition (MIDlet) Programmation d'une MIDlet : Une application MIDlet est une sous-classe (hérite) de la classe MIDlet : public classe monapplimidlet extends Midlet { Une MIDlet en Java2ME équivaut à une Applet en Java2SE C'est le même mode de fonctionnement contrôlé par l'environnement d'exécution, qui normalement se traduit par la MVJ. Un constructeur MIDlet est placé pour exécuter ou mettre en place une seule fois les actions nécessaires pour la durée de vie de la MIDlet. Instancier les écrans et les commandes abstraites Définir les champs statiques ou d'instance Attribuer un écouteur pour chaque écran Quand une application de type MIDlet est lancée l'environnement appelle en premier la méthode : MIDlet.startApp() qui installe l'écran. Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 8 J2ME - Java 2 Micro Edition (MIDlet) Une midlet possède trois méthodes gérant le cycle de vie de l'application en trois états possibles (active, suspendue ou détruite) : startapp() : méthode appelée à chaque démarrage ou redémarrage de l'application pauseapp() : cette méthode est appelée lors de la mise en pause de l'application destroyapp() : cette méthode est appelée lors de la destruction de l'application Les trois méthodes doivent obligatoirement être redéfinies. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Test extends MIDlet { public Test() { //Constructeur public void startapp() { // début d'exécution public void pauseapp() { // en pause public void destroyapp(boolean unconditional) {

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 9 J2ME Création d une MIDlet La classe MIDlet se trouve dans le package javax.microedition.midlet Les composants de l interface utilisateur se trouve dans le package javax.microedition.lcdui Une application interactive demande l accès à l écran mobile. Cela devient possible par l instanciation de la classe Display. private Display display; La classe Form dérive de la classe Displayable. On peut utiliser l instance de cette classe avec ses attributs pour afficher un message interactif. private Form hellofrm; Le constructeur de la classe MIDlet crée une instance de la classe Form en faisant passer l attribut à afficher. public HelloMIDlet() { hellofrm = new Form("Bonjour Midlet"); Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 10 J2ME Création d une MIDlet Pour obtenir l affichage de la Form on prend l instance de la classe Display par sa méthode getdisplay() pour la réutiliser dans son objet setcurrent(), une méthode de la classe Form. protected void startapp() { display = Display.getDisplay(this); display.setcurrent(hellofrm); Le développement d'une MIDlet demande une IDE et un compilateur de Java2ME. Un des meilleurs outils est Java(TM) ME Platform SDK 3.0 proposé par Sun qui contient un Device Manager pour la simulation de diverses unités mobiles. L'environnement Eclipse propose un plugin pour le développement des MIDlets L'IDE Netbeans dispose d'un environnement de développement de MIDlets par son propre plugin.

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 11 J2ME - MIDlet - la classe Form import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HelloMIDlet extends MIDlet { private Display display; private Form hellofrm; public HelloMIDlet() { hellofrm = new Form("Bonjour Midlet"); protected void startapp() { display = Display.getDisplay(this); display.setcurrent(hellofrm); protected void pauseapp() { protected void destroyapp(boolean unconditional) { Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 12 J2ME - MIDlet - la classe TextBox La classe TextBox TextBox est un composant de type Screen et permet l'affichage et la modification d'un texte à l'écran. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MIDletBonjour extends MIDlet { // Attributs private Display display; private TextBox textbox; // constructeur public MIDletBonjour() { this.display = Display.getDisplay(this); this.textbox = new TextBox("", "Bonjour", 20, 0); public void startapp() { display.setcurrent(textbox); public void pauseapp() { public void destroyapp(boolean unconditional) {

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 13 J2ME - MIDlet - La classe List La classe List La classe permet la sélection d'un ou plusieurs éléments dans une liste d'éléments. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MIDletList extends MIDlet { private Display display; private List liste; protected static final String[] items = {"Item 1","Item 2","Item 3","Item 4"; public MIDletList() { this.display = Display.getDisplay(this); this.liste = new List("Selection", List.EXCLUSIVE, items, null); public void startapp() { display.setcurrent(liste); public void pauseapp() { public void destroyapp(boolean unconditional) { Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 14 MIDlet - La classe Forme et Item La classe Form La classe From sert de conteneur et permet d'insérer dans l'élément graphique qu'elle représente d'autres éléments graphiques de type Item. La classe Item La classe Item est la classe mère de tous les composants graphiques qui peuvent être insérés dans un objet de type Form. La classe définit deux méthodes : getlabel() et setlabel(). Composants qui héritent de la classe Item ChoiceGroup : sélection d'un ou plusieurs éléments DateField : affichage et saisie d'une date Gauge : affichage d'une barre de progression ImageItem : affichage d'une image StringItem : affichage d'un texte TextField : saisie d'un texte

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 15 J2ME - MIDlet - La classe Forme import javax.microedition.midlet.*; // montre les possibilités de import javax.microedition.lcdui.*; // l'interface graphique public class MidletFormItem extends MIDlet { private Display display; // l'unité écran private Form form; // conteneur 'Form' private ChoiceGroup choicegroup; // groupe de radio-bouton private DateField datefield; // objet calendrier private DateField timefield; // objet planning horaire private Gauge gauge; // ligne de progression private StringItem stringitem; // affiche chaîne de caractères private TextField textfield; // champ de saisie public MidletFormItem() { // Constructeur this.display = Display.getDisplay(this); // instancier les objets this.form = new Form("Ma form"); // avec leurs paramètres String choix[] = {"Choix 1", "Choix 2"; stringitem = new StringItem(null,"Mon texte"); choicegroup=new ChoiceGroup("Sélectionner",Choice.EXCLUSIVE,choix,null); datefield = new DateField("Heure",DateField.TIME); timefield = new DateField("Date",DateField.DATE); gauge = new Gauge("Avancement",true,10,1); textfield = new TextField("Nom","Votre nom",20,0); form.append(stringitem); form.append(choicegroup); form.append(timefield); form.append(datefield); form.append(gauge); form.append(textfield); public void startapp() { display.setcurrent(form); public void pauseapp() { public void destroyapp(boolean unconditional) { Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 16 J2ME - MIDlet - Les événements La gestion des événements Un objet de la classe Command est un "bouton MIDP" que l'utilisateur peut actionner à l'aide des touches clavier. Les Displayable : Screen, TextBox, etc. possèdent une méthode : public void addcommand(command); Le bouton est ajouté dans l'interface graphique du Displayable en fonction de nombre de boutons, type de l'écran ou de téléphone mobile. La classe Command possède un seul constructeur : public Command(String label, int type, int priority); label : le texte du bouton; type : est une constante de la classe Command. OK : suggère le lancement d'un traitement; BACK : doit ramener à l'écran précédent CANCEL : suggère de ne pas lancer un traitement; STOP : suggère d'arrêter un traitement EXIT : doit arrêter la MIDlet; HELP : doit afficher une aide. priority : les petites valeurs amènent une Command mieux placée dans l'interface.

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 17 J2ME - MIDlet - Les événements La programmation des traitements des événements est similaire à J2SE On associe un (seul) listener au composant. Le listener lance une méthode convenue lorsque la Command associé au Displayable a été manipulée par l'utilisateur. L'association est faite par : public void setcommandlistener(commandlistener l); La méthode lancée par le listener est : public void commandaction(command c, Displayable d); Le premier argument indique la Command de l'interface graphique qui a été utilisée Une Command peut être associé à plusieurs Displayable, le second argument indique le Displayable qui contient la Command actionnée par l'utilisateur La méthode setcommandlistener() est lancée sur le Displayable contenant la Command. Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 18 J2ME - MIDlet - Les événements import java.util.*; // Midlet qui affiche la date et l'heure import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class datemidlet extends MIDlet implements CommandListener { private Command exitcommand; // La commande exit private Display display; // le 'display' pour la MIDlet public datemidlet() { // constructeur de la Midlet display = Display.getDisplay(this); exitcommand = new Command("Exit", Command.EXIT, 0); public void startapp() { // méthode appelée à l'activation de la Midlet String str = null; // déclarer une chaîne de caractère Date date = new Date(); // Instancier un objet de type Date str = "Date et Heure : " + date.tostring();// convertir date en str // TextBox comme conteneur pour afficher la chaîne 'str' TextBox t = new TextBox("Date", str, 256, 0); t.addcommand(exitcommand); // ajouter bouton 'exit' t.setcommandlistener(this); // installer l'écouteur display.setcurrent(t); // rendre visible public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable s) { if (c == exitcommand) { // déterminer la commande destroyapp(false); notifydestroyed(); // détruire l'application // dégager la mémoire

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 19 J2ME - MIDlet - Un exemple complet import javax.microedition.lcdui.*; // Le Midlet inverse un texte saisi dans un champ multi-ligne import javax.microedition.midlet.midlet; // Le bouton 'menu' fait défiler le bouton 'Reverse' public class TextBoxInteractionMIDlet extends MIDlet implements CommandListener { private static final int MAX_TEXT_SIZE = 64; // définir la taille du texte protected TextBox textbox; protected Display display; protected boolean started; Command exitcommand, reversecommand; protected void startapp() { // méthode exécutée en premier if (!started) { // assure une seule instanciation des objets String str = null; // cela remplace la fonction du constructeur str = "Programme avec TextBox"; // TextBox champ de texte multi-ligne textbox = new TextBox("TextBox Example",str,MAX_TEXT_SIZE,TextField.ANY); exitcommand = new Command("Exit", Command.EXIT, 0); // bouton de sortie reversecommand = new Command("Reverse", Command.OK, 0); textbox.addcommand(exitcommand); // ajouter au conteneur textbox.addcommand(reversecommand); textbox.setcommandlistener(this); // installer écouteur d'événements display = Display.getDisplay(this); // installer l'écran display.setcurrent(textbox); // visualiser started = true; protected void pauseapp() { protected void destroyapp(boolean unconditional) { public void commandaction(command cmd, Displayable d) { if (cmd == exitcommand) { // déterminer la nature de la commande destroyapp(true); // arrêter l'application notifydestroyed(); else if (cmd == reversecommand) { // bouton 'Reverse' String text = textbox.getstring(); // récupérer le texte du champ if (text!= null) { // s'il y a du texte StringBuffer str = new StringBuffer(text); // buffériser le texte textbox.setstring(str.reverse().tostring()); // inverser à l'écran Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 20 MIDlet - Un exemple avec TextField import javax.microedition.lcdui.*; // Introduire un nom dans le champ import javax.microedition.midlet.*;// Bouton submit du menu modifie le champ public class TextFieldCapture extends MIDlet implements CommandListener { private Display display; // définir l'écran private Form form; // définir le conteneur private Command submit; // bouton de soumission private Command exit; // bouton de sortie private TextField textfield; // champ de saisie public TextFieldCapture() { // constructeur form = new Form("Signer la forme"); submit = new Command("Submit",Command.SCREEN,1); exit = new Command("Exit",Command.EXIT,1); textfield = new TextField("Entrez votre prénom:","",30,textfield.any); display = Display.getDisplay(this); form.addcommand(exit); // ajouter au conteneur form.addcommand(submit); form.append(textfield); form.setcommandlistener(this); // monter l'écouteur des évènement public void startapp() { display.setcurrent(form); public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command command, Displayable displayable) { if (command == submit) { // charger le champs avec texte et le nom textfield.setstring("bonjour " + textfield.getstring()); form.removecommand(submit); // effacer le bouton du menu else if (command == exit) { // traiter le bouton de sortie destroyapp(false); // fermer l'application notifydestroyed();

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 21 MIDlet - Les classes Image et ImageItem Deux classes pour manipuler des images : La classe Image : Crée un objet image et rapporte les attributs de l'image tels que : hauteur et largeur La classe ImageItem : Affiche l'image dans un conteneur de type Forme et rapporte les attributs d'alignement de l'image Une MIDlet autorise deux types d'image : fixe : qui ne peut pas être modifiée après création mutable : image créée et stockée en mémoire Afficher une image : Image.createImage(String name); ImageItem(String label, Image img, int layout, String alttext); Pour afficher l'image il faut ajouter le constructeur dans un conteneur de type Forme. Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 22 J2ME - MIDlet - Afficher une image import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class imagemidlet extends MIDlet implements CommandListener { private Command cmdexit; private Display display = null; private Form mainforme; private StringItem Msg; private Ticker t; // A Ticker is a piece of text that runs continuously across the display public imagemidlet() { display = Display.getDisplay(this); Déposer l'image dans cmdexit = new Command("Exit", Command.EXIT, 1); les répertoires 'src' et mainforme = new Form("ma Forme"); 'dist' du projet j2me t = new Ticker("Le Rafale"); Msg = new StringItem("", " - Le Rafale - "); mainforme.addcommand(cmdexit); mainforme.append(msg); mainforme.setcommandlistener(this); try { Image img = Image.createImage( (display.iscolor())? "/rafale.png" : "/img.png"); mainforme.append(new ImageItem(null, img, ImageItem.LAYOUT_CENTER, null)); display.setcurrent(mainforme); catch (java.io.ioexception e) { e.printstacktrace(); public void startapp() { mainforme.setticker(t); display.setcurrent(mainforme); public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable s) { if (c == cmdexit) { destroyapp(false); notifydestroyed();

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 23 MIDlet - Les classes Graphics et Canvas La classe Graphics propose les méthodes de dessin de : Rectangles, Ellipses, Lignes, Textes, Images, La classe Canvas propose : La surface de dessin et les méthodes "call-back" d interactivité Le dessin peut se faire Soit directement à l écran Soit dans une image : En appelant la méthode getgraphics() de la classe Image La couleur est codée sur 3 octets : Ox00RRGGBB 0x00FF0000 : Rouge 0x0000FF00 : Vert 0x000000FF : Bleu Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 24 MIDlet - Les classes Graphics et Canvas Quelques méthodes de la classe Graphics pour dessiner des formes graphiques et mettre du texte à l'écran Apparaitre un texte : drawstring(string text, float x, float y, Style style) Le "text" à afficher à partir des coordonnées "x" et "y" avec un "style" d'alignement Dessiner un rectangle : drawrect(int x, int y, int width, int height) Un rectangle avec largeur (width) et hauteur (height) à partir des coordonnées "x" et "y" Dessiner un cercle : drawarc(int x, int y, int width, int height, int startangle, int arcangle) Un cercle est une courbe de 360 deg., dont le centre a les coordonnées "x" et "y" et le rayon est exprimé par une hauteur et une largeur. Si hauteur égale largeur (width==height) on obtient un cercle, sinon une ellipse. On dessine un arc si le startangle est supérieur à 0 et le arcangle est inférieur à 360.

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 25 J2ME - MIDlet - Afficher un dessin import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class dessinmidlet extends MIDlet implements CommandListener { private Canvas feuille; public dessinmidlet() { feuille = new Canvas() { public void paint(graphics g) { g.setcolor(0xffffff); g.fillrect(0,0,getwidth(),getheight()); // un rectangle plein g.setcolor(0xff0000); g.drawline(5,5,60,60); g.setcolor(0x00ff00); g.drawrect(30,30,100,50); g.setcolor(0x0000ff); g.fillarc(60,60,50,50,0,360); // un cercle plein g.setcolor(0xff00ff); g.drawstring("figures",100,10, Graphics.TOP Graphics.LEFT); ; public void startapp() { Display.getDisplay(this).setCurrent(feuille); public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable s) { if (c.getcommandtype() == Command.EXIT) notifydestroyed(); Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 26 Affichage des formes géométriques

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 27 MIDlet - La classe Canvas On peut interagir avec le Canvas : Avec les touches du clavier; Avec un dispositif de pointage; Avec des touches de jeu. Pour avoir un retour sur les actions des touches, il faut surcharger les méthodes dérivées de la classe Canvas : Pour être prévenu qu une touche est pressée : La méthode keypressed(int keycode) Pour être prévenu qu une touche est maintenue enfoncée : La méthode keyrepeated(int keycode) Pour être prévenu qu une touche est relâchée : La méthode keyreleased(int keycode) Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 28 MIDlet - La classe Canvas Le Canvas fournit des constantes pour nommer les touches : Pour les chiffres : KEY_NUM0,, KEY_NUM9 Pour le # : KEY_POUND Pour les touches de direction : LEFT, RIGHT, UP, DOWN Pour les touches de jeu : GAME_A, GAME_B, GAME_C, GAME_D, FIRE

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 29 J2ME - MIDlet - Un petit jeu import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class jeuxmidlet extends MIDlet implements CommandListener { private Canvas jeu; private Display dsp; private Command cmdq; public jeuxmidlet() { cmdq = new Command("Exit", Command.EXIT, 0); jeu = new Canvas() { // Définir le Canvas et les coordonnées de début int x = getwidth()/2; int y = 150; // du jeu de raquette public void paint(graphics g) { g.setcolor(0xffffff); // Définir la zone du jeu g.fillrect(0,0,getwidth(),getheight()); g.setcolor(0xff0000); g.fillrect(x,y,20,5); // Définir la raquette comme un rectangle public void keypressed(int key) { // Traitement des touches 1 et 3, if (key == Canvas.KEY_NUM1) { // rafraichir l'écran pour if (x > 5) { x-=5; repaint(); // obtenir la position else if(key == Canvas.KEY_NUM3) { // suivante de la raquette if (x < getwidth()-5) { x+=5; repaint(); ; public void commandaction(command c, Displayable s) { if (c == cmdq) { notifydestroyed(); public void startapp() { dsp = Display.getDisplay(this); dsp.setcurrent(jeu); public void pauseapp() { public void destroyapp(boolean b) { Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 30 Développement avec J2ME-SDK 3.0 (1) Lancer l'application à partir de l'icône : Ouvrir File -> New Project

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 31 Développement avec J2ME-SDK 3.0 (2) Pour une MIDlet choisir MIDP Application -> Next Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 32 Développement avec J2ME-SDK 3.0 (3) Renseigner les champs: Project Name, Project Location -> Next

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 33 Développement avec J2ME-SDK 3.0 (4) Choisir la plate-forme de simulation et son profile -> Finish Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 34 Développement avec J2ME-SDK 3.0 (5) Bouton droit sur le nom du projet -> New -> MIDlet

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 35 Développement avec J2ME-SDK 3.0 (6) Préciser le nom du MIDlet -> Finish Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 36 Développement avec J2ME-SDK 3.0 (7) L'IDE génère un modelé d'application mobile à modifier.

Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 37 Développement avec J2ME-SDK 3.0 (8) Après précision du code à l'exécution on obtient : Java 2 Micro Edition - MIDlet IvMad - 2011, 2012 38 MIDlet - installation sur téléphone mobile Une application J2ME (MIDlet) après compilation est constituée de deux fichiers : application.jar et application.jad. On peut transférer les fichiers de l'application j2me sur le téléphone mobile du PC par voie GSM, Internet, câble, infrarouge ou Bluetooth afin de les installer. Il y a, en générale, 4 modes de déploiement d'une application j2me : Over-the-Air (OTA) ou à partir d'un Serveur Web : Les fichiers à installer sont accessibles sur un serveur Web qui reconnait les types MIME :.jar: application/java-archive;.jad: text/vnd.sun.j2me.app-descriptor, alors les fichiers sont téléchargés par le navigateur mobile du téléphone. L'installation commence au lancement du côté unité mobile du fichier.jad. IR ou Bluetooth peuvent être utilisés pour envoyer la MIDlet du PC à une unité mobile. L'installation alors se déroule de la même manière (voir OTA). L'envoi de la MIDlet par câble USB nécessite un logical de communication avec l'unité mobile ("Ovi suite" ou "PC suite" pour la marque Nokia). Un "WAP Push messages" sous la forme d'hyperlien pour télécharger la MIDlet.