Vous êtes sur la page 1sur 90

JAVA Micro Edition (JME)

Pour
Le développement des applications mobiles

10/05/2016 s.chougdali@gmx.fr 1
Les objectifs du cours:

• Comprendre et définir les termes suivants: JME (J2ME), CDC,


CLDC, MIDP, MIDlet, …

• Apprendre la solution JME pour développer des applications Java


pour des équipements mobiles.

• Comprendre l’architecture de la technologie JME.

• Installer et configurer l’environnement de travail.

• Exploiter l’API de base MIDP pour développer des MIDlets.

10/05/2016 s.chougdali@gmx.fr 2
Le plan du cours:
1. Introduction au JME.

2. Configurations et profils du JME.

3. Installation et configuration de l’environnement de développement.

4. L’API MIDP(Mobile Information Device Profil).

• Les interfaces Homme- Machine (IHM).

• La persistance des données.

5. Wireless Messaging API.

6. Mobile Media API.

10/05/2016 s.chougdali@gmx.fr 3
Les références:

http://java.sun.com/javame/reference/apis
http://devlopers.sun.com
http://www.ibm.com
http://jcp.org/jsr/details

10/05/2016 s.chougdali@gmx.fr 4
JME: Introduction

Les plateforme Java.

Plateforme Plateforme Plateforme Plateforme


JSE (J2SE) JEE (J2EE) JME (J2ME) Java Card
Java Standard Java Entreprise Java Mobile
Edition Edition Edition

CVM
JVM JVM Ou JCVM
KVM

Applications Applications Applications


Applications
Serveur & Java Mobiles & pour des Java
Standard
Applications Applications Cards & les
desktop
Entreprises Java smart Cards
embarquées

10/05/2016 s.chougdali@gmx.fr 5
JME: Introduction

Java Mobile Edition.


• Une plateforme Java de développement des applications pour des
périphériques mobile et embarqués appelés aussi des machines à
contraintes, conçue par SUN en 1999.

• Un sous ensemble de JSE.

Intérêts:

• Partager le même langage, la même conception depuis le terminal


jusqu’à le serveur.

• Programmes compacts, portables.

• Développement rapide et sûr, ainsi l’utilisation des outils homogène.

10/05/2016 s.chougdali@gmx.fr 6
JME: Introduction

Rappel sur les systèmes embarqués et mobiles.


• Un système embarqué (SE) est un système informatisé spécialisé qui
constitue une partie intégrante d’un système plus large ou d’une
machine.

• Un système embarqué (SE) est une combinaison de logiciel et


matériel, avec des capacités fixes ou programmables, qui est
spécialement conçu pour un type d’application particulier.

• Les domaines d’application des systèmes mobiles et embarqués sont


nombreux tels que: avionique, jeux et loisirs, Robots, santé, téléphone,

10/05/2016 s.chougdali@gmx.fr 7
JME: Introduction

Rappel sur les systèmes embarqués et mobiles.


Système embarqué &mobile: Système informatique standard:
- Processeur dédie (Microcontrôleur) - Processeur standard
• Architecture adaptée. • Architecture standard.
• Vitesse faible. • Vitesse élevée.
• Mémoire limitée (8-32bits). • Mémoire cache important.
• Faible consommation d’énergie. • Consommation d’énergie importante
• Petite taille.
Vs • Grande taille.
- Processeur DSP très puissant. - Disque dure = mémoire de masse.
- Absence d’un disque dure. - L’existence de l’OS.
- Généralement absence d’un OS. - Cout de fabrication élevé.
- Faible cout de fabrication. - Les périphériques standard.
- Les périphériques sont des capteurs.

10/05/2016 s.chougdali@gmx.fr 8
JME: Configurations

• Les configurations présentent les caractéristiques de bases d’un environnement


d’exécution pour un certain nombre de machines possèdent un ensemble de
caractéristique communes.
JME possède deux configurations:

- CLDC ( Connected Limited Device Configuration): Applications Applications


• Concerne les appareils de faibles ressources (moins de MIDlets Xlets, Java
512Kb de mémoire RAM, faible vitesse du processeur, 2D et Swing
connexion réseau limitée et par intermittence) comme
les téléphones mobiles. Profils
MIDP
• Cette configuration utilise KVM (Koctet Virtuelle
Machine de SUN).
- CDC ( Connected Device Configuration):
• Concerne les appareils qui possèdent des ressources CLDC CDC
importantes (au moins 2Mb de RAM, processeur 32bits,
meilleure connexion au réseau), comme les Smart
KVM CVM
phone ou des récepteurs et des décodeurs des chaines
TV.
• Cette configuration utilise CVM (Compact VM) = JVM
mais plus compacte

10/05/2016 s.chougdali@gmx.fr 9
JME: Configurations

CLDC ( Connected Limited Device Configuration):

• MIDP Libraries: (Mobile Information Device Profile)


Fournit un environnement complet au développement
des applications mobiles pour les téléphones, alors les
applications JME s’articule sur le concept MIDlets
Configuration – Profile.

• Les applications de cette configuration sont appelées Other


MIDP
MIDlets, se sont des applications Java dont son champ JSR 248 :optional
Libraries
peut couvrir des jeux, des applications métier… packages

• Les MIDlets peuvent être exploitées sur toutes les CLDC


plateformes qui respectes les spécifications J2ME.
KVM
• Optional packages sont généralement des APIs
apportent des fonctionnalités spécifiques comme: Le
Wireless messaging, les capteurs multimédia…

