Login
Cerca all'interno di JavaPortal
Help
Home Page Documentazione Forum Progetti Partner Pubblica!
Documentazione > Tutorial > HOWTO: JME KapabilitiesDiscovery
Hide
Best Practices
EJB
Frameworks
Howto
J2EE
J2ME and Wireless
J2SE
JSP e Servlet
Java Application Server
Java IDE/Tools
Java Media
Java Security
Java Sys Admin
Java e XML
Java e SQL
OpenSource Java
Patterns
Repository
Tesi
UML
Web Services
Slide
White Paper di jws.it
project management
Eventi
Groovy

Hai una tesi in Java?
Tesine preparate
per esami?
Pubblica tutto su
JavaPortal!

Scrivi al nostro staff


QT 4.5 LGPL anche per Java


Blaise Pascal
È molto più bello sapere qualcosa di tutto, che tutto di una cosa


Implementazione e protezione di Web Services con Oc4j ed Axis


Rss Feed
Home Page
Articoli
News
Forum
Classi

  Visualizza Commenti (0) Aggiungi Commento    
Add to Shortcuts
 
Vota l'articolo
HOWTO: JME KapabilitiesDiscovery
By Gianluca Turano
12 marzo 2007

  HOWTO: JME KapabilitiesDiscovery

Lo scopo di questo HowTo è illustrare l'utilizzo del tool WirelessToolkit della Sun Microsystems per produrre una semplice midlet()  in grado di ottenere i dettagli (le capabilities) della piattaforma sulla quale la faremo girare .
L’ howto è correlato del codice della midlet che è stata usata come esempio, Midlet.zip.

