Absolutne początki

fatalbomb

Artykuł przeznaczony jest dla osób, które jeszcze nie miały styczności z programowaniem w J2ME (ci, którzy pisali już programy na telefony komórkowe, to wszystko już wiedzą :)).

Uzbrajamy się w narzędzia

Pierwszym krokiem jest zdobycie wymaganych narzędzi: Jeżeli planujesz programować telefony firmy Sony Ericsson, możesz pobrać Wireless Toolkit (WTK) ze strony SonyEricssona. Uwaga: SonyEricsson Wireless Toolkit 2.5.0 wymaga do poprawnego działania JDK 6. Nie wystarczy posiadać JDK 5)

Wireless Toolkit ze strony Suna posiada cztery podstawowe szablony telefonów komórkowych:

  • Default Color Phone (domyślny telefon z kolorowym wyświetlaczem)
  • Default Gray Phone (z czarno-białym)
  • Media Control Skin
  • QWERTY Device

WTK SonyEricsson-a ma wbudowaną większą ilość telefonów (dotyczy wersji 2.2, nowsze mogą posiadać ich więcej):

  • Wireless Toolkit 1 (WTK1) - tylko telefony z MIDP 1.0
    • Default Color Phone
    • Default Gray Phone
    • Minimum Phone (mocno okrojony, w praktyce rzadko używany)
    • SonyEricsson P800
    • SonyEricsson T610
    • SonyEricsson T616
    • SonyEricsson T630
    • SonyEricsson Z600
  • Wireless Toolkit 2 (WTK2) - telefony obsługujące MIDP 2.0
    • SonyEricsson F500i
    • SonyEricsson J300
    • SonyEricsson K300
    • SonyEricsson K500
    • SonyEricsson K600
    • SonyEricsson K700
    • SonyEricsson K750
    • SonyEricsson P900
    • SonyEricsson P910
    • SonyEricsson S700
    • SonyEricsson V800
    • SonyEricsson Z1010
    • SonyEricsson Z500
    • SonyEricsson Z800

Co to jest MIDP?

Niestety, nie wszystkie telefony mają identyczne możliwości. Różnice sprowadzają się generalnie do dwóch specyfikacji: MIDP i CLDC. MIDP (Mobile Internet Device Profile) - najprościej mówiąc, definiuje funkcjonalność telefonu komórkowego. Istnieją dwie wersje MIDP: 1.0 i 2.0. Kod zgodny z MIDP 1.0 uruchomi się na wszystkich telefonach obsługujących Javę. MIDP 2.0 jest nowszy, a więc obsługiwany tylko przez późniejsze modele (w przypadku SonyEricssona - K300 oraz wszystkie nowsze).

CLDC (Connected Limited Device Configuration) - podobnie jak MIDP, jednak definiuje nie funkcjonalność, a platformę sprzętową (np. minimalną wymaganą ilość pamięci operacyjnej). Istnieją dwie wersje CLDC: 1.0 oraz 1.1.

Do dzieła - pierwszy program

Napiszemy teraz program, który wyświetli formę z jakimś napisem. Po pierwsze, musimy założyć nowy projekt. Uruchamiamy z menu Start|Programy|J2ME Wireless Toolkit 2.x|KToolbar (jeżeli chcesz użyć toolkitu SonyEricssona, wybierz Start|Programy|SonyEricsson|J2ME SDK|WTKx|KToolbar, gdzie x to 1 lub 2 - różnią się one jedynie predefiniowanymi telefonami). Następnie wybieramy z File|New Project... i podajemy następujące informacje: - Project Name: nazwa projektu - MIDlet Class Name: nazwa klasy głównej, na przykład PierwszyProgram. Program jeszcze zapyta się o właściwości projektu. W naszym przypadku wystarczy nam konfiguracja MIDP 1.0 i taką wybieramy z listy. Mamy tym samym gwarancję, że to, co stworzyliśmy, uruchomi się na wszystkich telefonach.

Projekt zostanie utworzony w katalogu, w którym zainstalował się toolkit (typowo C:\WTK22). Otwieramy folder apps/nazwa_naszego_projektu/src. To właśnie w tym katalogu umieszczamy źródła.