10/05/2016 s.chougdali@gmx.fr 10
JME: Configurations

CLDC ( Connected Limited Device Configuration):


Objectifs:

• La spécification CLDC a pour but de standardiser une plate-forme Java


hautement portable on tenant compte les contraintes ressources des appareils
connectés.

• Il est développé au travers du « Java Community Process (JCP) » qui regroupe


500 membres dont des opérateurs de téléphonie mobile, des constructeurs de
téléphones mobiles et des éditeurs de logiciels.

• CLDC a été conçue toute en gardant dans l’esprit , la facilitations de la portabilité


via la standardisation des APIs ainsi la possibilité d’extension en terme de
fonctionnalités.

10/05/2016 s.chougdali@gmx.fr 11
JME: Configurations

CLDC ( Connected Limited Device Configuration):


Limites:

• Pas de support total des spécifications JSE.


• Pas de finalization sur les objets.
• Pas d’interface Serializable.

Avantages: à partir de CLDC 1.1

• Ajout de méthodes sur les Strings et String buffers.


• Nouvelles APIs supporter tels que Localisation, Internationalisation, 3D, …
• Support d’une unité de calcul flottants.

10/05/2016 s.chougdali@gmx.fr 12
JME: Configurations

CDC ( Connected Device Configuration):

• La configuration CDC cible les appareils doté d’une


connexion réseau comme les PDA (Personnel Digital Xlets, Java 2D, Swing
Assistant) et les Set Top Box.

• Les spécifications CDC s’approchent de celles de JSE Optional profils


toute on gardant dans l’esprit les contraintes des
terminaux.
CDC Profils
• Les Xlets, Application Java 2D et Swing sont
généralement les applications de cette configuration.
CDC
• CDC possède des profils, sont généralement des APIs
CVM
• Le développeur peut ajouter des packages (APIs)
optionnels si il est nécessaire comme JDBC optional
profil.

10/05/2016 s.chougdali@gmx.fr 13
JME: Profiles

CLDC ( Connected Limited Device Configuration):


• Le Mobile Information Device Profile (MIDP) est le profile de base de la
configuration CLDC.

• Le MIDP 1.0 (JSR 37) apporte les fonctionnalités centrales requises par les
applications sur mobile avec interface utilisateur et sécurité réseau de base.

• MIDP 2.0 (JSR 118) étend MIDP 1.0 avec une interface utilisateur étendue
des fonctionnalités multimédia et jeu étendues, une connectivité plus riche, le
téléchargement d’application en ligne (OTA) et une sécurité complète. MIDP
2.0 est compatible MIDP 1.0.

• MIDP 2.0 intègre des fonctionnalités des packages optionnels tels que; ABB
(Audio Building Block) du MMAPI.

• MIDP 2.0 comporte aussi l’API de jeux Game qui permet facilement le
développement des jeux.
10/05/2016 s.chougdali@gmx.fr 14
JME: Profiles

CLDC ( Connected Limited Device Configuration):

• MIDP2.0 comporte des fonctionnalités apportent un meilleur contrôle du


graphisme et des performances.

• Les écrans d’alertes aussi sont des spécifications de MIDP2.0.

• MIDP2.0 supporte HTTPS.

• MIDP2.0 apporte un modèle de sécurité robuste.

• MIDP2.0 intègre la programmation concurrente via les Threads.

• MIDP2.0 offre la possibilité de communication entre les MIDlets.

NB: l’API MIDP sera encore détaillé dans la 4eme partie du cours.

10/05/2016 s.chougdali@gmx.fr 15
JME: Profiles

CDC ( Connected Device Configuration):


CDC possède 3 types de profiles:

• Fundation profile : le profile la plus basique de la configuration CDC, c’est


une API Java SE modifié et adapté pour les équipements à contraintes. Ce
profile n’offre d’un API graphique et compatible avec CLDC 1.1.

• Personal Basis Profile: il supporte fundation profile, comporte quelque


fonctionnalités permettant le gestion des IHM. Permet la création des
applications nommées Xlet similaire au applet du Java.

• Personal Profile: prend en compte les spécifications de Personal Basis Profile


et permet le support de AWT et Applet du Java.

• Packages optionnels: RMI Optional Package, JDBC Optional Package, Java


Cryptography Extension, Java Authentication and Authorization Service…

10/05/2016 s.chougdali@gmx.fr 16
JME: Installation et configuration de l’environnement de travail

• Par la suite nous utilisons la configuration CLDC et le profile MIDP 2.0 pour
développer des applications mobiles dites MIDlets.

• Pour développer des MIDlets il faut préparer un environnement de travail


qui comporte:

 Un IDE: Eclipse + pluging JME (EclipseMe).

 Wireless Toolkit 2.5.2 pour tester les applications.

10/05/2016 s.chougdali@gmx.fr 17
JME: Installation et configuration de l’environnement de travail

1- Téléchargement et installation de Wireless Toolkit2.5.2:

• Wireless Toolkit 2.5.2 pour CLDC est une solution open de Sun, permet le
test des applications type MIDlet, et elle supporte l’ API de base MIDP 2.0
ainsi que l’ensemble des packages optionnels.

• Wireless Toolkit 2.5.2 pour CLDC est téléchargeable sur le lien:


http://www.oracle.com/technetwork/java/download-135801.html

10/05/2016 s.chougdali@gmx.fr 18
JME: Installation et configuration de l’environnement de travail

