Top Banner
Ahcène Bounceur J2ME Java 2 Micro Edition Ahcène Bounceur Multimédia et Applications Intégrées
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

Feb 09, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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