J2ME Java 2 Micro Edition -...

52
Ahcène Bounceur J2ME Java 2 Micro Edition Ahcène Bounceur Multimédia et Applications Intégrées

Transcript of J2ME Java 2 Micro Edition -...

Page 1: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

J2ME Java 2 Micro Edition

Ahcène Bounceur

Multimédia et Applications Intégrées

Page 2: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Sommaire

1. Introduction

2. Développement

3. Interface utilisateur

4. Interaction utilisateur

5. Persistance

Page 3: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Sommaire

1. Introduction

2. Développement

3. Interface utilisateur

4. Interaction utilisateur

5. Persistance

Page 4: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

INTERFACE UTILISATEUR Chapitre 3

Page 5: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Les classes

User Interface Package

javax.microedition.lcdui The UI API provides a set of features for implementation of user interfaces for MIDP applications.

javax.microedition.lcdui.game The Game API package provides a series of classes that enable the development of rich gaming content for wireless devices.

Page 6: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Classes de haut niveau

• Portabilité idéale

– Pas de contrôle total de l’affichage

• « Look and Feel » géré par l’appareil .

Page 7: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Classes de bas niveau

• Canvas

• GameCanvas

• Graphics

• Portabilité restreinte

– mais possibilité de placement précis à l’écran

Page 8: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

La classe abstraite Displayable

• Affichage => implémenter les méthodesde la classe Displayable

• Un displayable comporte : – un titre

– un ticker

– des commandes associées

– ...

• Graphics n’utilise pas cette classe – Comporte des méthodes qui manipulent

directement l’écran de l’appareil

Page 9: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

La classe Display

• obtenir des informations sur les propriétés d’affichage de l’appareil

• demander l’affichage d’objets à l’écran

• accéder aux objets affichés

Page 10: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Exemple

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class helloMIDlet extends MIDlet {

private Display display; // The display for this MIDlet

TextBox box = null; // TextBox to display text

public helloMIDlet() { }

public void startApp() {

display = Display.getDisplay(this);

box = new TextBox("Simple Example", "Hello World", 20, 0);

display.setCurrent(box);

}

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

}

Page 11: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Exemple

– On utilise la méthode statique getDisplay de la

classe Display pour obtenir l’objet display

unique à chaque MIDlet display = Display.getDisplay(this);

– TextBox est un Displayable ! box = new TextBox("Simple Example","Hello World",20,0);

– On ne peut afficher qu’un seul objet Displayable

à la fois display.setCurrent(box);

Page 12: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Screen

– Base pour tous les écrans de haut niveau Propriétés communes pour tous ces écrans

Page 13: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Alertes

– Messages à l’intention de l’utilisateur

• limitées en temps (temps fixé en ms)

• modales* (requièrent une action utilisateur)

– On peut y associer :

• son

• image

• indicateur de progression

*Pour une alerte modale : Utiliser Alert.FOREVER

Page 14: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Listes

– Sélection d’éléments (textes et/ou images) dans une liste de choix

– Différents types de listes :

• MULTIPLE sélection multiple

• EXCLUSIVE sélection simple

• IMPLICIT sélection simple et confirmation

Page 15: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Formulaires

– Peuvent contenir tous les éléments qui héritent de la classe Item

– Disposition en rangées de tailles égales

– Scrollbars gérées automatiquement

Page 16: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• TextField

– saisie avec contraintes

– deux composantes :

• label + texte

Page 17: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• StringItem

• Affichage de textes

• deux composantes :

– label + texte

Page 18: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• ImageItem

• Affichage d’images

• Un objet ImageItem doit

contenir une référence à

un objet Image

Page 19: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• ChoiceGroup

– Sélection

Page 20: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• DateField

– Saisie date ou heure

Page 21: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Gauge

– Indicateurs

Page 22: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• Spacer

– Composant :

• vide

• non interactif

• de taille minimum

Utile pour positionner au plus juste les autres éléments

Page 23: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de haut niveau

• TextBox

– saisie et édition de texte

Page 24: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de bas niveau

• Canvas

– Classe abstraite, l’étendre pour réaliser un affichage

– Surcharger la méthode paint(Graphics g)

• Graphics => services de rendu 2D

• Possibilité de gérer les touches ou d’utiliser des commandes

Page 25: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Retour sur les classes de bas niveau

• Exemple :

Page 26: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

INTERACTION UTILISATEUR Chapitre 4