1- Téléchargement et installation de Wireless Toolkit2.5.2:

• Télécharger Wireless Toolkit 2.5.2 pour Windows compatible avec la


configuration de vos machines.

• Installer Wireless Toolkit 2.5.2 et noter bien le chemin de l’installation qui


sera demander au cours de la configuration de Eclipse IDE.

• Constater qu’une raccourcie a été créer sur votre Bureau.

10/05/2016 s.chougdali@gmx.fr 19
JME: Installation et configuration de l’environnement de travail

2- Téléchargement et installation du pluging JME (EclipseMe):

• Installation du pluging EclipseMe à partir d’un fichier . Zip.

1. Télécharger le pluging EclipseMe sous l’extension .zip à partir du lien


suivant: http://sourceforge.net/projects/eclipseme/files/
2. A partir du menu Help + install new Software + add, définir le chemin du
fichier . Zip qu’a été télécharger à l’étape 1 et donner un nom au pluging
puis cliquer sur OK.

10/05/2016 s.chougdali@gmx.fr 20
JME: Installation et configuration de l’environnement de travail

2- Téléchargement et installation du pluging JME (EclipseMe):

• Installation du pluging EclipseMe à partir d’un fichier . Zip.

3. Sélectionner eclipseme.feature_x.x.x_site.zip puis cliquer sur Suivant.

4. Sélectionner EclipseMe puis cliquer sur Suivant.

5. Accepter les termes de la licence et par la suite cliquer sur Suivant.

6. L’écran suivant montre le chemin ou le pluging sera installé, cliquer sur


Terminer.

7. Autoriser l’installation et la mise à jour par un clique sur oui.

10/05/2016 s.chougdali@gmx.fr 21
JME: Installation et configuration de l’environnement de travail

3- Configuration de l’environnement de travail:

• Télécharger antenna-bin-0.9.13.jar.
• Aller Window + Preferences + J2ME et configurer l’écran comme la suite.

10/05/2016 s.chougdali@gmx.fr 22
JME: Installation et configuration de l’environnement de travail

3- Configuration de l’environnement de travail:

• Aller au fichier config.ini de votre Eclipse et ajouter la ligne suivante:


osgi.framework.extensions=eclipseme.core.hooks

• Sauvegarder la configuration et redémarrer eclipse.

10/05/2016 s.chougdali@gmx.fr 23
JME: Installation et configuration de l’environnement de travail

3- Configuration de l’environnement de travail:

• Pour importer les Devices sélectionner Window + Preferences + J2ME +


Device Management + import.

10/05/2016 s.chougdali@gmx.fr 24
JME: Installation et configuration de l’environnement de travail

3- Configuration de l’environnement de travail:

• Donner le chemin ou Wireless Toolkit qui a été installer puis cliquer sur
refresh.

• Sélectionner touts les Devices puis cliquer sur Finish.

10/05/2016 s.chougdali@gmx.fr 25
JME: Installation et configuration de l’environnement de travail

3- Configuration de l’environnement de travail:

• A la fin de cette configuration, il faut constater que l’écran suivant s’affiche:

Cela signifie que vous avez 4 Devices de test dont MediaControlSkin est défini
comme Device de test par défaut.

10/05/2016 s.chougdali@gmx.fr 26
JME: Déploiement d’une application J2ME

• Une application J2EM ou bien une MIDlet peut être déployée sur un périphérique
mobile par deux façons:

1. Directement via une liaison USB, Série ou Bluetooth,… entre le PC et le mobile,


on utilisant un logiciel de téléchargement comme Oxygène phone manger,
NOKIA phone manager, …

2. OTA: Over The Air c’est-à-dire on télécharge la MIDlet à partir d’un Serveur
par l’utilisation d’un URL qui représente l’adresse de la MIDlet.

• Dans les deux cas il faut créer un package d’installation qui comporte le fichier
(archive) .jar et le fichier de description .jad

• Chaque mobile possède une application manger qui gère l’installation, la mise à jour,
la désinstallation et l’exécution des applications Java.

10/05/2016 s.chougdali@gmx.fr 27
JME: Déploiement d’une application J2ME

• Exemple d’un fichier .jad

MIDlet-1: Repertoire.
MIDlet-Jar-Size: 66756
MIDlet-Jar-URL: http://localhost:8080/midp/TP_Contact_J2ME.jar
MIDlet-Name: Repertoire
MIDlet-Vendor: CHOUGDALI Salami
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0

• Dans le cas de déploiement local on doit copier les deux fichier TP_Contact_J2ME.jar
et TP_Contact_J2ME.jad, puis on exécute le premier fichier

10/05/2016 s.chougdali@gmx.fr 28
JME:L’API MIDP(Mobile Information Device Profile).

Introduction sur l’API MIDP :

• MIDP (Mobile Information Device Profile) est un profile standard défini pour
un ensemble de machines embarquées qu’ont des ressources et un interface
graphique limités.
• MIDP exige une configuration minimale:
 128KB de mémoire non volatile.
 32KB de mémoire volatile pour la pile d’exécution.
 8KB de mémoire volatile pour la persistance de données.
 Un écran de 96*54 pixels au minimum.
 Entrées/Sorties.
 Deux modes de connexion.
