La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours J2ME, Tébourbi Riadh, SUP'COM 1 Développement dapplications mobiles sous JAVA Micro Edition J2ME Tébourbi Riadh

Présentations similaires


Présentation au sujet: "Cours J2ME, Tébourbi Riadh, SUP'COM 1 Développement dapplications mobiles sous JAVA Micro Edition J2ME Tébourbi Riadh"— Transcription de la présentation:

1 Cours J2ME, Tébourbi Riadh, SUP'COM 1 Développement dapplications mobiles sous JAVA Micro Edition J2ME Tébourbi Riadh

2 Cours J2ME, Tébourbi Riadh, SUP'COM 2 Présentation de J2ME Historiquement, Sun a proposé plusieurs plate-formes pour le développement d'applications sur des machines possédant des ressources réduites, typiquement celles ne pouvant exécuter une JVM répondant aux spécifications complètes de la plate-forme J2SE. 1.JavaCard : pour le développement sur des cartes à puces 2.EmbeddedJava : systèmes embarqués 3.PersonnalJava : pour le développement sur des machines possédant au moins 2mo de mémoire En 1999, Sun propose de mieux structurer ces différentes plate-formes sous l'appellation J2ME (Java 2 Micro Edition) (Seule le plate-forme JavaCard n'est pas incluse dans J2ME et reste à part.) pour périphériques mobiles et embarqués. Par rapport à J2SE, J2ME utilise des machines virtuelles différentes. Certaines classes de base de l'API sont communes avec cependant de nombreuses omissions dans l'API J2ME.

3 Cours J2ME, Tébourbi Riadh, SUP'COM 3 3 Plateformes Java Java2 Standard Edition (J2SE) Java2 Enterprise Edition (J2EE) Java2 Micro Edition (J2ME) Java 2 Platform Applications : Standards desktop & Workstation Serveurs, Applications Entreprise Petites mémoires Périphériques à Constraintes

4 Cours J2ME, Tébourbi Riadh, SUP'COM 4 Java 2 Micro Edition Plateforme JAVA pour des petits périphériques (. Plateforme JAVA pour des petits périphériques (mobiles et embarqués). Un sous ensemble de J2SE Un sous ensemble de J2SE Périphériques cible: Périphériques cible: Téléphones Mobiles, Smart Phones Téléphones Mobiles, Smart Phones PDAs (y compris les PocketPC) PDAs (y compris les PocketPC) TV, VCR, Lecteurs CD TV, VCR, Lecteurs CD

5 Cours J2ME, Tébourbi Riadh, SUP'COM 5 Exemple de systèmes mobiles et de systèmes embarqués _ SmartCard/Carte à Puce _ Cellular Phone/Téléphone mobile _ PalmPC, PocketPC/Assistant Personnel _ eBook, Cartable Electronique _ Appareil photo, … _ Set Top Box/Decodeur TV Numérique _ Game Console/Console de Jeu _ Electronic Consuming/Electronique _ Terminal de paiement, Guichet, Parcmètre _ Home Portal/Portail maison _ Car/Voiture _ Wearable computer (Augmented Reality) _ Prothèse active _ Satellite...

6 Cours J2ME, Tébourbi Riadh, SUP'COM 6 Contraintes matérielles des mobiles Encombrement et poids faibles (pour les nomades) Affichage limité : de 100*60 en NB à 640*240 en couleurs Faible mémoire (car grande consommation): primaire(RAM) et secondaire (FlashRAM, EEPROM) Autonomie (?) (pour les nomades) Clavier et pointage rudimentaire: tablette sensible, écran tactile, PAD, entrée de texte Communication (?): Série (IrDA, station daccueil USB ou RS232), Réseau LAN, Wireless LAN, Cellulaire…) Résistance aux chocs