Utilizzeremo il WirelessToolkit della Sun Microsystems (formalmente WTK, scaricabile gratuitamente presso http://java.sun.com/products/sjwtoolkit/download-2_5.html ).

Una volta installato (è un semplice .exe in stile Microsoft, avanti, avanti, avanti ... fine! necessita di SDK1.5.0, windows XP  (ed un pc decente ...), creiamo un nuovo progetto (cliccando su New Project), assegnando il nome al progetto ed il nome alla classe Midlet.

 

Nella home del WTK, dentro la cartella 'apps' (dove si trovano le  applicazioni 'sample'), sarà stata creata la cartella del nostro progetto; tale cartella conterrà:

•    un file di properties utilizzato dal WTK
•    delle cartelle 'temp' e 'classes'
•    la cartella 'src' nella quale si metteranno i sorgenti
•    'res' per le risorse tipo immagini/ audio/ ecc.
•    'lib' per eventuali librerie di terzi
•    'bin' nella quale verranno prodotti i file .jar e .jad, quest'ultimi sono i file da copiare nel cellulare per far funzionare la midlet.

Ora è il momento di mettere mano al codice: per prima cosa si crea la classe midlet dell'applicazione, il nome è quello dichiarato in fase di creazione progetto ('MIDlet Class Name', attenzione ai package!!).

La struttura base di una midlet è la seguente:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class nomeMidlet extends MIDlet {


    public void startApp() {
    }
   
    public void pauseApp() {
    }
   
    public void destroyApp(boolean unconditional) {
    }
}



Simile ad una servlet, dispone di tre metodi, è bene ricordare che l'uso di un costruttore è consigliato per tutte le operazioni di inizializzazione... quindi inseriamo :


    private Form f;
    private Command c;
 
    public Midlet(){
        f = new Form("Dettagli periferica :");    
        c = new Command("Esci", Command.EXIT,0);

        f.addCommand(c);
    }



Analizziamo il codice:

•    Java Me nella gestione della grafica adotta il 'composite pattern' .

•    L'oggetto Form è simile  ai contenitori presenti nelle swing ed awt di J2SE, come Panel e Frame, in grado quindi di contenere degli altri oggetti

•    L'oggetto Command è paragonabile alla classe Button, ovvero un oggetto grafico in grado di generare un evento, che intercetta l'interazione con i pulsanti del device presenti sul display in basso a destra e sinistra.


Nel costruttore del Form passiamo il titolo dello stesso, visualizzato in alto e non opzionale, mentre nel costruttore del Command si specifica il testo visualizzato sul comando, il tipo di comando e la priorità (utile nella gestione automaticamente in caso comandi multipli, generalmente con la creazione di menù).

Le classi di Form e Command sono contenuti in "javax.microedition.lcdui.*" importato già nella nostra classe.

Per la funzionalità di visualizzazione sul display dobbiamo ottenere l'oggetto Dysplay, semplicemente richiedendolo  alla classe Display con getDisplay(), il quale ritorna appunto tale oggetto, per impostarlo quindi bisognerà invocare il metodo setCurrent() e passargli un oggetto di tipo displayable, questa istruzione verrà inserita nel metodo 'startApp ' della midlet (come da esempio):


    public void startApp() {
        Display.getDisplay(this).setCurrent(f);
    }


A questo punto dovremo fare in modo che la midlet sia in grado di intercettare gli eventi dell'utente, quindi verrà  implementata l'interfaccia CommandListener (anch'essa presente nel package javax.microedition.lcdui.*), la quale ci permette di assegnare un ascoltatore di eventi sul Form


    f.setCommandListener(this);


e che dispone del metodo commandAction , in grado di intercettare gli eventi:


    public void commandAction(Command command, Displayable displayable) {
        if(displayable==f){
            if(command==c){
                notifyDestroyed();
            }
        }
    }



Sviluppando applicazioni più complesse, ci si renderà conto che per risparmiare risorse si riutilizzeranno gli stessi contenitori, Item e Command, di conseguenza 'displayable==f' o 'command==c' potrebbero essere sostituiti da altre soluzioni tipo 'command.getLabel()=="Esci"' in modo da poter assegnare più funzioni ad un oggetto.

Chiamando 'notifyDestroyed()' , notificheremo al software che gestisce la midlet che la stessa è in destroyed state! Quindi, rilascerà le risorse e chiuderà l’applicazione.

Per completare, bisognerà chiedere al software che gestisce la midlet le capabilities supportate, perciò nel costruttore della midlet aggiungeremo nel Form la seguente stringa:

 String g = "piattaforma: "+ System.getProperty("microedition.platform") +
        "\nconfiguration: "+System.getProperty("microedition.configuration") +
        "\nprofiles: "+System.getProperty("microedition.profiles") +
        "\nencoding: "+System.getProperty("microedition.encoding") +
        "\nLocale(JSR 37/118): "+System.getProperty("microedition.locale") +
        "\nWMA(JSR 120): "+System.getProperty("wireless.messaging.sms.smsc") +
        "\nMMAPI(JSR 135): "+System.getProperty("supports.mixing") +
        "\nSecurity and Trust Services(JSR 177): "+System.getProperty("microedition.smartcardslots") +
        "\nLocation (JSR 179): "+System.getProperty("microedition.location.version") +      
        "\nSupporto cattura  audio: "+System.getProperty("supports.audio.capture") +
        "\nSupporto cattura video: "+ System.getProperty("supports.video.capture") +
        "\nSupporto registrazione : "+System.getProperty("supports.recording") +
        "\nDettagli del formato audio che il terminale può catturare: "+System.getProperty("audio.encodings") +
        "\nDettagli del formato video che il terminale può catturare: "+ System.getProperty("video.encodings");

     f.append(g);   
    

Per compilare il codice, cliccare sul tasto build, che confermerà l’avvenuta compilazione con il messaggio "Build complete" sulla console del WTK, per eseguire il codice cliccare su run!



 

Il risultato ottenuto è il seguente:


 

Per ottenere i file necessari alla distribuzione, infine, sul WTK cliccare su Project/Package/CreatePackage, e nella console verrà indicata la cartella nella quale reperire il .jar e relativo .jad .


 

 Attachments List
Generic DocumentMidlet.zip
Username:
Password:
To sign up for an account, click register... Register
Hide





Powered By



Campagna Anti-IF


Skin


PARTNER
Zio Budda
HostingJava


LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is domenica 1 agosto 2010