• La bibliothèque de base de l’API MIDP est constituée par:
 Javax.microedition.midlet: définit l’interaction entre l’application JME et l’environnement.
 Javax.microedition.lcdui: l’environnement de base pour développer l’interface utilisateur.
 Javax.microedition.lcdui.game: Facilite le développement des interfaces des jeux.
 Javax.microedition.rms: un mécanisme simple et sécurisé pour la persistance des données.
 Javax.microedition.media: fournit les outils pour créer un Player.
 Javax.microedition.io: la gestion des connexion.
 Core packages.
10/05/2016 s.chougdali@gmx.fr 29
JME:L’API MIDP(Mobile Information Device Profile).

De MIDP à MIDlet:

• Toute application MIDP doit dériver d’une classe spéciale nommée MIDlet.

• Cette approche permet la réduction des nombres de classes, chose qui


optimise l’ application mobile JME.

• La classe MIDlet est une classe du package javax.microedition.midlet.

• Le mot MIDlet est composer de deux mots: MIDP et Aplet alors on peut dire
que MIDlet est l’équivalant MIDP d’une applet ou le lancement et l’arrêt est
sous contrôle de l’environnement de l’exécution.

• Une MIDlet gère le cycle de vie d’une application MIDP via son cycle de vie.

10/05/2016 s.chougdali@gmx.fr 30
JME:L’API MIDP(Mobile Information Device Profile).

Cycle de vie d’une MIDlet:

• Les trois états d’une MIDlet sont: Active,


en repos, ou bien détruite.
• La méthode startApp() est la première
méthode qui s’exécute après le Destroyed
constructeur, elle comporte le métier de
l’application.
destroyApp() destroyApp()
• Une MIDlet peut passer à l’état de repos
via la méthode pauseApp() pour laisser startApp()
une autre application de s’exécutée.
• La destruction d’une MIDlet se fait à
Paused Active
l’aide de la méthode destroyApp(), cette
méthode peut être programmée par le
programmeur ou bien s’exécute d’une
façon automatique lorsqu’on quitte pauseApp()
startApp()
l’application.

10/05/2016 s.chougdali@gmx.fr 31
JME:L’API MIDP(Mobile Information Device Profile).

Structure d’une application de type MIDlet:


public class PremierApplicationJ2MEMidlet extends MIDlet {

public PremierApplicationJ2MEMidlet() {
//Mon constructeur
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
//C’est moi qui détruit l’application lorsqu’on quitte l’exécution ou bien si le
programmeur veut détruire l’application.
}
protected void pauseApp() {
// Parfois je me repose donc j’affiche rien.
}
protected void startApp() throws MIDletStateChangeException {
//Après le constructeur et au lancement de l’application c’est moi qui s’exécute
}

}
10/05/2016 s.chougdali@gmx.fr 32
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM

Displayable
Low level API High level API

Canvas Screen

GameCanvas

Alert Item Form List TextBox

ChoiceGroup DateField Gauge ImageItem StringItem TextField

10/05/2016 s.chougdali@gmx.fr 33
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM

• Il existe deux sortes d’API pour la construction des interfaces IHM:

1. API bas-niveau pour la construction des interfaces des jeux: permet de créer des
éléments de l’interface IHM basique.(Javax.microedition.lcdui.*).

2. API haut-niveau pour la construction des interfaces standard


(Javax.microedition.lcdui.Canvas).

• Pour afficher quelque chose à l’écran on utilise:


Display display=Display.getDisplay(MIDlet m);
display.setCurrent(Displayable d);

Exemple:

Display display=Display.getDisplay(midLet);
diaplay.setCurrent(textBox);

10/05/2016 s.chougdali@gmx.fr 34
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


1. La classe TextBox:

• Une classe qui hérite directement de la classe Screen permet l’affichage d’un texte qui
peut être éditable par l’utilisateur.
• La syntaxe:
TextBox maTaxt= new TextBox (String title, String text, in maxSize, int constraints)

Titre Contenu Longueur maximale Les contraintes

• Exemple:

10/05/2016 s.chougdali@gmx.fr 35
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Notre première application J2ME:

10/05/2016 s.chougdali@gmx.fr 36
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Classe Ticker:

• Permet la création d’un objet déroulant ou bien qui défile.

• Tous les objets qui hérites de la classe Screen peuvent


bénéficier d’un ticker.

• Syntaxe:

10/05/2016 s.chougdali@gmx.fr 37
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


2. La classe List (1):

• Hérite directement de la classe Screen.


• Syntaxe:

il existe de façons pour définir le constructeur de la classe List:


- Première façon:

Titre de la list : String Type de la list : int

Pour ajouter des éléments à la liste on utilise la méthode append:

L uri de l’image de l’élément de la liste : String


La désignation de l’élément de la liste : String

10/05/2016 s.chougdali@gmx.fr 38
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


2. La classe List (2):

- Deuxième façon:

Titre de la liste : String Les URIs des images associées


aux éléments de la liste : tableau de type Image

Type de la liste : int


Les désignation
des éléments de la liste : tableau de type String

10/05/2016 s.chougdali@gmx.fr 39
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


2. La classe List (3):

• Les types de la liste sont prédéfinis dont les principaux sont:


1. List.IMPLICIT : défini une liste standard

2. List.EXCLUVE : définie une liste dont un seul choix est possible

3. List.MULTIPLE : définie une liste qui permet le choix multiple

10/05/2016 s.chougdali@gmx.fr 40
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Notre deuxième application J2ME

10/05/2016 s.chougdali@gmx.fr 41
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


3. La classe Alert (1) :

• Alert hérite directement de la classe Screen.