Page 27: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• objet Command

– équivaut au bouton ou menu item dans une application standard

– ne peut être associé qu’aux objets qui héritent de Displayable

– est défini par :

• ses labels affichés par le téléphone selon l’espace disponible

• le type de commande BACK, CANCEL, OK …

• une priorité d’affichage

Page 28: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• Interface CommandListener

– Permet de réaliser des actions déclenchées par l’activation d’un objet Command

– Cette interface contient une méthode :

• commandAction(Command c, Diplayable d)

– Ce listener est enregistré grâce à la méthode de la classe Displayable :

• setCommandListener(CommandListener cl)

Page 29: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• Exemple :

Page 30: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• Classe abstraite CustomItem

– Permet de créer un élément d’interaction personnalisé

– Marche à suivre :

• hériter de CustomItem

• implémenter les méthodes suivantes : – public int getPrefContentWidth(int height)

– public int getPrefContentHeight(int width)

– public int getMinContentWidth()

– public int getMinContentHeight()

– public void paint(Graphics g, int w, int h)

Page 31: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• Exemple 1/2 :

Page 32: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Interaction utilisateur

• Exemple 2/2 :

Page 33: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

PERSISTANCE Chapitre 3

Page 34: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• API qui permet aux MIDlets de lire et enregistrer des données sur l’appareil

• Seul moyen de persistance sur la plupart des téléphones (JSR 75 sur les plus récents)

Page 35: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• RecordStore

– Une sorte de base de données constituée d’enregistrements persistants au fur et à mesure des instanciations de la MIDlet

Page 36: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• RecordStore

– Toutes les opérations sur un « RecordStore » sont :

– atomiques

– Synchrones

– Sérialisées

⇒pas de corruption en cas d’accès multiples

• Synchronisation :

– timestamp

– numéro de version

Page 37: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• RecordStore

– Une MIDlet peut :

• créer plusieurs « RecordStore »

• accéder aux « RecordStore » des autres MIDlets

• autoriser l’accès à son « RecordStore » par d’autres MIDlets (depuis MIDP 2.0)

=> le nom du record store doit être connu

Page 38: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• RecordStore

– Espace disponible pour la persistance variable selon les appareils (8ko minimum, pas de maximum

– Conseil : fixer l’attribut -> MIDlet-Data-Size dans le manifeste et le JAD

– L’appareil peut refuser l’installation si il n’y a pas assez de place

• Dans la pratique, la plupart des appareil permettent d’excéder le seuil fixe

Page 39: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• RecordStore

– Enregistrement :

• un id

• une suite de bytes

Page 40: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Ouverture d’un RecordStore

– Nom : 1 à 32 caractères unicodes (sensible à la casse)

• unique dans une MIDlet suite* donnée

• noms identiques autorisés pour 2 MIDlets de suite différentes

*MIDlet appartenant à la même archive jar

Page 41: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Fermeture d’un RecordStore

Page 42: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Suppression d’un RecordStore

Page 43: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Lister les RecordStore

Page 44: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Insérer un enregistrement dans un RecordStore

– Méthode addRecord() classe RecordStore

• Insertion bloquante et atomique

• retourne l’ID du nouvel enregistrement

Page 45: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Mettre à jour un enregistrement dans un RecordStore

– Méthode setRecord() classe RecordStore

– Nécessaire de connaître l’ID de l’enregistrement concerné

public int getRecord(int recordId, byte[] buffer, int offset)

public byte[] getRecord(int recorded)

Page 46: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Supprimer un enregistrement dans un RecordStore

– Méthode deleteRecord() classe RecordStore

– Nécessaire de connaître l’ID de l’enregistrement concerné

• Cet ID ne sera plus utilisé par la suite …

Page 47: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Flux de données en écriture

Page 48: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Flux de données en lecture

Page 49: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Enumération d ’enregistrements

– Interface RecordEnumeration

Page 50: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Filtrer une énumération

– Interface RecordFilter

– Implémenter la méthode

boolean matches(byte[] candidate)

Page 51: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur

Record Management Store

• Trier une énumération

– Interface RecordComparator

– Implémenter la méthode

int compare (byte[] b1, byte[] b2)

Page 52: J2ME Java 2 Micro Edition - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/j2me/2... · 2012-11-21 · •objet Command –équivaut au bouton ou menu item dans une

Ahcène Bounceur