| Makale Adı | MIDP ile Programlamaya Giriş |
| Derleyen | Mobilpro |
| Tarih | 02.11.2003 |
|
İlk Örnek : HelloWorldMIDlet Tasarım Bu örnekte ekrana "Hello World" mesajını yazdıracağız ve Exit tuşu ile uygulamadan çıkacağız. Bu uygulama ile işlemlerinin nasıl yapıldığını göreceğiz. HelloWorldMIDlet sınıfı javax.microedition.midlet.MIDlet sınıfını kalıtımsal olarak kullanır : (public class HelloWorldMIDlet extends MIDlet) Ekrana yazı yazdırmak için HelloScreen nesnesini ve uygulamadan çıkış için Exit komutunu kullanır. HelloScreen sınıfı bir MIDP üst seviye API (High level) sınıfı olan TextBox sınıfını kalıtsal olarak kullanır. TextBox sınıfı 3 parametre kullanır : Başlık , String bilgi girilecek olan alan ve komut. (Şekil-5 de görülen Exit komutu gibi.) HelloScreen sınıfı ayrıca kullanıcının girdiği komutları yakalamak için CommandListener interface ini kullanır. (class HelloScreen extends TextBox implements CommandListener)
Şekil - 5 HelloWorldMIDlet in çalışması basittir.startapp() metodundaki kod ile eğer o anda herhangi bir aktif görüntü nesnesi yok ise , HelloScreen nesnesine aktif Display atanır.Eğer HelloScreen kullanıcı tarafından girilen Exit komutunu algılarsa , HelloWorldMIDlet'in exitRequested() metodunu çağırır ve böylece MIDlet sonlandırılmış (destroyed) durumuna geçer.Bu uygulamada pauseApp() ve destroyApp() metodları için kod yazılmamıştır. HelloWorldMIDlet.java
package example.hello ;
import javax.microedition.midlet.* ;
import javax.microedition.lcdui.* ;
public class HelloWorldMIDlet extends MIDlet
{
public HelloWorldMIDlet()
{}
public void startApp()
{
Displayable current = Display.getDisplay(this).getCurrent() ;
if(current==null)
{
HelloScreen helloscreen = new HelloScreen(this,"Hello World.");
Display.getDisplay(this).setCurrent(helloScreen);
}
}
public void pauseApp()
{}
public void destroyApp(boolean b)
{}
void exitRequested()
{
destroyApp(false);
notifyDestroyed();
}
}
HelloScreen.java
package example.hello ;
import javax.microedition.lcdui.* ;
class HelloScreen extends TextBox implements CommandListener
{
private final HelloWorldMIDlet midlet ;
private final Command exitCommand ;
HelloScreen (HelloWorldMIDlet midlet , String string)
{
super("HelloWorldMIDlet",string,256,0);
this.midlet = midlet ;
exitCommand = new Command("Exit",Command.EXIT,1 );
addCommand(exitCommand);
setCommandListener(this);
}
public void commandAction(Command c , Displayable d)
{
if (c== exitCommand)
{
midlet.exitRequested();
}
}
}
Kod ile ilgili bazı açıklamalarda bulunalım : 1. HelloScreen sınıfındaki super komutu ile HelloScreen sınıfının bir üst sınıfı olduğu TextBox sınıfının constructor metodu çağırılır. Böylece HelloScreen nesnesi Textbox sınıfının kalıtımsal özelliğini kullanarak oluşturulmasının avantajını kullanmış olur. 2. HelloScreen sınıfı HelloWorldMIDlet sınıfında instance olarak oluşturulurken ; ( HelloScreen helloscreen = new HelloScreen(this,"Hello World") ; ) HelloScreen sınıfının constructor metodunu çalıştırır. Burada this ile Midletin kendisi ifade edilmekte ve HelloScreen sınıfına bir parametre olarak geçirilmektedir. HelloScreen sınıfında ise bu parametre geçişinden ötürü HelloWorldMIDlet in metodları çağırılabilir : ( midlet.exitRequested(); ) 3. Bir sınıfı MIDlet ten türettikten sonra şunu unutmamak gerekir : MIDlet soyut (abstract) bir sınıftır ve bu yüzden 3 adet metodununda (startApp() , destroyApp() , pauseApp() ), içine kod yazılmasa dahi , çiğnenmesi (override) gereklidir. ( javax.microedition.midlet.MIDlet sınıfı metod tanımları için tıklayınız. ) Bu durumda temel bir MIDletin iskeleti aşağıdaki gibi olmaktadır :
public class Shell extends MIDlet
{
//constructor metodu.
public Shell()
{
}
//Cihaz üzerindeki uygulama yöneticisi (AMS)tarafından MIDleti çalıştırmaya başlamak için çağırılır.
public void startApp()
{
}
//Cihaz üzerindeki uygulama yöneticisi (AMS) tarafından MIDlet durdurulmadan önce çağırılır.
public void pauseApp()
{
}
//Cihaz üzerindeki uygulama yöneticisi (AMS) tarafından MIDlet sonlandırılmadan önce çağırılır.
public void destroyApp(boolean unconditional)
{
}
}
4. Yukarıdaki HelloWorld kodları emulatorde programı çalıştırmak için yeterlidir. Fakat programın Cep Telefonu üzerinde çalıştırılması için
JAD , JAR ve manifest dosyalarınında , ki çoğunlukla program geliştirmede kullanılan IDE ler bu işi sizin için yapacaklardır ,
oluşturulması gereklidir. Ancak bu dosyalar ile bir MIDlet grubu (suite) cep telefonu üzerine yüklenebilir.
(JAR , JAR ve manifest dosyaları hakkında detaylı bir makale için tıklayınız.) <- Makalenin ilk sayfası için tıklayınız <- |
| Yararlanılan Kaynaklar |
| 1. Brief Introduction To MIDP Programming - Forum Nokia -> Version 1.0 (18 Kasım 2002) |
| 2. Core J2ME Technology & MIDP , John W. Muchow 2002 , Sun Microsystems Press |