W katalogu, który mamy otwarty, tworzymy plik o nazwie zgodnej z nazwą klasy podanej przy tworzeniu projektu, z rozszerzeniem .java. Zwróć uwagę na to, aby rozszerzenie było faktycznie .java, a nie .java.txt. W razie konieczności włącz pokazywanie rozszerzeń w ustawieniach Eksploratora. W dalszej części będziemy posługiwać się nazwą klasy PierwszyProgram.

W utworzonym pliku PierwszyProgram.java piszemy kod. Po pierwsze, dołączamy niezbędne pakiety:

import javax.microedition.midlet.MIDlet;  /* z pakietu javax.microedition.midlet bierzemy tylko klasę MIDlet... */
import javax.microedition.lcdui.*; /* ... a z javax.microedition.lcdui wszystko */

Następnie definiujemy główną klasę naszego MIDletu.

public class PierwszyProgram extends MIDlet
{
 public PierwszyProgram()
 {
   Form forma = new Form ("Pierwszy program");
   forma.append ("To jest pierwszy program :-]");

   Display ekran = Display.getDisplay (this);
   ekran.setCurrent (forma);
 }

W konstruktorze tworzymy nowy obiekt klasy Form, czyli formatkę. Jako parametr konstruktora przekazujemy tytuł utworzonej formy. Następnie dołączamy do niej tekst (append (String) jest jedną z trzech wersji tej metody).
Dalej tworzymy obiekt klasy Display, wywołując statyczną metodę getDisplay klasy Display. Na koniec ustawiamy utworzoną wcześniej formę jako aktualnie wyświetlaną.

To jeszcze nie koniec, klasa MIDlet definiuje trzy metody abstrakcyjne, które musimy sami zapełnić treścią. W tym przypadku pozostaną one niewykorzystane, ale musimy je tam dopisać:

 public void startApp()
 {
  // kod wykonywany przy starcie oraz przy wznowieniu
 }
 public void pauseApp()
 {
  // kod wykonywany przy wstrzymaniu
 }
 public void destroyApp (boolean unconditional)
 {
  // kod wykonywany przy zamykaniu
 }

Tak więc kompletny kod wygląda tak:

import javax.microedition.midlet.MIDlet;  /* z pakietu javax.microedition.midlet bierzemy tylko klasę MIDlet... */
import javax.microedition.lcdui.*; /* ... a z javax.microedition.lcdui wszystko */

public class PierwszyProgram extends MIDlet
{
 public PierwszyProgram()
 {
   Form forma = new Form ("Pierwszy program");
   forma.append ("To jest pierwszy program :-]");

   Display ekran = Display.getDisplay (this);
   ekran.setCurrent (forma);
 }
 public void startApp()
 {
  // kod wykonywany przy starcie oraz przy wznowieniu
 }
 public void pauseApp()
 {
  // kod wykonywany przy wstrzymaniu
 }
 public void destroyApp (boolean unconditional)
 {
  // kod wykonywany przy zamykaniu
 }
}

Kod zapisujemy, przechodzimy do KToolbara i wybieramy opcję Build. O ile nie popełniliśmy żadnego błędu, kompilacja przebiegnie cicho. Uruchamiamy teraz aplikację poleceniem Run.

Na koniec, czas, aby pochwalić się światu naszymi dokonaniami, oczywiście działającą na komórce aplikacją. Z menu Project wybieramy Package|Create Package. W Eksploratorze przechodzimy do katalogu "bin" i znajdujemy tam plik PierwszyProgram.jar. Jeżeli masz taką możliwość, wyślij go przez podczerwień, Bluetooth lub kabel na swój telefon.

Udało się? W takim razie możesz zacząć swoją przygodę z J2ME i programami działającymi na telefonach komórkowych! :-)

5 komentarzy

Ja rowniez bylbym zainteresowany informacja co zrobic aby w netbeansie to dzialalo :)

co zrobić żeby taką aplikacje można było napisać (tzn żeby było np uzupełnienie składni i żeby pokazywało błędy kompilacji) i skompilować w netbeans-ie.?

ok spoko już wszystko działa jak należy tylko odinstalowałem wszystko i na nowo zainstalowałem ;)

Dzięki za pomoc której szukałem już od dawna ;]

Podczas kompilacji wyskakuje mi błąd typu: http://www.graffiti.yoyo.pl/error.JPG
O co w tym chodzi i jak to naprawić?