7 Cours J2ME, Tébourbi Riadh, SUP'COM 7 Configurations et Profils du J2ME L'ensemble des appareils sur lequel peut s'exécuter une application écrite avec J2ME est tellement vaste et disparate que J2ME est composé de plusieurs parties : les configurations (CDC, CLDC) et les profiles. J2ME propose donc une architecture modulaire. Chaque configuration peut être utilisée avec un ensemble de packages optionnels qui permet d'utiliser des technologies particulières (Bluetooth, services web, lecteur de codes barre, etc...). Ces packages sont le plus souvent dépendant du matériel. L'inconvénient de ce principe est qu'il déroge à la devise de Java "Write Once, Run Anywhere (partiellement vrai pour des applications développées pour un profile praticulier). Il ne faut cependant pas oublier que les types de machines cibles de J2ME sont tellement différents (du téléphone mobile au set top box), qu'il est sûrement impossible de trouver un dénominateur commun. nombreuses évolutions en cours de la plate-forme.

8 Cours J2ME, Tébourbi Riadh, SUP'COM 8 Les configurations Définissent les caractéristiques de bases d'un environnement d'exécution pour un certain type de machine possédant un ensemble de caractéristiques et de ressources similaires. Elles se composent d'une machine virtuelle et d'un ensemble d'API de base. Deux configurations sont actuellement définies : CLDC (Connected Limited Device Configuration): concerne des appareils possédant des ressources faibles (moins de 512 Kb de RAM, faible vitesse du processeur, connexion réseau limitée et intermittente) et une interface utilisateur réduite (par exemple un téléphone mobile ou un PDA "bas de gamme"). Elle s'utilise sur une machine virtuelle KVM (Kuaui VM de SUN) (=V avec des limites) CDC (Connected Device Configuration) : concerne des appareils possédant des ressources plus importantes (au moins 2Mb de RAM, un processeur 32 bits, une meilleure connexion au réseau), par exemple un Set Top box ou certains PDA "haut de gamme". Elle s'utilise sur une machine virtuelle CVM (CVM=JVM (SUN) mais plus compact)

9 Cours J2ME, Tébourbi Riadh, SUP'COM 9 Les profiles Se composent d'un ensemble d'API particulières à un type de machines ou à une fonctionnalité spécifique. Ils permettent l'utilisation de fonctionnalités précises et doivent être associés à une configuration. Ils permettent donc d'assurer une certaine modularité à la plate-forme J2ME. (profile = ensemble dAPi minimum pour des devices similaires) ProfilConfiguration MIDP 1.0CLDCPackage javax.microedition.* MIDP 2.0CLDC PDACLDCSambian, PalmOS Mobile Media API (MMAPI) 1.1CLDCPermet la lecture de clips audio et vidéo Wireless Messaging API (WMA) 1.1CLDCPermet l'envoi et la réception de SMS Java APIs for BluetoothCLDC Foundation ProfileCDC Personal ProfileCDC Personal Basis ProfileCDC RMI optional ProfileCDC Remote Method Invocation JDBC optional ProfileCDC J2ME Web Services SpecificationCDCWeb Services Mobile 3D Graphics API for J2MECDC3D GameCDCPour les jeux

10 Cours J2ME, Tébourbi Riadh, SUP'COM 10 Exemples ManufacturerModel Wireless Technology Frequency (MHz) SoftwareScreen AlcatelOne Touch 735iE-GSM, GSM900, 1800MIDP 2.0, WMA 1.0, CLDC x128/12 bits MotorolaA388cGSM/GPRS900, 1800, 1900MIDP 1.0, CLDC x320/16 bits MotorolaA760 MIDP 2.0, CLDC x240/16 bits MotorolaT720iGSM/GPRS1900MIDP 1.0, CLDC x160/12 bits Nokia3100GSM/GPRS900, 1800, 1900MIDP 1.0, WMA 1.0, CLDC x128/12 bits Nokia3200GSM/GPRS/EDGE900, 1800, 1900MIDP 1.0, WMA 1.0, CLDC x128/12 bits Nokia5140GSM900, 1800, 1900CLDC 1.1, MIDP x128/12 bits Nokia9500GSM, GSM/GPRS850, 900, 1800, 1900JTWI 1.0, M3DAPI 1.0, CLDC 1.1, MIDP 2.0, MMAPI 1.1, LAPI 1.0, WMA x200/16 bits Nokia7610GSM850, 900, 1800, 1900MIDP 1.0, MIDP 2.0, CLDC x208/16 bits SamsungSGH-S100GSM/GPRS900, 1800, 1900MIDP 1.0, CLDC x160/16 bits SiemensC55GSM/GPRS900, 1800MIDP 1.0, CLDC x64/1 bit SiemensS6VGSM/GPRS900, 1800, 1900JTWI 1.0, M3DAPI 1.0, CLDC 1.1, MIDP 2.0, MMAPI 1.1, LAPI 1.0, JABWT 1.0, WMA x176/16 bits Sony EricssonP908GSM/GPRS900, 1800, 1900MIDP 2.0, PersonalJava 1.1.1, JABWT 1.0, CLDC 1.0, WMA x320/16 bits Avant de pouvoir développer sur un mobile il faut connaître sa configuration et ses profils quil peut supporter:

11 Cours J2ME, Tébourbi Riadh, SUP'COM 11 Les VM KVM (SUN) pour CLDS CVM (SUN) pour CDC Monty (SUN): Nouvelle VM pour CLDC (meilleures performances) CDC Hot Spot (SUN) : Anciennement CVM pour CDC (performance améliorée). Très portable (ARM, Power PC, MIPS, SPARC sur Linux, Solaris..). MicrochaiVM (HP) : Support KVM (processeur 16 ou 32 bits, PalmOS (64 k), Linux, PocketPC/SH3 /Strong ARM J9VM (IBM) : machine virtuelle pour lembarqué. OS: PalmOS, HardHatLinux, WinCE. μp: X86, ARM, Strong ARM, MIPS, PowerPC..

12 Cours J2ME, Tébourbi Riadh, SUP'COM 12 Profile MIDP (Mobile Information Device Profile) MIDP est un profile standard défini pour un ensemble de machines embarquées possédant des ressources et une interface graphique limitée. 128KB of non-volatile memory for the MIDP implementation 32KB of volatile memory for the runtime heap 8KB of non-volatile memory for persistent data A screen of at least 96 × 54 pixels Some capacity for input, either by keypad, keyboard, or touch screen Two-way network connection, possibly intermittent :

13 Cours J2ME, Tébourbi Riadh, SUP'COM 13 Applications MIDP Toute application MIDP doit dériver dune classe spéciale: MIDlet Toute application MIDP doit dériver dune classe spéciale: MIDlet La classe MIDlet définie et contrôle le cycle de vie dune application. La classe MIDlet définie et contrôle le cycle de vie dune application. Se trouve dans le Package: javax.microedition.midlet. Se trouve dans le Package: javax.microedition.midlet. Développement (javac), Preverify (KVM), Packaging (.jar), Description/Déploiement (.jad) Développement (javac), Preverify (KVM), Packaging (.jar), Description/Déploiement (.jad)

14 Cours J2ME, Tébourbi Riadh, SUP'COM 14 Structure de lAPI Screen Canvas FormTextBoxListBoxItemAlert ChoiceGroupDateFieldGaugeImageItemStringItemTextField Displayable Low level API (jeux) High level API (GUI)

15 Cours J2ME, Tébourbi Riadh, SUP'COM 15 Programmation dune MIDlet Une application MIDP doit être une sous-classe de la classe MIDlet : Une application MIDP doit être une sous-classe de la classe MIDlet : public class MaMidlet extends MIDlet {…} Cest léquivalent MIDP dune applet, où le lancement et larrêt sont sous le contrôle de lenvironnement dexécution Cest léquivalent MIDP dune applet, où le lancement et larrêt sont sous le contrôle de lenvironnement dexécution Quand une MIDlet est lancée lenvironnement appelle la méthode MIDlet.startApp() Quand une MIDlet est lancée lenvironnement appelle la méthode MIDlet.startApp()

