Java ME by Amdane Samb at BarCamp Goree, December 2010
Post on 21-Jan-2015
1034 Views
Preview:
DESCRIPTION
Transcript
J2ME
Présenté Par: Amdane SAMB
Serigne Moustapha KANE
• INTRODUCTION DE J2ME• DEMONSTRATION D'UNE APPLICATION J2ME
PLAN
2MOBILE SENEGAL
SOMMAIRE
• INTRODUCTION• CONFIGURATIONS - CLDC• PROFILES - MIDP• INSTALLATION DES LOGICELS• REALISATION D'UN PROGRAMME J2ME• PREMIER PROGRAMME J2ME• WMA• RMS• REFERENCES
3MOBILE SENEGAL
INTRODUCTION
• J2ME (Java 2 Micro Edition) est une plateforme Java pour les terminaux mobiles (téléphones, pda,…) et les systèmes embarqués.
• L’architecture J2ME est modulaire et est composée de deux éléments fondamentaux:• Une configuration (i.e. une machine virtuelle et un ensemble de
classes de base et d'API): • CDC (Connected Device Configuration) utilsée par les
terminaux disposant de quelques Mégaoctets de mémoire; et
• CLDC (Connected Limit Device Configuration) pour les petits terminaux.
• Un profile (i.e. une spécification Java définie, utilisée par les fabricants et développeurs pour des terminaux spécifiques).
• Dans notre exposé, nous nous intéresserons aux petits terminaux utilisant une configuration CLDC. 4MOBILE SENEGAL
5
Le CLDC (Connected Limit Device Configuration) est développé pour les terminaux disposant d'une petite mémoire entre 160 à 512 Ko de mémoire.
Le rôle de CLDC est de définir une plateforme standard adaptée aux terminaux légers dotés de peu de ressources et fonctionnant en mode connecté. Il est utilisé avec KVM (K Virtual Machine) fonctionnant avec une mémoire de 100 Ko.
Le CLDC a besoin d'un MIDP (Mobile Information Device Profil) fournissant un ensemble de classes tournant sur de petits terminaux pour mieux garantir la portabilité et l’interopérabilité du code entre les différents types de terminaux mobiles.
CONFIGURATION CLDC
MOBILE SENEGAL
6
Le MIDP (Mobile Information Device Profil) fournit un ensemble de classe et est destiné à la configuration CLDC.
Il prend en charge un nombre limité des classes de J2SE et définit des classes d'entrée / sortie et d'interface spécialisées pour une configuration CLDC.
PROFILE MIDP
MOBILE SENEGAL
7
INSTALLATION DES LOGICIELS
Logiciels : JAVA, Eclipse, WTK, plugin EclipseME
Installation: • Installation du plugin EclipseME (Eclipse feature)• Configuration du CLDC et du MIDP• Utilisation de WTK
MOBILE SENEGAL
8
REALISATION D'UN PROGRAMME J2ME
L‘ écriture du code repose sur :• L'extension de la classe MIDlet• Des méthodes obligatoires: startApp(), pauseApp(),
destroyApp()• L'interaction avec l’ utilisateur : Les classes
Command et CommandListener• Un ou plusieurs midlets dans une midletSuite
MOBILE SENEGAL
9
REALISATION D'UN PROGRAMME J2ME
Compilation : • Automatique dans Eclipse• monMIDlet.java
Packaging :• Un fichier .jar qui qui est format compressé du
programme contenant un fichier manifest, les fichiers .class, les éléments multimedias
• Un fichier .jad
MOBILE SENEGAL
10
REALISATION D'UN PROGRAMME J2ME
Le rôle de la MIDletSuite :
Dans MID (Mobile Information Device), l'AMS (Application Management Software) fournit un environnement pour l'installation, le start, le stop, et la mise à jour des midlets
L'AMS assure que les midlets de la même suite interagissent dans une une même JVM
MOBILE SENEGAL
11
PREMIER PROGRAMME J2ME
Nous allons écrire notre premier programme intitulé BonjourGoree
Pour cela executons Eclipse File New OtherJ2ME MIDletSuite Next BonjourGoree Next Finish
MOBILE SENEGAL
12
PREMIER PROGRAMME J2ME
// Les Bibliothèquesimport javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;
public class BonjourGoree extends MIDlet implements CommandListener{
public BonjourGoree() {// TODO Auto-generated constructor stub}
protected void destroyApp( boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
MOBILE SENEGAL
13
PREMIER PROGRAMME J2ME
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
}
public void commandAction(Command arg0, Displayable arg1) {// TODO Auto-generated method stub
}
} //fin de l'application
MOBILE SENEGAL
14
PREMIER PROGRAMME J2ME
L' execution de ce bout de code donne le résultat suivant :
L'écran est entiérement vide donc c'est à nous d'y mettre du contenu
MOBILE SENEGAL
15
PREMIER PROGRAMME J2ME
Le contenu de mon écran peut être :• Form : des formulaires• TextBox : des zones de saisies• List : des listes d'éléments à choisir• Ticker : des textes défilant continuellement sur un écran• TextField : des champs de saisie• Item : des éléments pouvant être insérés dans une Form
ou une Alert• Alert : des alertes i.e. des messages attendant un laps de
temps pour passer à un autre écran• Command : des Commandes (Commands) correspondant
à des actions • …
MOBILE SENEGAL
16
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
17
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
18
PREMIER PROGRAMME J2ME
L‘ execution de ce bout de code donne le résultat suivant :
Commande"OK"
MOBILE SENEGAL
Titre de la Form "Gorée BarCamp
19
PREMIER PROGRAMME J2ME
Ce bout de code nous permet d'avoir un champ de texte dans notre Form
MOBILE SENEGAL
20
PREMIER PROGRAMME J2ME
Notre champ de saisi
MOBILE SENEGAL
21
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
22
PREMIER PROGRAMME J2ME
Nous remarquons ici que notre choiceGroup prend comme option BUTTON et permet d'avoir une liste avec des boutons à cocher
Cependant, il existe d'autres types d'options tels que :• EXCLUSIVE : un choix exclusif sur une liste• MULTIPLE : un choix multiple sur une liste d'éléments• …
MOBILE SENEGAL
23
PREMIER PROGRAMME J2ME
Liste à choix multipleListe exclusive
MOBILE SENEGAL
24
PREMIER PROGRAMME J2ME
Un champ DateField
Un champ de Gauge
MOBILE SENEGAL
25
PREMIER PROGRAMME J2ME
Comme nous l'avons vu dans les écrans précédents, MIDP dispose d'un ensemble de classes et bibliothèques pouvant nous servir pour faire un programme adapté à notre quotidien
MOBILE SENEGAL
26
WMA
La Wireless Messaging API est un packages optionnel en MIDP et offre des capacités de messageries aux MIDP
Ils assurent les mécanismes d'envoi et de réception de messages et sont contenus dans le package java.wireless.messaging
WMA est basé sur le CLDC et constitue une sous interface de Connection: MessageConnection
Pour l'envoi des messages, MessageConnection utilise des méthodes de type "factory" pour créer des objets
Pour la réception, il utilise un mécanisme basé sur les eventListener
MOBILE SENEGAL
27
WMA
Les objets Messages doivent implémenter l'interface Message
Un Message est composé d'une partie adresse et d'une partie donnée.
La partie données peut être du texte ou des données binaires
MOBILE SENEGAL
28
WMA
import java.io.IOException;import javax.microedition.io.Connector;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Gauge;import javax.microedition.lcdui.Ticker;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.wireless.messaging.MessageConnection;import javax.wireless.messaging.TextMessage;
MOBILE SENEGAL
Test avec WTK
29
WMA
public class BonjourGoree extends MIDlet implements CommandListener{
//Creation d'un form private Form goreeForm;private Command mSend;private Command mExit;private Display myDisplay;
public BonjourGoree() {
}protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}MOBILE SENEGAL
30
WMAprotected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
goreeForm = new Form("Goree Bar Camp Envoi de Sms");
//Initialisation des commandes d'envoi et de sortiemExit = new Command("Quitter", Command.EXIT, 1);mSend = new Command("Envoyer", Command.SCREEN, 0);
goreeForm.addCommand(mExit);goreeForm.addCommand(mSend);
goreeForm.setCommandListener(this);
// Utilisation d'un TickergoreeForm.setTicker(new Ticker("Gorée BarCamp 2010"));
myDisplay = Display.getDisplay(this);myDisplay.setCurrent(goreeForm);
}
MOBILE SENEGAL
31
WMApublic void commandAction(Command arg0, Displayable arg1) {
if(arg0 == mSend){new Thread (new Runnable(){
public void run() {sendText("+5550001","Bienvenue à Gorée");}
}).start();}else if(arg0 == mExit){try {destroyApp(true);} catch (MIDletStateChangeException e) {
e.printStackTrace();}
notifyDestroyed();}
} MOBILE SENEGAL
32
WMApublic void sendText(String address, String text) {
MessageConnection mc;try {mc = (MessageConnection) Connector.open("sms://" + address);
TextMessage tm = (TextMessage) mc.newMessage(MessageConnection.TEXT_MESSAGE);
tm.setPayloadText(text);mc.send(tm);} catch (IOException e) {e.printStackTrace();}
}
}MOBILE SENEGAL
33
WMA
MOBILE SENEGAL
34
WMA
MOBILE SENEGAL
35
LES WMA
De la même maniére, il exite une méthode de réception des messages. Mais cette fois, on implémente MessageListener et on crée une méthode notifyIncommingMessage().
MOBILE SENEGAL
36
LES RMSLes RMS (Record Management System) sont des mécanismes de stockage persistants. Ce sont des modèles très simples et utilisent des enregistrements. Il sont gérés par le package java.microedition.rms.
Une telle base de données est appelée RecordStore et est modélisée par une classe de même nom. Elle posséde des opérations usuelles telles que add, delete, get, set,…
Dans une MIDletSuite, plusieurs RecordStore peuvent coéxister, avec la possibilité de communiquer entre eux.
Dans un RecordStore, toutes les opérations sont atomiques et chaque enregistrement possède un identifiant, le recordId de type entier.MOBILE SENEGAL
37
LES RMS
L'utilisation des RecordStore repose sur: openRecordStore(…) closeRecordStore(…) Des méthodes Des interfaces
MOBILE SENEGAL
38
LES RMS
L'interface RecordListener gére la réception des opérations de records par les méthodes:
public void recordAdded(RecordStore recordStore,int recordId) public void recordChanged(RecordStore recordStore,int
recordId) public void recordDeleted(RecordStore recordStore,int
recordId)
MOBILE SENEGAL
39
REFERENCES
J2ME (MIDP) de A. HANGAY et Y. Guyomarch
Mobile Training de Dr. Christelle SCHARFF
http://mobilesenegal.com
MOBILE SENEGAL
top related