Možnosti J2ME aplikací na mobilních telefonech
Strana 1 z 1
Možnosti J2ME aplikací na mobilních telefonech
Jedna z oblastí Javy, která v posledních letech udělala velký pokrok jsou aplikace pro mobilní zařízení. Odhaduje se, že celkový počet mobilních telefonů se pohybuje kolem jedné třetiny celosvětové populace, což je asi 6,5 miliardy lidí. Tato práce popisuje, jaké možnosti mají vývojáři softwaru, kteří se rozhodnou vyvíjet aplikace pro tuto oblast Javy.
1) Midlet
Životní cyklus aplikace
J2ME nepodporuje běh více aplikací zároveň. Chybí i podpora pro běh aplikací na pozadí a také není možné aby jedna aplikace spustila druhou. Start MIDletu se skládá ze zavolání jeho konstruktoru a následně z volání metody startApp() tam by mněl programátor inicializovat aplikaci. K ukončení MIDletu stačí zavolat jeho metodu notifyDestroyed(). Není potřeba žádný destruktor. Aby se aplikace po každém přerušení(příchozí hovor, nabíjení, příchoz SMS, atd.) nemusela znova spouštět, umožňují MIDlety zapauzování. To provádí mobilní telefon a aplikaci na to upozorní voláním metody MIDlet.pauseApp() a Canvas.hideNotify(). Po odpauzování se provede další upozornění, tentokrát voláním MIDlet.startApp() a Canvas.showNotify(). Povšimněte si dvojitého volání metody startApp(). U té je nutno odlišovat, jestli jde o start midletu nebo o odpauzování.
Desetinná čísla
První mobilní telefony(MIDP1) byly značně pomalé. Měly velmi omezenou paměť(zhruba do 250kB) a zvládaly překreslit jen pár snímků za sekundu. První CLDC 1.0 specifikace umožňovala práci pouze s celými čísly. Takže pokud chtěl programátor použít některou z goniometrických funkcí, logaritmus nebo odmocninu, tak si ji musel sám naprogramovat. Teprve s příchodem CLDC 1.1 byla přidána podpora pro desetinná čísla.
java.lang.Double
java.lang.Float
rozšíření java.lang.Math o metody cos(), sin(), tan(), sqrt(), ...
To rozšířilo možnosti programátorů, bez nutnosti psát si vlastní metody.
Výkon KVM
Exitují různá srovnání mobilních telefonů, mezi nejspolehlivější patří:
http://www.jbenchmark.com - obdoba 3DMarku pro mobilní telefony
http://www.club-java.com/TastePhone/J2ME/MIDP_Benchmark.jsp - čistě výkonový test
http://www.gsmarena.com - nejde o test, ale jen o velmi dobře uspořádaný přehled všech exitujícíh telefonů.
2) 2D Grafika
Většinu mobilních aplikací, které si uživatel může stáhnout do mobilu tvoří hry, jejichž základem je právě 2D grafika. K její tvorbě a práci s ní se používá balíček javax.microedition.lcdui
V prvních aplikacích se běžně používaly high-level třídy jako Form nebo List, později s rozšířením velikostí displejů se od nich ve hrách zcela upustilo a i když je MIDP2 obsahuje, aplikace jen málokdy. Důvodem je odlišná implementace(grafická interpretace) na různých handsetech.
Tvorba vlastní grafické aplikace je velice jednoduchá a v podstatě ještě snažší než v J2SE (zájemcům doporučuji projít dokumentaci k java.awt.Canvas, java.awt.Graphics, java.awt.Graphics2D z J2SE). Viz příklad vykreslení obrázku:
V konstruktoru se načte obrázek z JARu a v metodě paint, kterou zavolá aplikace při nastavení Canvasu na popředí displaye, se vykreslí obrázek míče. Pozice vykreslení obrázku je přitom následující:
g.drawImage(obrázek k vykreslení, souřadnice X pixelů od levého horního rohu displaye, Y pixelů od levého horního rohu display, pozice obrázku vůči zadaným souřadnicím);
Jak vidíte vytvořit jednoduchou grafickou aplikaci není vůbec problém.
Podporovaný grafický formát obrázků v J2ME je pouze PNG-8 a podle možností telefonu je možné použít kromě transparence i alpha blending(jen na některých telefonech).
Vykreslovat jde všechno, co umožňuje třída Graphics (z balíčku javax.microedition.lcdui):
- základní geometrické tvary buď vyplněné(metody začínající fill) a nebo jejich obrysy(draw) například: drawRect(), fillTriangle(), ...
- vykreslení textu pomocí drawString(), drawSubstring(), drawChar()
- vykreslení dat z pole intů, díky kterému je možné vypočítat libovolný obrázek a pak ho celý překreslit na displey bez nutnosti vytvářet PNG image. V MIDP2.0 novinka: drawRGB();
1) Midlet
Životní cyklus aplikace
J2ME nepodporuje běh více aplikací zároveň. Chybí i podpora pro běh aplikací na pozadí a také není možné aby jedna aplikace spustila druhou. Start MIDletu se skládá ze zavolání jeho konstruktoru a následně z volání metody startApp() tam by mněl programátor inicializovat aplikaci. K ukončení MIDletu stačí zavolat jeho metodu notifyDestroyed(). Není potřeba žádný destruktor. Aby se aplikace po každém přerušení(příchozí hovor, nabíjení, příchoz SMS, atd.) nemusela znova spouštět, umožňují MIDlety zapauzování. To provádí mobilní telefon a aplikaci na to upozorní voláním metody MIDlet.pauseApp() a Canvas.hideNotify(). Po odpauzování se provede další upozornění, tentokrát voláním MIDlet.startApp() a Canvas.showNotify(). Povšimněte si dvojitého volání metody startApp(). U té je nutno odlišovat, jestli jde o start midletu nebo o odpauzování.
Desetinná čísla
První mobilní telefony(MIDP1) byly značně pomalé. Měly velmi omezenou paměť(zhruba do 250kB) a zvládaly překreslit jen pár snímků za sekundu. První CLDC 1.0 specifikace umožňovala práci pouze s celými čísly. Takže pokud chtěl programátor použít některou z goniometrických funkcí, logaritmus nebo odmocninu, tak si ji musel sám naprogramovat. Teprve s příchodem CLDC 1.1 byla přidána podpora pro desetinná čísla.
java.lang.Double
java.lang.Float
rozšíření java.lang.Math o metody cos(), sin(), tan(), sqrt(), ...
To rozšířilo možnosti programátorů, bez nutnosti psát si vlastní metody.
Výkon KVM
Exitují různá srovnání mobilních telefonů, mezi nejspolehlivější patří:
http://www.jbenchmark.com - obdoba 3DMarku pro mobilní telefony
http://www.club-java.com/TastePhone/J2ME/MIDP_Benchmark.jsp - čistě výkonový test
http://www.gsmarena.com - nejde o test, ale jen o velmi dobře uspořádaný přehled všech exitujícíh telefonů.
2) 2D Grafika
Většinu mobilních aplikací, které si uživatel může stáhnout do mobilu tvoří hry, jejichž základem je právě 2D grafika. K její tvorbě a práci s ní se používá balíček javax.microedition.lcdui
V prvních aplikacích se běžně používaly high-level třídy jako Form nebo List, později s rozšířením velikostí displejů se od nich ve hrách zcela upustilo a i když je MIDP2 obsahuje, aplikace jen málokdy. Důvodem je odlišná implementace(grafická interpretace) na různých handsetech.
Tvorba vlastní grafické aplikace je velice jednoduchá a v podstatě ještě snažší než v J2SE (zájemcům doporučuji projít dokumentaci k java.awt.Canvas, java.awt.Graphics, java.awt.Graphics2D z J2SE). Viz příklad vykreslení obrázku:
- kód:
App.java:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class App extends MIDlet{
public void startApp(){
Screen screen = new Screen(this);
Thread thread = new Thread(screen);
Display disp = Display.getDisplay(this);
disp.setCurrent(screen);
thread.start();
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
notifyDestroyed();
}
}
Screen.java:
import javax.microedition.lcdui.*;
public class Screen extends Canvas implements Runnable{
Image img;
App midlet;
int tick;
boolean exit = false;
public Screen(App app){
midlet = app;
try{
img = Image.createImage("/Res/ball.png");//načtení obrázku, oproti J2SE značně zjednodušené.
}catch(Exception e){
System.out.println("Error, obrazek se nepodarilo nacist.");
}
}
public void run(){
while(!exit){
try{
repaint();//dá VM vědět, že je potřeba překreslit display
serviceRepaints();//přinutí VM překreslit display, pokud bylo zavoláno repaint()
}catch(Exception e){
}
try{
Thread.sleep(50);//uspí vlákno na 50ms
}catch(Exception e){
}
}
midlet.destroyApp(true);
}
public void paint(Graphics g){
tick++;
int width = getWidth();//vrátí šířku displeye
int height = getHeight();//vrátí výšku displeye
g.setColor(0x00ffffff);//nastaví barvu pro kreslení na bílou
g.fillRect(0,0,width,height);//vykreslí obdélník vyplněný nastavenou barvou
if(img != null){
g.drawImage(img,width/2,height/2,Graphics.HCENTER | Graphics.VCENTER);//vykreslí obrázek míče
}
g.setColor(0x00000000);//černá
g.drawString(String.valueOf(tick),0,0,Graphics.LEFT | Graphics.TOP);//vypíše celkový počet překreslení
}
public void keyPressed(int keyCode){
exit = true;
}
}
V konstruktoru se načte obrázek z JARu a v metodě paint, kterou zavolá aplikace při nastavení Canvasu na popředí displaye, se vykreslí obrázek míče. Pozice vykreslení obrázku je přitom následující:
g.drawImage(obrázek k vykreslení, souřadnice X pixelů od levého horního rohu displaye, Y pixelů od levého horního rohu display, pozice obrázku vůči zadaným souřadnicím);
Jak vidíte vytvořit jednoduchou grafickou aplikaci není vůbec problém.
Podporovaný grafický formát obrázků v J2ME je pouze PNG-8 a podle možností telefonu je možné použít kromě transparence i alpha blending(jen na některých telefonech).
Vykreslovat jde všechno, co umožňuje třída Graphics (z balíčku javax.microedition.lcdui):
- základní geometrické tvary buď vyplněné(metody začínající fill) a nebo jejich obrysy(draw) například: drawRect(), fillTriangle(), ...
- vykreslení textu pomocí drawString(), drawSubstring(), drawChar()
- vykreslení dat z pole intů, díky kterému je možné vypočítat libovolný obrázek a pak ho celý překreslit na displey bez nutnosti vytvářet PNG image. V MIDP2.0 novinka: drawRGB();
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Re: Možnosti J2ME aplikací na mobilních telefonech
3) 3D Grafika
Možnosti 3D grafiky jsou na mobilech ještě v plenkách, ale některé mobily ji už podporují. Je několik možností(API) jak vytvořit 3D hru. Momentálně jsou dostupné tyto dvě základní knihovny:
A) Mascot Capsule Micro 3D version 3
B) Mobile 3D Graphics (M3G)
Ad A)
Jde o aktivitu firmy HI Corporation, která tuto knihovnu vyvinula a nabízí ji různým firmám. Což na jedné straně znamená implementaci této knihovny na více než jen mobilní platformu (vyskytuje se i pro jiné platformy i pro jiné jazyky), na druhé straně to ale znamená různou implementaci této knihovny na těchto různých platformách. Bohužel i v rámci jednotlivých výrobců telefonů je tato knihovna implementována nejednoznačně. Navíc je tato knihovna velmi omezená. Neumožňuje bohužel ani práci s primitivami, což znamená nemožnost vytvořit si programově vlastní scénu. Zajímavá vlastnost je ta, že celý engine běží pouze v celočíselné aritmetice. Desetinná část čísel je zde simulovaná 12 bity integeru.
Tato knihovna se dál nevyvíjí, další verze této knihovny je již plně kompatibilní s druhou uvedenou.
Ad B)
Tato knihovna je řádově vyspělejší než předchozí. I když na to hardware telefonů zatím nestačí, nabízí knihovna poměrně širokou škálu možností a vlastností, což ji předurčuje k postupnému masivnímu nasazování do mobilních telefonů. Navíc jde oproti předchozí knihovně o standardní knihovnu definovanou ve formě JSR-184(M3G API). Základní vlastností takového 3D enginu je umění zobrazit 3D scénu. Ta může být buď naprosto kompletně vyrobená vlastními silami v kódu pomocí primitiv nebo naopak může být předpřipravená pomocí 3D modelovacího nástroje. Například 3D Studia MAX a pak vyexportována do m3g formátu.
Možnosti 3D grafiky jsou na mobilech ještě v plenkách, ale některé mobily ji už podporují. Je několik možností(API) jak vytvořit 3D hru. Momentálně jsou dostupné tyto dvě základní knihovny:
A) Mascot Capsule Micro 3D version 3
B) Mobile 3D Graphics (M3G)
Ad A)
Jde o aktivitu firmy HI Corporation, která tuto knihovnu vyvinula a nabízí ji různým firmám. Což na jedné straně znamená implementaci této knihovny na více než jen mobilní platformu (vyskytuje se i pro jiné platformy i pro jiné jazyky), na druhé straně to ale znamená různou implementaci této knihovny na těchto různých platformách. Bohužel i v rámci jednotlivých výrobců telefonů je tato knihovna implementována nejednoznačně. Navíc je tato knihovna velmi omezená. Neumožňuje bohužel ani práci s primitivami, což znamená nemožnost vytvořit si programově vlastní scénu. Zajímavá vlastnost je ta, že celý engine běží pouze v celočíselné aritmetice. Desetinná část čísel je zde simulovaná 12 bity integeru.
Tato knihovna se dál nevyvíjí, další verze této knihovny je již plně kompatibilní s druhou uvedenou.
Ad B)
Tato knihovna je řádově vyspělejší než předchozí. I když na to hardware telefonů zatím nestačí, nabízí knihovna poměrně širokou škálu možností a vlastností, což ji předurčuje k postupnému masivnímu nasazování do mobilních telefonů. Navíc jde oproti předchozí knihovně o standardní knihovnu definovanou ve formě JSR-184(M3G API). Základní vlastností takového 3D enginu je umění zobrazit 3D scénu. Ta může být buď naprosto kompletně vyrobená vlastními silami v kódu pomocí primitiv nebo naopak může být předpřipravená pomocí 3D modelovacího nástroje. Například 3D Studia MAX a pak vyexportována do m3g formátu.
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Re: Možnosti J2ME aplikací na mobilních telefonech
4) Zvuky a vibrace
Většina moderních aplikací se neobejde bez zvuků a vibrací. V prvních midletech byly možnosti značně omezené a vývojáři byly odkázání na balíčky pro konkrétní handsety(např.: Siemens API, Nokia UI, atd.).
S nástupem MIDP2.0 se objevilo Mobile Media API(JSR-135), které přehrávání zvuků sjednotilo. Bohužel jednoduchost používání tohoto balíčku komplikují chyby v implementacích na straně handsetů a problémy při pauzování aplikace.
Příklad práce se zvuky:
Zvukové formáty, které mobily podporují se liší podle použitých API a konkrétního zařízení. U mobilních telefonů jsou nejpoužívanější MIDI(audio/midi), WAV(audio/x-wav) a AMR(audio/amr).
Většina moderních aplikací se neobejde bez zvuků a vibrací. V prvních midletech byly možnosti značně omezené a vývojáři byly odkázání na balíčky pro konkrétní handsety(např.: Siemens API, Nokia UI, atd.).
S nástupem MIDP2.0 se objevilo Mobile Media API(JSR-135), které přehrávání zvuků sjednotilo. Bohužel jednoduchost používání tohoto balíčku komplikují chyby v implementacích na straně handsetů a problémy při pauzování aplikace.
Příklad práce se zvuky:
- kód:
import javax.microedition.media.*;
static final String[] sndTypes = {"audio/midi", "audio/x-wav"}; //MIME typy zvuků
static final int TYPE_MID = 0;
static final int TYPE_WAV = 1;
protected static Player sound;
/*Metoda pro načtení zvukových dat ze souboru a vytvoření Playeru*/
private static boolean load (){
try
{
try
{
Object obj = new Object();
sound = Manager.createPlayer(obj.getClass().getResourceAsStream ("/Res/test.mid"), sndTypes[TYPE_MID]);
}
catch (Exception ee) {
System.out.println("Exception while loading file '" + "/Res/test.mid" + "': " + ee.getClass().getName());
}
}
catch (Exception e) {//pokud se načtení nezdaří vrátí se false a pokus o přehrání skončí
sound = null;
return false;
}
return true;
}
public static void playSound (int repeat){
stopSound();//než dojde k novému přehrání ukončí se všechna předchozí
if (!load ()) return;//vytvoří Player
try
{
sound.realize();//načtení zvuku do paměti VM
sound.setLoopCount(repeat);//počet opakování, pokud je -1 nastaví se nekonečná smyčka
sound.start();//spuštění přehrávání
}
catch (Exception e)
{
System.out.println("Exception while playng sound."+e.getClass().getName());
try{
sound.deallocate();//uvolnění paměti přehrávače ve VM
sound.close();
}catch(Exception e2){
}
sound = null;
}
}
public static void stopSound (){
if (sound == null) return;
try
{
sound.stop ();//zastavení přehrávání
} catch (Exception e)
{
}
try{
sound.deallocate();//uvolnění paměti přehrávače ve VM
sound.close ();//dealokace Playeru. Pro znovupoužití zvuku je potřeba vytvořit nový Player
}catch(Exception e){
}
sound = null;
}
Vibrace nejsou součástí MMAPI. Místo toho byly v MIDP2.0 přidány do třídy javax.microedition.lcdui.Display
Příklad vibrace:
private void doVibration(){
try{
Display.getDisplay(midlet).vibrate(1000);//telefon bude 1000ms vibrovat
}catch(Exception e){
System.out.println("Error: Vibration failed");
}
}
Zvukové formáty, které mobily podporují se liší podle použitých API a konkrétního zařízení. U mobilních telefonů jsou nejpoužívanější MIDI(audio/midi), WAV(audio/x-wav) a AMR(audio/amr).
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Re: Možnosti J2ME aplikací na mobilních telefonech
5) Síťová komunikace
Odesílání SMS
Specifikace MIDP1 neobsahovala API pro odesílání SMS. Proto bylo nutné použít speciálních API na konkrétních handsetech(Siemens API, Nokia UI). Ani MIDP2.0 nepřineslo nápravu, proto vzniklo WM(Wireless Messaging) API, které umožňuje odeslat textovou a nebo binární SMS. Samotný systém odesílání je jednoduchý.
Viz příklad:
K čemu to může sloužit? SMS v sobě nese tel. číslo které lze použít například k jednoznačné identifikaci uživatele, při registraci do hry.
GPRS
K vytváření síťových her, k ukládání skóre na server nebo pro fungování mobilního ICQ je potřeba komunikace přes internet. To umožňuje balíček javax.microedition.io.
Použití je víceméně široké od MIDP2.0 jsou navíc podporovány i protokoly HTTPS a UDP.
Možnosti dobře demonstruje například známý messenger Jimm.
Odesílání SMS
Specifikace MIDP1 neobsahovala API pro odesílání SMS. Proto bylo nutné použít speciálních API na konkrétních handsetech(Siemens API, Nokia UI). Ani MIDP2.0 nepřineslo nápravu, proto vzniklo WM(Wireless Messaging) API, které umožňuje odeslat textovou a nebo binární SMS. Samotný systém odesílání je jednoduchý.
Viz příklad:
- kód:
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import javax.microedition.io.Connector;
sendMessage(String text, String number){
String addr = "sms://"+number;//prefix čísla je port, který označuje, že jde o SMSku.
try{
MessageConnection smsconn = (MessageConnection) Connector.open(addr);//otevření konektoru
TextMessage txtmessage = (TextMessage) smsconn.newMessage(MessageConnection.TEXT_MESSAGE);//vytvoření zprávy
txtmessage.setAddress(addr);//nastavení adresy pro odeslání zprávy
txtmessage.setPayloadText(text);//nastavení textu SMS
smsconn.send(txtmessage);//odeslání SMS
smsconn.close();//po odeslání je potřeba zavřít konektor, jinak může dojít k zablokování odesílání SMS
}catch (Exception e){
System.out.println("SMS se nepodarilo odeslat");
}
}
K čemu to může sloužit? SMS v sobě nese tel. číslo které lze použít například k jednoznačné identifikaci uživatele, při registraci do hry.
GPRS
K vytváření síťových her, k ukládání skóre na server nebo pro fungování mobilního ICQ je potřeba komunikace přes internet. To umožňuje balíček javax.microedition.io.
Použití je víceméně široké od MIDP2.0 jsou navíc podporovány i protokoly HTTPS a UDP.
Možnosti dobře demonstruje například známý messenger Jimm.
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Re: Možnosti J2ME aplikací na mobilních telefonech
6) Práce se soubory - ukládání a čtení dat
Bezpečnost J2ME aplikací je velmi vysoká, proto samotné MIDP neumožňuje práci se soubory na Flash kartě. Přístup je povolen pouze k souborům v JARu(ty samozřejmě nelze jakkoliv upravovat nebo vytvářet nové) a na RMS(Record Management System).
Další možností je využít některých volitelných API. Konkrétně Siemens API(podporují ho pouze telefony značky Siemens) nebo JSR-75(FileConnection Optional Package).
RMS:
Record Management System slouží pouze k ukládání menších dat, například nastavení aplikace, skóre, nedokončené hry, ICQ kontaktů, atd. Velikost bývá totiž značně limitována. Například Samsungy si neporadí s více jak 4-6 RecordStory, každý o maximální délce do 5KB.
Jak už jsem naznačil, Record Storů může být několik. Identifikují se podle jména. Ve jménu doporučuji používat pouze písmena a čísla. Record Store pak obsahují jednotlivé Recordy(záznamy) a v těch jsou obsaženy data. Jejich identifikace se provádí pomocí čísla záznamu, které začíná od 1!
příklad použití:
Siemens API:
Jedná se o balíček com.siemens.mp. Ten osahuje třídu com.siemens.mp.io.File s jejíž pomocí lze pracovat se soubory na Flash kartě. Lze procházet adresáře, vytvářet nové soubory, mazat soubory, kopírovat, zkracovat délku souborů a zapisovat do souborů. Aby byla zachována bezpečnost J2ME aplikací, mobil se při pokusu aplikace k přístupu na Flash kartu vždy dotáže uživatele, zda si přeje povolit aplikaci přístup.
JSR-75 (FileConnection Optional Package)
Jedná se o nejlepší možnost práce se soubory. Bohužel není ze strany výrobců mobilních telefonů příliš podporována. Lze ho použít pouze na některých Nokiích a SonyEricssonech. Jedná se o balíček javax.microedition.io.file původně používaný v PDA.
Příklad na vytvoření souboru:
Bezpečnost J2ME aplikací je velmi vysoká, proto samotné MIDP neumožňuje práci se soubory na Flash kartě. Přístup je povolen pouze k souborům v JARu(ty samozřejmě nelze jakkoliv upravovat nebo vytvářet nové) a na RMS(Record Management System).
Další možností je využít některých volitelných API. Konkrétně Siemens API(podporují ho pouze telefony značky Siemens) nebo JSR-75(FileConnection Optional Package).
RMS:
Record Management System slouží pouze k ukládání menších dat, například nastavení aplikace, skóre, nedokončené hry, ICQ kontaktů, atd. Velikost bývá totiž značně limitována. Například Samsungy si neporadí s více jak 4-6 RecordStory, každý o maximální délce do 5KB.
Jak už jsem naznačil, Record Storů může být několik. Identifikují se podle jména. Ve jménu doporučuji používat pouze písmena a čísla. Record Store pak obsahují jednotlivé Recordy(záznamy) a v těch jsou obsaženy data. Jejich identifikace se provádí pomocí čísla záznamu, které začíná od 1!
příklad použití:
- kód:
loadRMS(){
store = RecordStore.openRecordStore("test",true);//vytvoří RecordStore s názvem test, pokud neexistuje bude vytvořen!
if(store.getNumRecords() == 0){//pokud je počet záznamů roven 0, došlo k vytvoření nového RMS
byte[] testText = "OK".getBytes();
try{
store.addRecord(testText,0,testText.length);//vložím text "OK" v bytovém poli
msg = "Zaznam vytvoren";
}catch(Exception e2){
System.out.println("Exception"+e2.getClass().getName());
msg = "Zaznam se nepodarilo vytvorit";
}
}else{
try{
String testText = new String(store.getRecord(1));//načtu záznam číslo 1(mělo by se načíst "OK")
msg = "Zaznam obsahuje:"+testText;
}catch(Exception e2){
System.out.println("Exception"+e2.getClass().getName());
msg = "Zaznam se nepodarilo nacist";
}
}
store.closeRecordStore();
}
deleteRMS(){
try{
RecordStore.deleteRecordStore("test");// vymazání RecordStore
}catch(Exception e2){
System.out.println("Exception"+e2.getClass().getName());
msg = "Zaznam vymazan";
}
}
Siemens API:
Jedná se o balíček com.siemens.mp. Ten osahuje třídu com.siemens.mp.io.File s jejíž pomocí lze pracovat se soubory na Flash kartě. Lze procházet adresáře, vytvářet nové soubory, mazat soubory, kopírovat, zkracovat délku souborů a zapisovat do souborů. Aby byla zachována bezpečnost J2ME aplikací, mobil se při pokusu aplikace k přístupu na Flash kartu vždy dotáže uživatele, zda si přeje povolit aplikaci přístup.
JSR-75 (FileConnection Optional Package)
Jedná se o nejlepší možnost práce se soubory. Bohužel není ze strany výrobců mobilních telefonů příliš podporována. Lze ho použít pouze na některých Nokiích a SonyEricssonech. Jedná se o balíček javax.microedition.io.file původně používaný v PDA.
Příklad na vytvoření souboru:
- kód:
try {
FileConnection fconn = (FileConnection)Connector.open("file:///CFCard/newfile.txt");
if (!fconn.exists())
fconn.create();//pokud soubor neexituje je vytvořen
fconn.close();
}
catch (IOException ioe) {
}
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Re: Možnosti J2ME aplikací na mobilních telefonech
7) Budoucnost J2ME na mobilních telefonech
V současné době je již ve vývoji MIDP3(JSR-271), které by mnělo přinést řadu vylepšení a odstranit některá omezení MIDP2.0. Hlavní změny by mněly být tyto:
- podpora více spuštěných midletů současně
- běh midletu na pozadí(v současné době je midlet možné pouze zapauzovat/zmrazit)
- možnost automatického spuštění (například po zapnutí telefonu)
- vylepšena podpora velkých displejů, případně možnost využívat i druhý displej
- zlepšena přímá podpora mobilních her
- a pak samozřejmě také spolupráce mobilní javy s jinými funkcemi telefonu jako například MMS, SyncML, paměťová média...atd.
- měla by být také vylepšena podpora lokalizace do různých jazyků
Odkaz na celý článek o MIDP3: http://www.freemidlet.cz/clanky.aspx?rid=569
Odkaz na oficiální stránky specifikace MIDP3: http://jcp.org/en/jsr/detail?id=271
Zdroje
http://www.forum.nokia.com
http://java.sun.com
http://forum.sun.com
V současné době je již ve vývoji MIDP3(JSR-271), které by mnělo přinést řadu vylepšení a odstranit některá omezení MIDP2.0. Hlavní změny by mněly být tyto:
- podpora více spuštěných midletů současně
- běh midletu na pozadí(v současné době je midlet možné pouze zapauzovat/zmrazit)
- možnost automatického spuštění (například po zapnutí telefonu)
- vylepšena podpora velkých displejů, případně možnost využívat i druhý displej
- zlepšena přímá podpora mobilních her
- a pak samozřejmě také spolupráce mobilní javy s jinými funkcemi telefonu jako například MMS, SyncML, paměťová média...atd.
- měla by být také vylepšena podpora lokalizace do různých jazyků
Odkaz na celý článek o MIDP3: http://www.freemidlet.cz/clanky.aspx?rid=569
Odkaz na oficiální stránky specifikace MIDP3: http://jcp.org/en/jsr/detail?id=271
Zdroje
http://www.forum.nokia.com
http://java.sun.com
http://forum.sun.com
wortos- Hlavní Administrator
- Pocet príspevku : 746
Join date : 03. 10. 07
Strana 1 z 1
Povolení tohoto fóra:
Nemůžete odpovídat na témata v tomto fóru
|
|