16 Cours J2ME, Tébourbi Riadh, SUP'COM 16 Architechture dun programme MIDlet (1) public class MaMidlet extends MIDlet { public MaMidlet() { //Le constructeur } public void startApp() { // ca commence ici au lancement de MaMidlet (après le constructeur) } public void pauseApp() { // Lapplication est en mode pause (pas daffichage) } public void destroyApp(boolean unconditional) { // Quand on quitte lapplication, Nettoyage si nécessaire }

17 Cours J2ME, Tébourbi Riadh, SUP'COM 17 Architechture dun programme MIDlet(2) Import packages nécessaires : Import packages nécessaires : import javax.microedition.midlet.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.*; Tout MIDP applications dérive « extend » de la classe MIDlet Tout MIDP applications dérive « extend » de la classe MIDlet

18 Cours J2ME, Tébourbi Riadh, SUP'COM 18 1/2 Un premier Exemple HelloSupcomMIDlet.java

19 Cours J2ME, Tébourbi Riadh, SUP'COM 19 2/2

20 Cours J2ME, Tébourbi Riadh, SUP'COM 20 Afficher un texte qui défile: utilisation de la classe Ticker: HelloSupcomMIDletbis.java …..Pour la Suite voir HelloSupcomMIDlet

21 Cours J2ME, Tébourbi Riadh, SUP'COM 21 Un deuxième Exemple 1/2 SimpleListe1.java

22 Cours J2ME, Tébourbi Riadh, SUP'COM 22 2/2

23 Cours J2ME, Tébourbi Riadh, SUP'COM 23 List.IMPLICIT list = new List("Sample list", List.IMPLICIT, …); int listType Remarque sur le constructeur de la classe List: new List(String title, int listType, …)String List.EXCLUSIVE list = new List("Sample list", List.EXCLUSIVE, …); List.MULTIPLE list = new List("Sample list", List.MULTIPLE, …); (SimpleListe1.java) (SimpleListe2.java) (SimpleListe3.java)

24 Cours J2ME, Tébourbi Riadh, SUP'COM 24 Action après choix dans une liste: troisième Exemple: SimpleListe4.java1/2

25 Cours J2ME, Tébourbi Riadh, SUP'COM 25 2/2

26 Cours J2ME, Tébourbi Riadh, SUP'COM 26 Forms et Items Form (class) est le seul "container" dans MIDP Form (class) est le seul "container" dans MIDP Form contient des objets Item (class) (doc API: A superclass for components that can be added to a Form ) Form contient des objets Item (class) (doc API: A superclass for components that can be added to a Form ) Les éléments sont ajoutés en utilisant Form.append() Les éléments sont ajoutés en utilisant Form.append() form.append(item); form.append(item); form.append("string"); form.append("string"); Quand un Item change détat (suite à une action sur celui-ci), il génère lévénement ItemStateChanged Quand un Item change détat (suite à une action sur celui-ci), il génère lévénement ItemStateChanged Capté par un ItemStateListener définit sur la Form Capté par un ItemStateListener définit sur la Form Le changement détat appelle la méthode ItemStateListener Le changement détat appelle la méthode ItemStateListener

27 Cours J2ME, Tébourbi Riadh, SUP'COM 27 Diagramme des Items 1 Form peut avoir plusieurs Items (components)

28 Cours J2ME, Tébourbi Riadh, SUP'COM 28 Example 4 (1/2) Form1.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Form1 extends MIDlet implements ItemStateListener { protected Display display; protected Form form; public Form1() { display = Display.getDisplay(this); form = new Form("Info entry form"); form.append(new TextField("Name", "", 10, TextField.ANY)); form.append(new Gauge("Age (0-100)", true, 10, 2)); form.append(new ChoiceGroup("Job", Choice.EXCLUSIVE, new String[] {active", "student"}, null)); form.setItemStateListener(this); }

29 Cours J2ME, Tébourbi Riadh, SUP'COM 29 Example 4 (2/2) public void itemStateChanged(Item item) { // if an item changes – it gets sent here! System.out.println("State changed on item " + item.toString()); } public void startApp() { display.setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean unconditional) { display = null; form = null; }