• Permet d’afficher des messages généralement informatifs.
• L’objet Alert peut afficher une String, une image ou un jauge.
• Syntaxe
Alert offre deux types de constructeurs:
o Alert vide définie seulement par un titre (salut).

Titre :String
o Alert avec des paramètres:

Titre :String

Le message de l’Alert :String L’image de l’Alert :Image

Le type de l’Alert :int

10/05/2016 s.chougdali@gmx.fr 42
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


3. La classe Alert (2) :

• On peut modifier le temps d’affichage, les propriétés d’une Alert via les méthodes
setXX(…):

• On peut aussi récupérer les valeurs des propriétés d’une Alert via les méthodes
getXX():

• Les types d’une Alert sont prédéfinis:

• AlertType.CONFIRMATION : c’est une Alert de confirmation.


• AlertType.ALARM : permet la personnalisation d’une alarme.
• AlertType.INFO : une Alert d’information.

10/05/2016 s.chougdali@gmx.fr 43
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


La classe Command (1):

• Un objet de la classe Command peut rendre les applications J2ME interactive.

• L’interaction se fait via un button, un menu ou tout autre interface.

• Objet Command peut être appliquer à un objet Displayable.

• Il existe des Command de type: BACK, CANCEL, EXIT, HELP, OK, …

• Syntaxe:

Priorité : int
Label: String
Type : int

10/05/2016 s.chougdali@gmx.fr 44
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


La classe Command (2):

• A fin d’exploiter l’objet de la classe Command il faut que votre application


implémente l’interface CommandListener et par la suite redéfinir la méthode
commandAction(Command c, Displayable d).
Exemple:

10/05/2016 s.chougdali@gmx.fr 45
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


TP1:

Il est demander de développer un Interface Homme Machine permet l’affichage d’une


liste des Hôtels, chaque élément de la liste comporte une image (permet le vote pour cette
Hôtel) et la désignation de l’hôtel, aussi l’interface doit présenter deux commande une
sera appelée Exit et l’autre sera nommée Select. Les fonctions suivantes doivent aussi
programmées:
- La commande Exit consiste à quitter l’application.
- La commande Select permet de lancer une alerte de type INFO et qui affiche le
message suivant – Vous avez voter pour l’hôtel + Nom de l’hôtel - , et elle doit durer 3
second avant qu’elle disparaitre.

10/05/2016 s.chougdali@gmx.fr 46
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Correction du TP1:(1)

10/05/2016 s.chougdali@gmx.fr 47
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Correction du TP1:(2)

10/05/2016 s.chougdali@gmx.fr 48
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: (1)

• Form est le seule container de l’API MIDP.


• Form permet d’agréger un ensemble des éléments enfants de l’élément Item.
• Permet de gérer un Layout, le passage d’un élément à un autre et le scrolling.
• Les éléments supportés par Form sont: StringItem, TextField, ImageItem, DateField,
ChoiceGroup et Guage.

1 *
Form Item

Gauge ChoiceGroup DateField ImageItem StringItem TextField

10/05/2016 s.chougdali@gmx.fr 49
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: (2)

• Pour ajouter les éléments on utilise la méthode append(…).


- déclaration et instanciation d’un objet Form:

- ajouter un TextField:

• Quand l’Item change d’état suite à une action il génère l’évènement


ItemStateChanged.

• Alors il y a la possibilité d’accéder à un événement lors de passage d’un Item à un


autre ou lors de scrolling via la méthode ItemStateChanged de l’interface
ItemstateListner.

10/05/2016 s.chougdali@gmx.fr 50
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item

• Touts les éléments qui peuvent être dans un Form doivent être des fils de l’élément
Item qui hérite d’une façon directe de la classe Screen.

• Il y a de la possibilité d’associer une commande à un Item via ItemCommandListner.

• Un Form peut contenir un ou plusieurs éléments fils de Item.

Exemple: un Form qui comporte deux fils de l’élément Item: (TextField et Gauge)

10/05/2016 s.chougdali@gmx.fr 51
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type TextField

• Permet à un programmeur d’éditer un texte.


• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La déclaration et l’instanciation d’un TextField:

Label Contenu Taille max Contrainte

3. L’ajout du TextField au Form

4. Il existe des méthodes pour manipuler TextField tels que: getXX(), setXX(…), …
10/05/2016 s.chougdali@gmx.fr 52
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type StringItem

• Permet d’afficher un texte non éditable par l’utilisateur.


• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La déclaration et l’instanciation d’un StringItem:

Label Contenu
3. L’ajout du StringItem au Form

10/05/2016 s.chougdali@gmx.fr 53
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type Gauge

• C’est une barre graphique représentant des entiers et pouvant varier.


• Gauge peut être sous deux mode; un mode interactif ou bien un mode non-interactif.
• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La déclaration et l’instanciation d’un Gauge:

Label
Valeur initiale
Mode
Valeur Max

3. L’ajout du Gauge au Form:

10/05/2016 s.chougdali@gmx.fr 54
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type DateField
• Un champ du formulaire permet l’affichage de la date (DATE), l ’heure (TIME), ou
bien les deux (DATE_TIME).

• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La déclaration, l’instanciation
et la définition du valeur d’un DateField:

Label Mode

3. L’ajout du DateField au Form:

10/05/2016 s.chougdali@gmx.fr 55
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type ImageItem
• Permet d’afficher une instance d’image avec un Scrolling vertical automatique.
• Il y la possibilité de définir le placement (layout): CENTER, LEFT, …
• Image: une classe qui permet la création de l’image.
• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La création de l’image, la déclaration et l’instanciation


