Integráció az SDK-val
A Windows > Preferences menüpontban a beállításokhoz jutunk. Itt válasszuk ki a J2ME > Device Management listaelemet. Itt az Import gombra kattintva megadjuk a feltelepített SDK helyét és az előre konfigurált mobilok megjelennek az eszköz listában.
Helló Világ
Ha minden jól ment, akkor az Eclipse újraindítása után a Ctrl+N lenyomásával kiválaszthatjuk a J2ME Midlet Suite-t, amivel egy új Midlet alkalmazást hozhatunk létre. Ezután a projektünkre kattintva a Package Explorer-ben a Ctrl+N lenyomásával, majd a J2ME Midlet kiválasztásával létrehozzuk végre a java osztályunkat. Ha további osztályt akarunk majd létrehozni ne felejtsük a pipát kivenni a Add to Application Descriptort? a megfelelő helyen.(Nem kell egy felesleges bejegyzés a JAD-ba).
Ha minden jól ment, létrejött egy stub, egy csontváz fájl, amit fel kell dísziteni, hogy legalább egy hellóvilág kijöjjön belőle. Ha megnézzük közelebbről az előre generált osztályt a MIDlet-et bővíti és három alapmetódust szolgáltat a konstruktoron kívűl:
+ destroyApp(boolean)
+ pauseApp()
+ startApp()
A destroy és start metódus még dobhat MIDletStateChangeException kivételt.
Tehát kezdésként definiáljunk egy privát TextBox változót. Ha erre emlékezni fogunk innentől már automatikus az egész. A Midlet futtatásánál először a konstruktor, majd a startApp hívódik meg. Programunkban bármelyik metódusba írhatunk.
A startApp-ban tehát inicializáljuk a korábban definiált TextBox változót(new TextBox(...)), majd lehívjuk az aktuális Display-t (Display.getDisplay(this) és feltöltjük (setCurrent) a TextBox-szal.
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Hello extends MIDlet {
private TextBox tbox;
private String msg;
public Hello() {
msg = "Szia";
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
tbox = new TextBox("Hello világ", msg, 25, 0);
Display.getDisplay(this).setCurrent(tbox);
}
}
Futtatás
Ha futtatni szeretnénk a midletet, a projektünkre kattintva jobb egér gomb Run As > Run Configurations-nél a Wireless Toolkit Emulator-on belül létrehozunk egy új bejegyzést, ahol meghatározzuk a projekt nevét, az Executable-nél pedig a Midlet konstruktorát írjuk. Ha package-n belül dolgozunk, akkor természetesen elé kerül a package név. Az Emulator fülnél pedig beállíthatjuk melyik mobilt akarjuk emulálni. Apply. És mehet a móka.
Ha a konzolban megjelenik ez, az már jó jel:
EmulatorWrapper useProxy false
EmulatorWrapper httpProxyHost null
EmulatorWrapper httpPort1 null
És utána az Emulátor:
Bővítés kilépéssel
Ha szépen szeretnénk kilépni és nem a piros telefonkagyló 3mp-es lenyomásával, akkor a TextBox-ot el kell látni egy kilépő parancsra, amire hallgat is! :D
Létrehozunk egy privát kilépő parancsot. Ezt hozzáadjuk(addCommand) a TextBox-hoz, majd a setCommandListener-rel társítjuk a CommandListerrel példányunkat, ami még nem létezik így létre kell hozni. Ez vagy a CommandListener példányosításával, vagy a CommandListener interfész implementálásával oldható meg. Nézzük meg az utóbbit. Ennek egy megkötése van:
public void commandAction(Command cmd, Displayable disp)
Így ezt implementálni kell. Ami azt jelenti, hogyha a beérkező parancs kilépőparancs, akkor meghívja a destroyApp metódust. Mivel a destroyApp kivételt dobhat, így hívása esetén ezt kezelnünk kell.
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Hello extends MIDlet implements CommandListener {
private TextBox tbox;
private String msg;
private Command exitCmd;
public Hello() {
msg = "Szia";
exitCmd = new Command("Exit", Command.EXIT,1);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
tbox = new TextBox("Hello világ", msg, 25, 0);
tbox.addCommand(exitCmd);
tbox.setCommandListener(this);
Display.getDisplay(this).setCurrent(tbox);
}
public void commandAction(Command cmd, Displayable disp) {
if ( cmd == exitCmd){
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
}
}
}
A balalsó sarokban megjelent az Exit felirat.
Persze az Exit gomb lenyomására nem fog kilépni, mert a midletet futtató környezet csak akkor hajlandó lebontani az alkalmazást, ha erről külön értesítést kap. Ez pedig:
a notifyDestroyed() metódus, amit a commandAction-ben a try/catch blokk után kell elhelyezni.
Problémák:
(1) Nem jelenik meg semmi vagy ha igen, akkor is kb. öt másodperc múlva összeomlik az emulátor.
A tűzfal megfogja a zayit.exe-t. Tovább infó: http://discussion.forum.nokia.com/forum/showthread.php?109090-Wireless-…
Segítségek:
[1] A Samsung SDK integrációja Eclipse-szel, http://innovator.samsungmobile.com/cms/cnts/knowledge.detail.view.do?pl… (elavult)
[2] Mintaalkalmazás futtatása Eclipse IDE-vel, http://innovator.samsungmobile.com/onlinedocs/cmsCnts/20090228/1792/179…
- foofighter blogja
- A hozzászóláshoz be kell jelentkezni
- 1119 megtekintés
Hozzászólások
Sose tudom mikor lehet ez még érdekes.
- A hozzászóláshoz be kell jelentkezni
+1
egyszer már összeraktam egy ilyet egy régi gépen, de itt szépen le van írva... Köszi
--
Soli Deo Gloria
- A hozzászóláshoz be kell jelentkezni