30 Cours J2ME, Tébourbi Riadh, SUP'COM 30 Image et ImageItem Classes pour manipuler des images Image: classe pour créer un objet image et contient des attributs tels que Hauteur Largeur de limage. ImageItem: sert pour afficher limage sur une Form. Elle définit comment limage va être afficher à lécran (à gauche, centrée, taille, etc..) MIDP offre deux types dimages: immutable: ne peut pas être modifiée après création (une image lue dun fichier image par exemple) mutable : une image créée et stockée en mémoire par lutilisateur.

31 Cours J2ME, Tébourbi Riadh, SUP'COM 31 Affichage dune image ImageItem(String label, Image img, int layout, String altText) Constructeurs: Image createImage(String name) Form fmMain = new Form("Images");... // Create an image Image img = Image.createImage("/supcom.png"); // Append to a form fmMain.append(new ImageItem(null, img, ImageItem.LAYOUT_CENTER, null)); Affichage sur une Form:

32 Cours J2ME, Tébourbi Riadh, SUP'COM 32 Exemple 5 (1/2) HelloSupcomMIDletfin.java

33 Cours J2ME, Tébourbi Riadh, SUP'COM 33 Exemple 5 (2/2)

34 Cours J2ME, Tébourbi Riadh, SUP'COM 34 Les Threads Utilisés pour faire du multitâche: Pendant la lecture dune vidéo, linterface graphique dune application est fonctionnelle Lors dune animation ont peut écouter la musique. Thread = unité d'exécution faisant partie d'un programme. Cette unité fonctionne de façon autonome et parallèlement à d'autres Threads. chaque unité se voit attribuer des intervalles de temps au cours desquels elles ont le droit d'utiliser le processeur pour accomplir leurs traitements Un programme (ou partie dun programme) java peut être mis sous un Thread. Le principal avantage des Threads est de pouvoir répartir différents traitements d'un même programme en plusieurs unités distinctes pour permettre leur exécution "simultanée". La classe java.lang.Thread et l'interface java.lang.Runnable sont les bases pour le développement des Threads en java. Par exemple, pour exécuter des Midlets dans un thread, il faut que celles ci implémentent l'interface Runnable.

35 Cours J2ME, Tébourbi Riadh, SUP'COM 35 Les Threads 1) public class MaMidlet extends MIDlet implements CommandListener, Runnable {….} Création dun Thread dans une Midlet 2) public Thread(Runnable target) //Allocates a new Thread object with a specific target object whose run method is called. //Créer un objet Thread pour un autre objet target (une Midlet par exemple) et cest la //methode run() de target qui sera exécutée. Thread t = new Thread(this) t.start(); apple de la méthode surchargée run(); 3) //implementation de la méthode run() de la Midlet: public void run() { …..//faire un traitement long }

36 Cours J2ME, Tébourbi Riadh, SUP'COM 36 Les Threads Création dun Thread pour une méthode Une méthode dune Midlet peut être mise sous un Thread indépendant. Elle sera exécuter alors en parallèle avec la Midlet. private void doSomethingBig() { new Thread() { public void run() { …….//Faire qq chose de long } }.start(); }

37 Cours J2ME, Tébourbi Riadh, SUP'COM 37 MIDP 2.0 Quoi de neuf ? (disponible été 2003) UI Multimédia :Mobile Media API (MMAPI) Amélioration des formulaire Images RGB Game API javax.microedition.lcdui.game GameCanvas, LayerManager, Layer, TiledLayer, Sprit

38 Cours J2ME, Tébourbi Riadh, SUP'COM 38 MIDP 2.0 Sécurité HTTPS PKI (Certificats) JAR signé La signature et la clé publique sont ajoutés au JAD Permissions Nouvelles entrées du JAD : MIDIet-Permissions, MIDIet-Permissions-Op Lancement Push de MIDLet sur des demandes entrantes de connexions réseaux L'entrée MIDlet-Push- du JAD précise: lURL local de connection URL la classe de la MIDLet ladresse IP de la machine autorisée à lancer un push Exemple : MIDIet-Push-1: socket://:76, exemple.PushLet