d’un ImageItem:

3. L’ajout de l’ImageItem au Form:

10/05/2016 s.chougdali@gmx.fr 56
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Item de type ChoiceGroup
• Assure la même fonction que les List pour un Form.
• Syntaxe
1. La déclaration et l’instanciation d’un Form:

2. La déclaration et l’instanciation d’un ChoiceGroup:

3. L’ajout de l’ImageItem au Form:

10/05/2016 s.chougdali@gmx.fr 57
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


4. La classe Form: Autre éléments

• Spacer: un Item invisible qui occupe une place sur le Form, permet d’espacer les
éléments d’un Form.

• CustomItem: permet à un programmeur d’implémenter son propre Item via la


redéfinition de la méthode Void paint(Graphics g).

• Le programmeur doit gérer toutes les interactions avec l’utilisateur

10/05/2016 s.chougdali@gmx.fr 58
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


TP2:
Le TP consiste a réaliser une application J2ME qui permet la gestion d’un répertoire de
contacts. L’application doit assurer les fonctions suivantes:
• Ajouter un contact.
• Supprimer un contact.
• Modifier un contact.
• Chercher un contact par nom.
Chaque contact est défini par un nom, un prénom et un numéro de téléphone.

Travail demandé:
1. Créer un projet J2ME.
2. Créer la classe contact, c’est une classe Java bean qui ne comporte que les
déclarations des variables, les getters, les setters et les constructeurs nécessaires.
3. Créer l’application Gestion_Répertoire qui hérite de la classe MIDlet et implémente
l’interface CommandListner

10/05/2016 s.chougdali@gmx.fr 59
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


TP2:
4. L’IHM doit comporter un formulaire, une commande pour sortir de l’application, des
commande pour ajouter, chercher, modifier et supprimer un contact.
5. L’application doit comporter une Alerte à configurer selon l’action de l’utilisateur et
le type de message à afficher.
6. Redéfinir les méthodes startApp().
7. Développer les méthodes Enregistrer_contact, Chercher_contact, Modifier_contact,
Supprimer_contact.
8. Redéfinir la méthode commandAction(Command c, Displayable d) de l’interface
CommandListner selon les besoins de l’application.
9. Tester l’application.

Correction:

Assister au séance du TP.

10/05/2016 s.chougdali@gmx.fr 60
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Rappel sur les Threads:

• Consiste a implémenter la notion de multitâche.

• Le principale avantage des Threads est de pouvoir répartir différentes traitements


d’un même programme en plusieurs unités distinctes pour permettre leur exécution
d’une façon simultanée.

• Un programme ou une partie de programme Java peut être mis sous un Thread.

• La classe java.lang.Thread et l’interface java.lang.Runnable sont les bases pour le


développement des Threads en Java.

• Pour exécuter une MIDlet dans un thread, il faut que celles-ci implémentent
l’interface Runnable, et par la suite la redéfinition de la méthode run() a l’intérieur de
la MIDlet.

10/05/2016 s.chougdali@gmx.fr 61
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Rappel sur les Threads: Associer l’Application MIDlet à un Thread.

public class MonApplication extends MIDlet implements CommandListener, Runnable

{
…….

Thread t = new Thread(this);// associer l’application MIDlet à un Thread.


t.start(); // appel à la méthode run().

……

public void run()


{
// faire un traitement.
}

}
10/05/2016 s.chougdali@gmx.fr 62
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (High Level API)


Rappel sur les Threads: Création d’un Thread pour une méthode de l’Application
MIDlet.

• Une méthode de l’application MIDlet peut être mise sous un Thread, elle sera exécutée
en parallèle avec l’application MIDlet.

Syntaxe:
public class MonApplication extends MIDlet

