Académique Documents
Professionnel Documents
Culture Documents
Pour
Le développement des applications mobiles
10/05/2016 s.chougdali@gmx.fr 1
Les objectifs du cours:
10/05/2016 s.chougdali@gmx.fr 2
Le plan du cours:
1. Introduction au JME.
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
CVM
JVM JVM Ou JCVM
KVM
10/05/2016 s.chougdali@gmx.fr 5
JME: Introduction
Intérêts:
10/05/2016 s.chougdali@gmx.fr 6
JME: Introduction
10/05/2016 s.chougdali@gmx.fr 7
JME: Introduction
10/05/2016 s.chougdali@gmx.fr 8
JME: Configurations
10/05/2016 s.chougdali@gmx.fr 9
JME: Configurations
10/05/2016 s.chougdali@gmx.fr 10
JME: Configurations
10/05/2016 s.chougdali@gmx.fr 11
JME: Configurations
10/05/2016 s.chougdali@gmx.fr 12
JME: Configurations
10/05/2016 s.chougdali@gmx.fr 13
JME: Profiles
• 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
NB: l’API MIDP sera encore détaillé dans la 4eme partie du cours.
10/05/2016 s.chougdali@gmx.fr 15
JME: Profiles
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.
10/05/2016 s.chougdali@gmx.fr 17
JME: Installation et configuration de l’environnement de travail
• 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.
10/05/2016 s.chougdali@gmx.fr 18
JME: Installation et configuration de l’environnement de travail
10/05/2016 s.chougdali@gmx.fr 19
JME: Installation et configuration de l’environnement de travail
10/05/2016 s.chougdali@gmx.fr 20
JME: Installation et configuration de l’environnement de travail
10/05/2016 s.chougdali@gmx.fr 21
JME: Installation et 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
10/05/2016 s.chougdali@gmx.fr 23
JME: Installation et configuration de l’environnement de travail
10/05/2016 s.chougdali@gmx.fr 24
JME: Installation et configuration de l’environnement de travail
• Donner le chemin ou Wireless Toolkit qui a été installer puis cliquer sur
refresh.
10/05/2016 s.chougdali@gmx.fr 25
JME: Installation et configuration de l’environnement de travail
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:
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
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).
• 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.
• 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).
10/05/2016 s.chougdali@gmx.fr 31
JME:L’API MIDP(Mobile Information Device Profile).
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).
Displayable
Low level API High level API
Canvas Screen
GameCanvas
10/05/2016 s.chougdali@gmx.fr 33
JME:L’API MIDP(Mobile Information Device Profile).
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.*).
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).
• 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)
• Exemple:
10/05/2016 s.chougdali@gmx.fr 35
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 36
JME:L’API MIDP(Mobile Information Device Profile).
• Syntaxe:
10/05/2016 s.chougdali@gmx.fr 37
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 38
JME:L’API MIDP(Mobile Information Device Profile).
- Deuxième façon:
10/05/2016 s.chougdali@gmx.fr 39
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 40
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 41
JME:L’API MIDP(Mobile Information Device Profile).
Titre :String
o Alert avec des paramètres:
Titre :String
10/05/2016 s.chougdali@gmx.fr 42
JME:L’API MIDP(Mobile Information Device Profile).
• 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():
10/05/2016 s.chougdali@gmx.fr 43
JME:L’API MIDP(Mobile Information Device Profile).
• Syntaxe:
Priorité : int
Label: String
Type : int
10/05/2016 s.chougdali@gmx.fr 44
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 45
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 46
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 47
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 48
JME:L’API MIDP(Mobile Information Device Profile).
1 *
Form Item
10/05/2016 s.chougdali@gmx.fr 49
JME:L’API MIDP(Mobile Information Device Profile).
- ajouter un TextField:
10/05/2016 s.chougdali@gmx.fr 50
JME:L’API MIDP(Mobile Information Device Profile).
• 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.
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).
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).
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).
Label
Valeur initiale
Mode
Valeur Max
10/05/2016 s.chougdali@gmx.fr 54
JME:L’API MIDP(Mobile Information Device Profile).
• 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
10/05/2016 s.chougdali@gmx.fr 55
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 56
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 57
JME:L’API MIDP(Mobile Information Device Profile).
• Spacer: un Item invisible qui occupe une place sur le Form, permet d’espacer les
éléments d’un Form.
10/05/2016 s.chougdali@gmx.fr 58
JME:L’API MIDP(Mobile Information Device Profile).
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).
Correction:
10/05/2016 s.chougdali@gmx.fr 60
JME:L’API MIDP(Mobile Information Device Profile).
• Un programme ou une partie de programme Java peut être mis sous un Thread.
• 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).
{
…….
……
}
10/05/2016 s.chougdali@gmx.fr 62
JME:L’API MIDP(Mobile Information Device Profile).
• 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
{ ……
……
• Canvas est une classe abstraite qui hérite directement de la classe Displayable.
• 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).
• Canvas offre une grande souplesse pour dessiner via les méthodes natives de la classe
Graphics tels que:
void keyPressed();
void keyReleased();
…..
10/05/2016 s.chougdali@gmx.fr 65
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 66
JME:L’API MIDP(Mobile Information Device Profile).
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é:
10/05/2016 s.chougdali@gmx.fr 67
JME:L’API MIDP(Mobile Information Device Profile).
• RMS(Record Management System) c’est API qui permet la gestion d’une base de
données légère sur un terminal.
• 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).
5. ….
10/05/2016 s.chougdali@gmx.fr 69
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 70
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 71
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 72
JME:L’API MIDP(Mobile Information Device Profile).
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:
10/05/2016 s.chougdali@gmx.fr 73
JME:L’API MIDP(Mobile Information Device Profile).
• 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).
• 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).
Javax.microedition.messaging:: Javax.microedition.messaging::
MessageConnection MessageListner
Javax.microedition.messaging:: Javax.microedition.messaging::
MessagePart SizeExeededExeption
Javax.microedition.messaging::
Message
10/05/2016 s.chougdali@gmx.fr 75
JME:L’API MIDP(Mobile Information Device Profile).
• 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.
10/05/2016 s.chougdali@gmx.fr 76
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 77
JME:L’API MIDP(Mobile Information Device Profile).
• Syntaxe:
10/05/2016 s.chougdali@gmx.fr 78
JME:L’API MIDP(Mobile Information Device Profile).
• Syntaxe:
MessagePart.
10/05/2016 s.chougdali@gmx.fr 79
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 80
JME:L’API MIDP(Mobile Information Device Profile).
Le TP consiste à créer une application qui permet l’envoi d’un SMS de type textMessage,
Travail demandé:
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.
10/05/2016 s.chougdali@gmx.fr 81
JME:L’API MIDP(Mobile Information Device Profile).
• 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).
• 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).
• 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).
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).
• 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:
10/05/2016 s.chougdali@gmx.fr 85
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 86
JME:L’API MIDP(Mobile Information Device Profile).
• Exemples:
VideoControl: obtient et contrôle de la fenêtre vidéo.
VolumeControl: contrôle du volume.
• Syntaxe:
10/05/2016 s.chougdali@gmx.fr 88
JME:L’API MIDP(Mobile Information Device Profile).
10/05/2016 s.chougdali@gmx.fr 89
JME:L’API MIDP(Mobile Information Device Profile).
• On peut capter des images d’un video en lecture on utilisant la méthode getSnapshot
sur un objet VideoControl.
• 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