39 Cours J2ME, Tébourbi Riadh, SUP'COM 39 Messaging Wireless Messaging API (WMA) pour J2ME Messageries pour « pager » et téléphone mobile WMA 1.1 (JSR 120) permet lenvoie et la réception de SMS (Short Message Service) ou de CBS (Cell Broadcast Service) WMA 2.0 (JSR 205) prend en compte lenvoies MMS

40 Wireless Messaging API (WMA 2.0) Cours J2ME, Tébourbi Riadh, SUP'COM 40 Message: classe de base pour définir un message. Cest une superclasse pour des types de messages BinaryMessage (fichier wav par exemple), MultipartMessage (message en plusieurs parties) et textMessage (message texte). MessageConnection: fournie les fonctionnalités de base pour créer, envoyer et recevoir les messages. package, javax.wireless.messaging

41 Wireless Messaging API (WMA 2.0) Cours J2ME, Tébourbi Riadh, SUP'COM 41 MessageListener: Interface pour définir un listener et permet dimplémenter des notifications asynchrones des messages reçus MessagePart: permet de définir une partie a ajouter à un message ayant plusieurs parties (MultipartMessage). smsExemple.java

42 Cours J2ME, Tébourbi Riadh, SUP'COM 42Multimédia Mobile Media API (MMIA) Son,MIDI, Vidéo, streaming… En remplacement de JMF (trop gros 650k, awt) Compact: 150K (MIDI, MPEG1, MP3,…) MIME TypeDescription audio/midiMIDI files audio/sp-midiScalable Polyphony MIDI audio/x-tone-seqMIDP 2.0 tone sequence audio/x-wavWAV PCM sampled audio image/gifGIF 89a (animated GIF) video/mpegMPEG video video/vnd.sun.rgb565Video capture

43 Cours J2ME, Tébourbi Riadh, SUP'COM 43 Mobile Media API (MMIA) Introduction Spécificités: Support pour Génération de tonalité, Playback, et enregistrement/capture multimédia: lAPI accepte tout contenu audio et vidéo. Tien compte des contraintes de mémoire sur des plateformes CLDC Extensible: Nouvelles fonctionnalités peuvent être rajoutées; dautres formats de contenu audio, vidéo peuvent être supportés.

44 Cours J2ME, Tébourbi Riadh, SUP'COM 44 Gestion/Traitement du contenu Deux parties: Gestion du protocole (Protocol Handling): Lire les données dune source, exemple: fichier, serveur(réseau), streaming. Gestion du contenu(Content Handling): une fois lu, le contenu est décodé et restitué via une sortie du périphérique (haut parleur pour le son, écran pour la vidéo) Trois classes: Player: Lit les données dune source, les traites et les restitue. Manager: Pour créer des players, jouer des tonalités, contient les protocoles et les types de contenus que le mobile supporte. DataSource: Définit comment des données dune source (fichier, http, rtp) sont lues. On peut créer un nouveau DataSource (pour un nouveau format par exemple)

45 Cours J2ME, Tébourbi Riadh, SUP'COM 45 Manager Cest la classe centrale pour creéer des players et offre trois methodes pour indiquer la source de données: createPlayer(DataSource source) createPlayer(InputStream stream, String type) createPlayer(String locator) Player p = Manager.createPlayer("capture://video"); Player p = Manager.createPlayer ("http://nokia.com/chanson.mp3"); Player p = Manager.createPlayer("http://movies.com/film.mpg"); Type MediaExemple syntaxe Capture audio "capture://audio" : capture audio sur périph défaut. "capture://devmic0?encoding=pcm" capture audio sur devmic0 avec encodage PCM. Capture vidéo "capture://video" : capture video à partir du périphérique de capture par défaut "capture://devcam0?encoding=rgb888&width=100&height=50" : capture dune camera, rgb888 mode encodage, avec width height (taille) spécifiques Radio"capture://radio?f=105.1&st=stereo " : tuner à la fréquence FM mode stéréo. Streaming vidéo/audio/texte dune source externe"rtp://host:port/type" : type = audio, vidéo ou texte Jouer des tonalités/ MIDI "device://tone" :player pou jouer des tonalités "device://midi" :ou MIDI