{ ……
……

public void method()


{
new Thread() {
// faire un traitement.
}.start();
}
10/05/2016 s.chougdali@gmx.fr 63
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (Low Level API)


5. Classe Canvas (1)

• Canvas est une classe abstraite qui hérite directement de la classe Displayable.

• Permet de faire des IHMs avancés.

• Gestion bas niveau des évènements et des graphismes.

• Idéal pour programmer des jeux.

• Il y a la possibilité de mélanger les objets Screen et Canvas dans une même MIDlet.

• Une classe qui hérite de la classe Canvas doit redéfinir la méthode paint(Graphics g)
qui reçoit comme argument l’objet g de type Graphics.

10/05/2016 s.chougdali@gmx.fr 64
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (Low Level API)


5. Classe Canvas

• Canvas offre une grande souplesse pour dessiner via les méthodes natives de la classe
Graphics tels que:

void setColor (int red, int green, int blue);


void setStrokeStyle (int style);
void drawLine (int x1, int y1, int x2, int y2);
void fillRect(int x, int y, int width, int height);
……
• Canvas offre aussi des méthodes permettant une bonne gestion des évènements tels
que :

void keyPressed();
void keyReleased();
…..

10/05/2016 s.chougdali@gmx.fr 65
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (Low Level API)


5. Classe Canvas: Exemple.

10/05/2016 s.chougdali@gmx.fr 66
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:IHM (Low Level API).


TP3:

Le TP consiste à réaliser une application qui permet l’affichage des figures géométrique
on cliquant sur la commande correspondante. L’interface homme machine principal est
composé d’un Form avec deux commandes Rectangle et Cercle. Le fonctionnement de
l’application est le suivant: On cliquant sur la commande Cercle on affiche un cercle et si
on clique sur la commande Rectangle on affiche un rectangle.
Travail demandé:

1. Créer un projet J2ME.


2. Créer la classe Cercle qui hérite de la classe Canvas, et redéfinir la méthode
paint(Graphics g).
3. Créer la classe Rectangle qui hérite de la classe Canvas, et redéfinir la méthode
paint(Graphics g).
4. Créer l’application Figures qui hérite de la classe MIDlet et implémente l’interface
CommandListner.
5. Tester l’application.

10/05/2016 s.chougdali@gmx.fr 67
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données (RMS).


Introduction

• RMS(Record Management System) c’est API qui permet la gestion d’une base de
données légère sur un terminal.

• La base de données est indépendante du terminal.

• Chaque enregistrement est représenté sous forme d’un tableau d’octets.

• La mise à jour d’un enregistrement induit une réécriture de la totalité de


l’enregistrement. (La mise à jour atomique)

• Les enregistrements sont stockés dans RecordStore.

• La correspondance:
RMS = SGBD
RecordStore = Tableau
RecordID = Clé primaire.
10/05/2016 s.chougdali@gmx.fr 68
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données(RMS).


Gestion des Records Store

• Plusieurs méthodes permettent la gestion des Records store:

1. openRecordStore: ouvrir un Record Store.

2. closeRecordStore : fermer un Record Store.

3. listRecordStore: lister tous les Records Store.

4. deleteRecordStore: supprimer un Record Store.

5. ….

10/05/2016 s.chougdali@gmx.fr 69
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données(RMS).


Gestion des Enregistrements

• Plusieurs méthodes permettent la gestion d’un enregistrement:

1. getNumRecords: retourne le nombre des enregistrements d’un Record store.

2. deleteRecord, addRecord, getRecord, setRecord: respectivement supprimer,


ajouter, avoir, modifier un enregistrement.

3. getRecordSize: retourne la taille d’un enregistrement.

10/05/2016 s.chougdali@gmx.fr 70
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données (RMS).


Encore des fonctionalités

• RMS offre des fonctionalités supplémentaire tels que:

1. RecordEnumeration: pour lister touts les enregistrement d’un Record Store.

2. RecordFilter : définir un filtre sur un Record Store.

3. RecordComparator : comparer les enregistrements pour les triés par exemple.

10/05/2016 s.chougdali@gmx.fr 71
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données(RMS).


La méthode pour créer un tableau des bytes (Record):

La méthode pour la lecture d’un tableau des bytes (Record):

10/05/2016 s.chougdali@gmx.fr 72
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:La persistance des données (RMS).


TP4:

Le TP consiste à refaire le TP2 qui consiste à réaliser une application J2ME permet la
gestion d’un répertoire de contacts on utilisant Un Recode Store au lieu d’un vecteur.
L’application doit assurer les mêmes fonctions que l’application du TP2.

Correction:

Assister au séance du TP.

10/05/2016 s.chougdali@gmx.fr 73
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


Introduction

• WMA 1.1 Wireless Messaging API, est une API optionnelle pour CLDC 1.0 et CLDC
1.1.

• WMA 1.1 permet l’utilisation des SMS (Short Message Service) et CBS (Cell
Broadcast Service).

• WMA 2.0 prend en compte l’envoi et la réception des MMS (Multimedia Message
Service).

• WMA 2.0 ajoute un support pour la technologie Multipart.

• Exemples d’application: Envoi des SMS, CBS et MMS, Chat, jeux interactifs, …

10/05/2016 s.chougdali@gmx.fr 74
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


Structure de l’API WMA 2.0

Javax.microedition.messaging:: Javax.microedition.messaging::
MessageConnection MessageListner

Javax.microedition.messaging:: Javax.microedition.messaging::
MessagePart SizeExeededExeption

Javax.microedition.messaging::
Message

Javax.microedition.messaging:: Javax.microedition.messaging:: Javax.microedition.messaging::


BinaryMessage TextMessage MultipartMessage

10/05/2016 s.chougdali@gmx.fr 75
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


MessageConnection.

• Fournie les fonctionnalités de bases pour manipuler un message tels que créer,
envoyer, recevoir un message.

• Syntaxe:
- Ouverture d’un MessageConnection:

URL
• Types des URLs:
sms://+Num_Telephone : Pour envoyer un sms à un numéro de téléphone.

sms://+Num_Telephone: num_port : Pour envoyer un sms à un numéro de téléphone sur un port.

sms://num_port : Pour envoyer un sms à un serveur sur un port.

10/05/2016 s.chougdali@gmx.fr 76
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


Message.

• La classe de base pour définir un message.

• La superclasse des classes TextMessage, BinaryMessage, et MultipartMessage.

1. TextMessage: permet la définition d’un message texte.


2. BinaryMessage: concerne les messages binaires (un fichier wav par exemple).
3. MultipartMessage: c’est un message composé de plusieurs parties.

• Structure d’un message:


Sources/Destination
Payload Control Flags
addresses

Text : String Binary : tableau des Bytes

10/05/2016 s.chougdali@gmx.fr 77
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


Message.

• Syntaxe:

Pour créer un message de type text Message:

- Déclarer et instancier un TextMessage.

Objet MessageConnection Type de message


- Modifier le Payload du message par la méthode setPayloadText:

10/05/2016 s.chougdali@gmx.fr 78
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


MessageListner.

• Une interface nécessaire pour implémenter un listener qui permet la gestion de la


réception d’un message , et implémenter des notifications des messages reçus.

• Syntaxe:

MessagePart.

• Permet de définir une partie a ajouter un message ayant plusieurs parties


MultipartMessage

10/05/2016 s.chougdali@gmx.fr 79
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


Exemple du code pour envoyer un sms:

10/05/2016 s.chougdali@gmx.fr 80
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.


TP5:

Le TP consiste à créer une application qui permet l’envoi d’un SMS de type textMessage,

Travail demandé:

1. Créer un projet J2ME

2. Développer une application MIDlet qui comporte un IHM permet la saisie d’un texte
et une adresse, ainsi envoyer ce texte à l’adresse citée.

3. Tester l’application à l’aide Wireless Toolkit.

10/05/2016 s.chougdali@gmx.fr 81
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0: Wireless Messaging API.

• WMA 1.1 Wireless Messaging API, est une API optionnelle pour CLDC 1.0 et CLDC
1.1.

• WMA 1.1 permet l’utilisation des SMS (Short Message Service) et CBS (Cell
Broadcast Service).

• WMA 2.0 prend en compte l’envoi et la réception des MMS (Multimedia Message
Service).

• WMA 2.0 ajoute un support pour la technologie Multipart.

• Exemples d’application: Envoi des SMS, CBS et MMS, Chat, jeux interactifs, …

10/05/2016 s.chougdali@gmx.fr 82
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


Introduction

• MMIA permet principalement de lire du contenu vidéo ou audio mais aussi de


prendre des photos.

• MMIA accepte tout contenu vidéo et audio.

• MMIA tien compte les contraintes de mémoire sur les plateformes de configuration
CLDC.

• Extensible c’est-à-dire autre fonctionnalité peuvent être ajoutées ainsi que autre
format audio et vidéo spécifiques peuvent être configurés.

10/05/2016 s.chougdali@gmx.fr 83
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


Gestion et traitement du contenu.
• Gestion du protocole: lire les données d’une Content
Server, fichier, … Manager
source tels que: fichier, serveur, streaming,
….
Création
• Gestion du contenu: le contenu lu sera Lecture

décodé et restitué via une sortie du DataSource Player


périphérique (haut parleur pour le son,
écran pour la vidéo) Restitution
• Alors les trois classes importantes de l’API
MMIA sont: Control

Manager: permet la création des Players, contient les protocoles et les types de
contenus que le mobile supporte.

Player: lit les données d’une source, les traites puis les restitues.

DataSource: définit comment des données d’une source(fichier, http, …) sont lues.

10/05/2016 s.chougdali@gmx.fr 84
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


1. Manger.

• Manger est la classe principale de MMIA permet la création des Players, il offre des
méthodes pour indiquer la source de données:
- Archive jar:
Manger.createPlayer (InputStream strem, String type)
- URI:
Manger.createPlayer(String uri).

Exemple 1:

InputStream is = getClass().getResourceAsStream("/DELTA.mpg");
Player p=Manger.createPlayer("video/mpeg");

Exemple2:

Player p = Manger.creatPlayer ("http://nokia.com/chanson.mp3");

10/05/2016 s.chougdali@gmx.fr 85
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


2. Player. (1)

• Permet de restituer et contrôler un contenu multimédia.


• Un Player possède les états suivants:
État Description
UNREALIZED C’est l’état du Player juste après sa création.
REALIZED Le Player initialise les infos sur les médias (type, périphérique
de capture).
PREFETCHED Le Player établis la connexion avec la média et la charge.
STARTED Le Player commence la lecture de la média.
CLOSED Fin ou arrêt de la lecture.
• Pour passer d’un état à un autre on utilise les méthodes suivante: realize(), prefetch(),
start(), stop(), close().

10/05/2016 s.chougdali@gmx.fr 86
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


2. Player. (2)

• On peut associer à un Player un contrôle (control) pour pouvoir utiliser des


fonctionalités média spécifiques.

• Exemples:
VideoControl: obtient et contrôle de la fenêtre vidéo.
VolumeControl: contrôle du volume.

• Syntaxe:

Player p; Form frm;


…..
VideoControl vc =(VideoControl) p.getControl ("VideoControl");//créer une fenêtre vidéo
VolumeControl volc = p.getControl("VolumeControl");//créer un contrôle volume
frm.append((Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null));
volc.setLevel(50); //Volume à 50 (entre 0 et 100)
…..
10/05/2016 s.chougdali@gmx.fr 87
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


Exemple :

10/05/2016 s.chougdali@gmx.fr 88
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


Exemple : suite

10/05/2016 s.chougdali@gmx.fr 89
JME:L’API MIDP(Mobile Information Device Profile).

L’API MIDP 2.0:Mobile Media API.


3. Snapshot (capture d’une image)

• On peut capter des images d’un video en lecture on utilisant la méthode getSnapshot
sur un objet VideoControl.

• La méthode getSnapshot retourne un tableau des byte.

• Exemple de syntaxe:
VideoControl vc;
byte[] snapshot;
Form form;
ImageItem img;
…..
snapshot = vc.getSnapshot ("encoding=jpeg");
Image im=Image.createImage(snapshot, 0, snapshot.length);
…..
img = new ImageItem(…,im ,…, …, …);
form.append(img);
10/05/2016 s.chougdali@gmx.fr 90

Vous aimerez peut-être aussi