Java ME by Amdane Samb at BarCamp Goree, December 2010
-
Upload
mobilesenegal -
Category
Education
-
view
1.035 -
download
0
description
Transcript of Java ME by Amdane Samb at BarCamp Goree, December 2010
![Page 1: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/1.jpg)
J2ME
Présenté Par: Amdane SAMB
Serigne Moustapha KANE
![Page 2: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/2.jpg)
• INTRODUCTION DE J2ME• DEMONSTRATION D'UNE APPLICATION J2ME
PLAN
2MOBILE SENEGAL
![Page 3: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/3.jpg)
SOMMAIRE
• INTRODUCTION• CONFIGURATIONS - CLDC• PROFILES - MIDP• INSTALLATION DES LOGICELS• REALISATION D'UN PROGRAMME J2ME• PREMIER PROGRAMME J2ME• WMA• RMS• REFERENCES
3MOBILE SENEGAL
![Page 4: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/4.jpg)
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
![Page 5: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/5.jpg)
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
![Page 6: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/6.jpg)
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
![Page 7: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/7.jpg)
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
![Page 8: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/8.jpg)
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
![Page 9: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/9.jpg)
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
![Page 10: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/10.jpg)
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
![Page 11: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/11.jpg)
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
![Page 12: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/12.jpg)
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
![Page 13: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/13.jpg)
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
![Page 14: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/14.jpg)
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
![Page 15: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/15.jpg)
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
![Page 16: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/16.jpg)
16
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
![Page 17: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/17.jpg)
17
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
![Page 18: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/18.jpg)
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
![Page 19: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/19.jpg)
19
PREMIER PROGRAMME J2ME
Ce bout de code nous permet d'avoir un champ de texte dans notre Form
MOBILE SENEGAL
![Page 20: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/20.jpg)
20
PREMIER PROGRAMME J2ME
Notre champ de saisi
MOBILE SENEGAL
![Page 21: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/21.jpg)
21
PREMIER PROGRAMME J2ME
MOBILE SENEGAL
![Page 22: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/22.jpg)
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
![Page 23: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/23.jpg)
23
PREMIER PROGRAMME J2ME
Liste à choix multipleListe exclusive
MOBILE SENEGAL
![Page 24: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/24.jpg)
24
PREMIER PROGRAMME J2ME
Un champ DateField
Un champ de Gauge
MOBILE SENEGAL
![Page 25: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/25.jpg)
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
![Page 26: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/26.jpg)
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
![Page 27: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/27.jpg)
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
![Page 28: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/28.jpg)
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
![Page 29: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/29.jpg)
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
![Page 30: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/30.jpg)
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
![Page 31: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/31.jpg)
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
![Page 32: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/32.jpg)
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
![Page 33: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/33.jpg)
33
WMA
MOBILE SENEGAL
![Page 34: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/34.jpg)
34
WMA
MOBILE SENEGAL
![Page 35: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/35.jpg)
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
![Page 36: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/36.jpg)
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
![Page 37: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/37.jpg)
37
LES RMS
L'utilisation des RecordStore repose sur: openRecordStore(…) closeRecordStore(…) Des méthodes Des interfaces
MOBILE SENEGAL
![Page 38: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/38.jpg)
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
![Page 39: Java ME by Amdane Samb at BarCamp Goree, December 2010](https://reader036.fdocuments.in/reader036/viewer/2022062617/54beda844a7959ae788b456a/html5/thumbnails/39.jpg)
39
REFERENCES
J2ME (MIDP) de A. HANGAY et Y. Guyomarch
Mobile Training de Dr. Christelle SCHARFF
http://mobilesenegal.com
MOBILE SENEGAL