46 Cours J2ME, Tébourbi Riadh, SUP'COM 46 Player Créé avec Manager Permet de restituer un contenu multi-media Possède des états: UNREALIZED, REALIZED, PREFETCHED, STARTED, et CLOSED UNREALIZED: état initial, juste après création REALIZED: initialise les infos sur les medias (type, périphériques de captures, etc). PREFETCHED: établis la connexions avec la média et la charge, établit les connections réseau pour le streaming. STARTED: la lecture a commencé (mode lecture) CLOSED: arrêt de lecture, arrêt du lecteur realize() prefetch() start() stop() deallocate() close() Passage dun état à un autre:

47 Cours J2ME, Tébourbi Riadh, SUP'COM 47 Player(2) On associe à un lecteur un contrôle (control) : une fonctionnalité média spécifique. Examples: VideoControl: obtient et contrôle la fenêtre vidéo MIDIControl, ToneControl: accès aux propriétés MIDI/Tonalités du périphérique. VolumeControl: contrôle du volume Player p; Form frm; vc = (VideoControl)p.getControl("VideoControl"); volc = (VolumeControl)p.getControl("VolumeControl"); frm.append((Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null)); //Ajout de la fenêtre vidéo sur une forme en tant que Item. volc.setLevel(50); //Volume à 50 (entre 0 et 100) Usage:

48 Cours J2ME, Tébourbi Riadh, SUP'COM 48 Exemple 1 (1/2) VideoPlayer.java Lecture dun fichier vidéo stocké sur un serveur (exmple apache Tomcat). Url: mpg

49 Cours J2ME, Tébourbi Riadh, SUP'COM 49 Exemple 6 (2/2)

50 Cours J2ME, Tébourbi Riadh, SUP'COM 50 Exemple 7 (1/2) VideoPlayer1.java ….. Lecture dun fichier vidéo à partir de larchive jar. Utilisation de Manager. createPlayer(InputStream stream, String type) LInputStream est obtenu à partir de lobjet application obtenu par getClass()

51 Cours J2ME, Tébourbi Riadh, SUP'COM 51 Snapshot (capture dune image) Vidéo lue capturer une image byte[] getSnapshot(java.lang.String imageType) Méthode getSnaphot sur un objet VideoControl snapshot = vc.getSnapshot("encoding=jpeg"); VideoControl vc; byte[] snapshot; ImageItem imi; Image im = Image.createImage(snapshot, 0, snapshot.length); On obtient un objet Image quon peut afficher à laide dun ImageItem (voir exemple 5) Exemple:

52 Cours J2ME, Tébourbi Riadh, SUP'COM 52Application EN TP: MIDlet qui lit une vidéo depuis un URL dans une liste Fonctions Play, Pause et Stop (utilisation d'un thread pour play) Fonction Snapshot (produire une image à partir de la vidéo) (un autre thread) Fonction contrôle volume (utilisation de Gauge) Fonction partage URL avec un ami par SMS VideoPlayer2.java VideoPlayer3.java

53 Cours J2ME, Tébourbi Riadh, SUP'COM 53 Déploiement Une Midlet java peut être déployée sur un périphérique mobile: 1) Directement par liaison USB, Série, Blutooth.. entre un PC et le Mobile Utilisation dun logiciel de téléchargement (Oxygène phone manager, NOKIA phone manager,..) 2) OTA: Over The Air: Téléchargement à partir dun serveur. Utilisation dun URL = adresse de la Midlet (Acces à travers le réseau), exemple: http//nokia.com Application ManagerSur le mobile: le « Application Manager » gère linstallation, mise à jour, désinstallation et exécution des applications java (un mini SE) Dans les deux cas : il faut créer un package dinstallation.jar (archive) {.class, images, fichiers etc..} et.jad (description))

54 Cours J2ME, Tébourbi Riadh, SUP'COM 54 Exemple MIDlet-1: HelloSupcomMIDletfin,, HelloSupcomMIDletfin MIDlet-Jar-Size: MIDlet-Jar-URL: MIDlet-Name: hello1 MIDlet-Vendor: Tebourbi Riadh MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0 hello1.jad (En locale copier hello1.jar et hello1.jad sur le mobile (par liaison USB, Blutooth etc..) et exécuter hello1. )

55 Cours J2ME, Tébourbi Riadh, SUP'COM 55 Exemple OTA(1) Sur le SERVEUR URL: hello1 hello1.jad Hello1.html Copier les fichiers.jar et.jad dans le répertoire des applications WEB Écrire hello1.html qui contient un lien vers hello1.jad Exemple de serveur: Tomcat

56 Cours J2ME, Tébourbi Riadh, SUP'COM 56 Exemple OTA(2) Sur le Mobile

57 Cours J2ME, Tébourbi Riadh, SUP'COM 57 Outils de développement Quelques outils: Quelques outils: J2ME Wireless Toolkit J2ME Wireless Toolkit Sun ONE Studio Mobile Edition 5 Sun ONE Studio Mobile Edition 5 CodeWarrior Wireless Studio 7.0 CodeWarrior Wireless Studio 7.0 Nokia Developers Suite Beta J2ME Nokia Developers Suite Beta J2ME RIM BlackBerry JDE 3.2 RIM BlackBerry JDE 3.2 Motorola LWT1.0 Motorola LWT1.0

58 Cours J2ME, Tébourbi Riadh, SUP'COM 58 Sun ONE Studio Mobile Edition

59 Cours J2ME, Tébourbi Riadh, SUP'COM 59 BlackBerry Java Development Environment

60 Cours J2ME, Tébourbi Riadh, SUP'COM 60 Nokia Developers Suite & CodeWarrior

61 Cours J2ME, Tébourbi Riadh, SUP'COM 61 J2ME Wireless Toolkit

62 Cours J2ME, Tébourbi Riadh, SUP'COM 62 Installation j2me_wireless_toolkit-2_2-windows.exe. Installation dans c:/wtk22 Applications Midlets.jar,.jad Midlet hello1 Les.class Ressources de lapplication: exemple: supcom_rgb.png Codes sources, exemple: HelloSupcomMIDletfin.java

63 Cours J2ME, Tébourbi Riadh, SUP'COM 63 Création dune Midlet(1) « Démarrer programmes J2ME Wireless Toolkit 2.2 KToolbar » NewProject: hello « Settings » Nom Nom classe (fichier.java)

64 Cours J2ME, Tébourbi Riadh, SUP'COM 64 Création dune Midlet(1) Nous allons tester la Midlet « HelloSupcomMIDlet » (exemple 1) Le répertoire C:\WTK22\apps\hello\src doit contenir le fichier HelloSupcomMIDlet.java Ecrire le fichier HelloSupcomMIDlet.java (à laide dun éditeur de texte, ou KAWA). Le copier dans le répertoire C:\WTK22\apps\hello\src Compiler: « Project Build » Exécuter: « Project Run »: exécution sur lémulateur JAR: « Project package create package »: création du.jar

65 Cours J2ME, Tébourbi Riadh, SUP'COM 65 Création dune deuxième Midlet Nous allons rajouter au projet hello une deuxième midlet: HelloSupcomMIDletbis Ecrire le fichier HelloSupcomMIDletbis.java (à laide dun éditeur de texte, ou KAWA). Le copier dans le répertoire C:\WTK22\apps\hello\src Dans « Settings » « Midlets » « Add » entrer le nom de la midlet et la nom de la classe (HelloSupcomMIDletbis) « OK » Build + RUN Exécution avec choix Midlet à exécuter

66 Cours J2ME, Tébourbi Riadh, SUP'COM 66 A VOUS DE JOUER


Télécharger ppt "Cours J2ME, Tébourbi Riadh, SUP'COM 1 Développement dapplications mobiles sous JAVA Micro Edition J2ME Tébourbi Riadh"

Présentations similaires


Annonces Google