SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TREŒCI
                                         J2ME. Java dla urz¹dzeñ
                                         mobilnych. Æwiczenia
           KATALOG KSI¥¯EK               utor: Krzysztof Rychlicki-Kicior
                                         ISBN: 83-246-0393-X
                      KATALOG ONLINE     Format: B5, stron: 148

       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK                             Poznaj podstawy tworzenia aplikacji dla telefonów komórkowych
                    DODAJ DO KOSZYKA         • Zainstaluj œrodowisko programistyczne
                                             • Napisz w³asny MIDlet
                                             • Po³¹cz aplikacjê z internetem
         CENNIK I INFORMACJE             Niemal ka¿dy telefon komórkowy umo¿liwia uruchamianie aplikacji napisanych
                                         w jêzyku Java. Jednak tworzenie takich aplikacji ró¿ni siê od pisania programów
                   ZAMÓW INFORMACJE      na „du¿e” komputery. Korzystanie z jêzyka Java dla urz¹dzeñ mobilnych (J2ME)
                     O NOWOŒCIACH        wymusza na programiœcie pewne ograniczenia wynikaj¹ce z mniejszej iloœci pamiêci,
                                         odmiennych metod komunikacji i wielu innych czynników. Tworzenie aplikacji J2ME,
                       ZAMÓW CENNIK      zwanych MIDletami, wymaga poznania tych ograniczeñ oraz specyficznych zasad
                                         programowania.
                                         Ksi¹¿ka „J2ME. Java dla urz¹dzeñ mobilnych. Æwiczenia” to przewodnik po
                 CZYTELNIA               podstawowych zagadnieniach zwi¹zanych z tworzeniem aplikacji dla urz¹dzeñ
                                         mobilnych. Wykonuj¹c zawarte w niej æwiczenia, nauczysz siê korzystaæ z tej wersji
          FRAGMENTY KSI¥¯EK ONLINE       Javy. Stworzysz proste MIDlety i poznasz zasady tworzenia interfejsów u¿ytkownika.
                                         Dowiesz siê, jak implementowaæ po³¹czenia internetowe i korzystaæ z danych
                                         zawartych w zewnêtrznych plikach.
                                             • Instalacja œrodowiska J2ME Wireless Toolkit
                                             • Podstawowy szkielet MIDletu
                                             • Importowanie klas
                                             • Komponenty interfejsu u¿ytkownika
                                             • Zapis danych do pamiêci telefonu
                                             • Pobieranie zawartoœci stron internetowych
                                             • Odtwarzanie dŸwiêków
                                                          Odczuwasz brak jakiejœ funkcji w telefonie komórkowym?
Wydawnictwo Helion                                            Napisz samodzielnie program, który j¹ zrealizuje
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Wstęp                                                7
Rozdział 1. Instalacja środowiska WTK                            9
            1.1.    Pobranie komponentów z internetu              9
            1.2.    Instalacja oprogramowania                    11
            1.3.    Omówienie środowiska J2ME Wireless Toolkit   12
                    1.3.1. KToolbar                              12
                    1.3.2. OTA Provisioning                      13

Rozdział 2. Pierwszy MIDlet                                      17
            2.1.    Tworzenie nowego projektu                    17
            2.2.    Podstawowy szkielet MIDletu                  18
                    2.2.1. Importowanie pakietów                 18
                    2.2.2. Deklaracja klasy                      19
                    2.2.3. Deklaracja koniecznych metod          19
                    2.2.4. Konstruktor                           20
            2.3.    Publikowanie MIDletu                         23

Rozdział 3. Interfejs użytkownika w MIDletach                    27
            3.1.    MID Profile — nie wszystkie urządzenia
                    mają takie same możliwości                   28
            3.2.    Słuchacze zdarzeń (Listener) a komponenty    29
            3.3.    Najczęściej używane komponenty               30
                    3.3.1. Command — polecenie                   30
                    3.3.2. TextField — pole tekstowe             32
                    3.3.3. StringItem — (nie)zwykły tekst        35
                    3.3.4. ChoiceGroup — lista wyboru            38
                    3.3.5. Image i ImageItem — obrazki           42
4            J2ME. Java dla urządzeń mobilnych • Ćwiczenia

                   3.3.6. Canvas i TextBox — inne sposoby
                          wykorzystania powierzchni wyświetlacza     48
                   3.3.7. Timer — zegar i regulator                  54

Rozdział 4. Zapisywanie i odczytywanie informacji w telefonie        59
            4.1.   Sposób I — wykorzystanie plików z archiwów JAR    59
            4.2.   Sposób II — wykorzystywanie RMS                   64
                   4.2.1. Zapisywanie danych                         65
                   4.2.2. Wczytywanie danych                         69
                   4.2.3. Wykorzystanie klas ByteArrayInputStream
                          i ByteArrayOutputStream do ułatwienia
                          pracy z RMS                                72

Rozdział 5. Urządzenia mobilne a internet                           79
            5.1.   Zasady korzystania z klas gniazdek                80
            5.2.   Używanie interfejsu HttpConnection
                   do pobierania stron internetowych                 84
            5.3.   SocketConnection — interfejs do ogólnej
                   komunikacji między urządzeniami                   93

Rozdział 6. Odtwarzanie dźwięków                                    105
            6.1.   Pakiet javax.microedition.media                  105

Rozdział 7. Projekt — aplikacja Baza Kontaktów                      109
            7.1.   Tworzenie interfejsu użytkownika                 109
            7.2.   Obsługa dostępu do danych                        112
            7.3.   Obsługa interfejsu użytkownika                   120

Dodatek A                                                           127
            A.1. Komentarze                                         127
            A.2. Podstawowe elementy programu                       128
                 A.2.1. Zmienne                                     128
                 A.2.2. Operatory relacji                           130
                 A.2.3. Operator trójargumentowy                    131
                 A.2.4. Operatory logiczne                          131
            A.3. Instrukcje złożone (sterujące)                     131
                 A.3.1. Instrukcja warunkowa                        132
                 A.3.2. Instrukcja Switch                           132
            A.4. Pętle                                              133
            A.5. Tablice                                            135
            A.6. Klasy                                              135
            A.7. Dziedziczenie                                      138
            A.8. Interfejsy                                         140
Spis treści     5

               A.9. Pakiety                     141
               A.10. Tworzenie obiektów         142
                     A.10.1. Metody statyczne   142
               A.11. Klasa String               144
               A.12. Rzutowanie                 145
               A.13. Konstrukcja try..catch     146

Bibliografia                                    147
W tym rozdziale zapoznasz się ze schematem typowego MIDle-
           tu. Następnie wykorzystasz go do napisania aplikacji wyświe-
           tlającej na ekranie emulatora tekst. Osobom, które nie progra-
    mowały wcześniej w Javie (lub żadnym innym języku programowania),
    polecam zapoznanie się z Dodatkiem A. Opisano w nim najważniejsze
    elementy języka Java (głównie te, które wykorzystasz w pracy nad
    MIDletami).




    W poniższym ćwiczeniu utworzymy nowy projekt. Wykorzystamy go
    później do stworzenia MIDletu.

Ć W I C Z E N I E

     2.1            Utworzenie projektu przy pomocy środowiska WTK

    Uruchom środowisko WTK i utwórz nowy projekt.
     1. Otwórz program J2ME Wireless Toolkit.
     2. Kliknij przycisk New Project.
     3. W pole Project Name wpisz projekt1, a w pole MIDlet Class
        Name — klasa1.
18              J2ME. Java dla urządzeń mobilnych • Ćwiczenia

 4. W okienku Settings przejdź na zakładkę MIDlets i upewnij się,
    że w polu Class znajduje się wartość klasa1. Kliknij przycisk OK.


Spróbuj teraz skompilować program poleceniem Build. Po wykona-
niu wszystkich operacji powinien wyświetlić się ciąg komunikatów:
       Project settings saved
       Building "projekt1"
       No sources to compile
       Build failed

MIDlet nie może zostać skompilowany, gdyż kompilator nie może od-
naleźć kodu źródłowego. Można wyciągnąć z tego ważny wniosek —
środowisko WTK nie tworzy plików zawierających kody źródłowe. Nie
generuje też najprostszych nawet schematów aplikacji. Musimy zatem
utworzyć ów schemat sami.




2.2.1. Importowanie pakietów
Na początku musimy określić, jakie pakiety należy zaimportować do
naszej aplikacji. W pierwszym programie wykorzystamy dwa spośród
nich:
       javax.microedition.lcdui
oraz
       javax.microedition.midlet

Jaka jest rola tych pakietów w tworzeniu aplikacji? Pakiet javax.micro-
edition.midlet, a w szczególności znajdująca się w nim klasa MIDlet
(jest to klasa bazowa dla wszystkich klas MIDletów), dostarcza pod-
stawowych funkcji, takich jak zamykanie aplikacji. W pakiecie ja-
vax.microedition.lcdui znajdują się wszelkiego rodzaju komponenty
graficzne, czyli klasy odpowiedzialne za wyświetlanie elementów gra-
ficznych (np. pól tekstowych, tekstów, list wyboru itd.).
Rozdział 2. • Pierwszy MIDlet                 19

2.2.2. Deklaracja klasy
Skoro dysponujemy już potrzebnymi elementami, możemy przystąpić
do projektowania klasy. Będzie ona dziedziczyła po klasie MIDlet — stąd
deklaracja:
    public class klasa1 extends MIDlet

Proszę zwrócić uwagę, iż trzeba podać tę samą nazwę, którą wpisali-
śmy przy tworzeniu projektu w programie Wireless Toolkit (klasa1).


2.2.3. Deklaracja koniecznych metod
Dziedziczenie po klasie MIDlet zobowiązuje nas do zdefiniowania trzech
metod, które w klasie MIDlet zostały oznaczone jako abstrakcyjne. Meto-
dy abstrakcyjne nie zawierają żadnej treści i zmuszają programistów
tworzących klasy pochodne do samodzielnego ich zdefiniowania.
Metody abstrakcyjne, o których mowa, to:
    protected void startApp()
    protected void pauseApp()
    protected void destroyApp(boolean unconditional)

Są one bezpośrednio związane ze stanem, w jakim znajduje się MIDlet.
W momencie uruchamiania aplikacji wywołana zostaje metoda start-
App(). Jeśli chcemy zwolnić zaalokowane wcześniej zasoby, możemy
użyć metody destroyApp() przed zakończeniem działania aplikacji.
Metoda pauseApp() jest swoistym ewenementem, gdyż istnienie takiej
metody ma sens tylko w telefonach komórkowych (lub innych urzą-
dzeniach z możliwością wykonywania połączeń telefonicznych). Zo-
staje ona wywołana w chwili, gdy ktoś dzwoni i telefon musi zająć
się obsługą rozmowy. Jeśli zatem nasz MIDlet wykonuje jakieś ope-
racje w tle, np. pobieranie pliku z internetu, w metodzie pauseApp()
możemy zapisać informację o stanie pobierania w pamięci telefonu.
Działanie aplikacji nie jest jednak zatrzymane na zawsze — w pewnym
momencie rozmowa kończy się i telefon powraca do zatrzymanego
programu. Wtedy to zostaje ponownie wywołana metoda startApp().
Uważny Czytelnik (lub osoba, która zajrzała do dalszych rozdziałów
książki) zauważy, że są czynności, które aplikacja może wykonać tylko
raz — np. utworzenie komponentów graficznych. Wykonanie tego pro-
cesu kilka razy (w przypadku przerywania aplikacji) spowodowałoby
20                  J2ME. Java dla urządzeń mobilnych • Ćwiczenia

    w najlepszym razie dziwne zachowanie naszego MIDletu. W związku
    z tym tworzenie interfejsu i inne operacje jednorazowe wykonuje się
    w specjalnej metodzie, zwanej konstruktorem.


    2.2.4. Konstruktor
    W poprzednim akapicie została wyjaśniona rola konstruktora w dzia-
    łaniu MIDletu. Jego deklaracja wygląda prosto:
            public klasa1()

    Warto pamiętać, iż konstruktor jest wywoływany PRZED metodą start-
    App(), co może być przydatne np. przy alokowaniu zasobów lub two-
    rzeniu wątków.
    Po omówieniu schematu możemy przystąpić do pisania pierwszej apli-
    kacji — MIDletu wypisującego na ekranie krótki tekst. W tym celu naj-
    pierw wykonamy ćwiczenie 2.2 — utworzenie pliku, w którym umie-
    ścimy kod źródłowy.

Ć W I C Z E N I E

     2.2            Utworzenie pliku, w którym znajdzie się kod źródłowy
                    MIDletu

    Przygotuj plik, w którym zostanie zapisany kod programu. Musi on znaj-
    dować się w określonej lokalizacji (zgodnej z ustawieniami projektu).
     1. Uruchom program Eksplorator Windows.
     2. Przejdź do katalogu c:WTK22appsprojekt1src (jeśli środowisko
         WTK zostało zainstalowane w domyślnym katalogu).
     3. Utwórz plik o nazwie klasa1.java (w systemie Windows kliknij
         prawym przyciskiem myszy puste pole w folderze, następnie
         z menu wybierz opcję Nowy/Dokument tekstowy i wpisz nazwę
         pliku).
     4. Kliknij dwukrotnie ikonę nowo utworzonego pliku. Jeśli nie
         instalowałeś wcześniej żadnego środowiska programistycznego
         Javy, system poprosi Cię o wybranie programu, który będzie
         używany przy edycji plików o rozszerzeniu .java. Dla naszej
         pracy nie ma to znaczenia — ważne jest tylko, aby edytor
         zapisywał tekst bez żadnych dodatkowych znaczników
         (jak w przypadku formatu .txt).
Rozdział 2. • Pierwszy MIDlet                       21

                W systemie Windows należy zwrócić uwagę, czy włączone jest pokazywanie
                rozszerzeń plików znanych typów. W tym celu, w oknie Eksploratora
                Windows z paska narzędzi wybierz opcję Narzędzia/ Opcje Folderów,
                następnie wybierz zakładkę Widok i upewnij się, że usunięte zostało
                zaznaczenie opcji Ukryj rozszerzenia znanych typów plików. Jeśli opcja
                ta jest włączona, wtedy wykonanie kroku 3. z poprzedniego ćwiczenia
                spowoduje utworzenie pliku klasa1.java.txt, co, rzecz jasna, nie jest
                naszym celem.

    Proces tworzenia pliku kodu źródłowego jest zawsze taki sam — znaj-
    duje się on w podkatalogu /src katalogu projektu (np. c:WTK22apps
    projekt1src). Kod, który trzeba zawrzeć w pliku klasa1.java, znajduje
    się poniżej (oczywiście, bez numerów linijek).

Ć W I C Z E N I E

     2.3            Program wypisze na ekranie emulatora tekst
                    „Witaj swiecie!”

    Napisz program, który wyświetli na ekranie podany w kodzie tekst.
    Dodatkowo, okienko programu będzie miało określony tytuł.
            1: import javax.microedition.lcdui.*;
            2: import javax.microedition.midlet.MIDlet;
            3:
            4: public class klasa1 extends MIDlet
            5: {
            6: public klasa1()
            7: {
            8: Form formatka = new Form("Pierwszy MIDlet");
            9: formatka.append("Witaj swiecie!");
            10: Display ekran = Display.getDisplay(this);
            11: ekran.set1urrent(formatka);
            12: }
            13: public void startApp()
            14: {
            15: }
            16: public void pauseApp()
            17: {
            18: }
            19: public void destroyApp(boolean unconditional)
            20: {
            21: }
            22:}
22           J2ME. Java dla urządzeń mobilnych • Ćwiczenia

Można zauważyć pewne różnice między powyższym kodem a opisa-
nym wcześniej schematem aplikacji. Przede wszystkim, z pakietu ja-
vax.microedition.midlet zaimportowaliśmy tylko klasę MIDlet. Kolejną
różnicę widać w definicjach metod — zamiast słowa kluczowego pro-
tected, widnieje słowo public. W naszym przypadku zastosowanie
obydwu wariantów nie ma znaczenia — różnica między nimi została
opisana w Dodatku. Najistotniejszym fragmentem kodu są oczywiście
wiersze 8 – 11, gdyż to w nich zawarte są kolejne etapy tworzenia
interfejsu graficznego. W wierszu 8. tworzymy pojemnik na inne gra-
ficzne komponenty, czyli formę, zwaną też formatką lub formularzem.
Następnie do formatki dodajemy tekst. W tym momencie dysponuje-
my przygotowaną do wyświetlenia formą. Aby ją jednak wyświetlić,
konieczne będzie utworzenie obiektu menedżera ekranu, który odpo-
wiada za zarządzanie wyświetlaniem formatek. Każdy MIDlet posia-
da swój obiekt menedżera, który pobieramy w wierszu 10. Wreszcie,
w wierszu 11. wyświetlamy przy pomocy metody setCurrent() utwo-
rzony obiekt formy. Te oraz inne komponenty graficzne zostaną omó-
wione w następnym rozdziale.
Po zapisaniu kodu źródłowego możemy przystąpić do jego kompilacji
i uruchomienia przy pomocy poznanych wcześniej poleceń Build i Run.
Korzystając z przycisku opcji, należy wybrać opcję Launch. Na rysunku
2.1 widać nasz pierwszy MIDlet w akcji.

 Rysunek 2.1.
 MIDlet w działaniu
Rozdział 2. • Pierwszy MIDlet                      23

    W tym momencie tworzenia aplikacji dysponujemy już działającym
    programem. Nadszedł czas na opublikowanie naszego wiekopomnego
    dzieła w internecie.




    Istnieją dwie ogólne metody przenoszenia MIDletu z komputera na tele-
    fon komórkowy. Pierwsza polega na przesłaniu programu przy użyciu
    różnego rodzaju kabli (USB) bądź połączeń bezprzewodowych (IrDA)
    i wykorzystaniu oprogramowania dołączonego do telefonu. Takie roz-
    wiązanie posiada jedną niezaprzeczalną zaletę. Program można wgry-
    wać wiele razy bez ponoszenia kosztów pobierania z internetu. Nie-
    stety, opisanie wszystkich możliwych sytuacji przesyłania danych jest
    trudne, w związku z tym zajmować się będziemy jedynie publikowa-
    niem MIDletu w internecie.

                Do wykonania poniższego ćwiczenia niezbędny jest dostęp do serwera,
                który ma przypisane następujące typy MIME dla rozszerzeń:
                    .jad — text/vnd.sun.j2me.app-descriptor
                    .jar — application/java-archive
                Jeśli opisany poniżej proces zakończy się niepowodzeniem, poproś
                administratora o ustawienie tych typów MIME. Oczywiście, konto na
                serwerze musi mieć specjalny katalog (najczęściej o nazwie www lub
                htdocs), w którym umieszczone pliki są ogólnie dostępne i mogą być
                pobierane przez każdego.

    W poniższym ćwiczeniu przygotujemy MIDlet do wysłania na serwer.

Ć W I C Z E N I E

     2.4            Przygotowanie MIDletu do publikacji w internecie

    Zmień ustawienia projektu konieczne do jego prawidłowego działania.
    Utwórz archiwum JAR.
     1. Uruchom środowisko Wireless Toolkit, a następnie otwórz
        projekt projekt1.
     2. Kliknij przycisk Settings i przejdź na zakładkę Required.
24            J2ME. Java dla urządzeń mobilnych • Ćwiczenia

 3. W polu MIDlet-Jar-URL wpisz adres internetowy URL do pliku
    z archiwum Javy (rozszerzenie .jar). W tym celu sprawdź, jaki
    jest adres internetowy do katalogu, w którym będziesz umieszczał
    MIDlet (np. http://www.serwer.org/katalog/), a następnie dopisz
    do tej ścieżki nazwę archiwum w postaci nazwa_projektu.jar
    (w naszym przypadku projekt1.jar). Można również wypełnić
    pole Vendor, wpisując w nie swoje imię i nazwisko. Jeśli będziesz
    chciał uruchomić MIDlet na normalnym telefonie, przejdź na
    zakładkę API Selection i z listy Target Platform wybierz opcję
    MIDP 1.0. Potwierdź zmiany, klikając OK.
 4. Utwórz archiwum JAR, wybierając opcję Create Package z menu
    Project/Package.


W wyniku powyższych operacji powstały dwa pliki gotowe do wysła-
nia na serwer. Niestety, musimy utworzyć jeszcze jeden plik — stronę
internetową zawierającą odnośnik do MIDletu, która jest wymagana
przez niektóre modele telefonów, a także przez nasz emulator. Kod
HTML strony znajduje się poniżej; należy zapisać go pod nazwą pro-
jekt1.html i umieścić w podkatalogu /bin naszego projektu.
     <html>
     <head>
     <title>projekt1</title>
     </head>
     <body>
     <a href="http://www.serwer.com/katalog/projekt1.jad">projekt1.jad</a>
     </body>
     </html>

Oczywiście, atrybut href odnośnika należy zmodyfikować zgodnie
z adresem URL serwera.
Możemy teraz przystąpić do kolejnego ćwiczenia, dzięki któremu bę-
dziemy w stanie pobrać i uruchomić MIDlet. W tym celu wykonamy
ćwiczenie 2.5. Ze względu na różnorodność programów do obsługi kont
FTP i rodzajów serwerów będzie to raczej zestaw wskazówek przydat-
nych przy wysyłaniu MIDletu na serwer.
Rozdział 2. • Pierwszy MIDlet           25
Ć W I C Z E N I E

     2.5            Wysyłanie programu na serwer

    Wyślij pliki MIDletu na serwer FTP. Musisz posiadać konto, które
    umożliwia publikowanie plików wszystkim internautom.
     1. Uruchom program, przy pomocy którego zamierzasz wysłać
        pliki na serwer (np. Total Commander).
     2. Połącz się z serwerem i przejdź do katalogu, w którym umieścisz
        MIDlet (zgodnie z określonymi wcześniej zasadami).
     3. Wyślij na serwer pliki: projekt1.html, projekt1.jad, projekt1.jar.
     4. Rozłącz się z serwerem.



    To już koniec pracy nad pierwszym MIDletem! Nie pozostało nam nic
    innego, jak wykonanie ćwiczenia 2.6, w którym pobierzemy naszą apli-
    kację przy użyciu programu OTA Provisioning.

Ć W I C Z E N I E

     2.6            Pobieranie MIDletu z internetu i uruchamianie
                    w programie OTA Provisioning

    Pobierz MIDlet, korzystając z programu OTA Provisioning. Następnie
    uruchom go i przetestuj działanie.
     1. Uruchom program OTA Provisioning, korzystając ze skrótu
        znajdującego się w Menu Start.
     2. Wybierz opcję Apps, a następnie uruchom program Install
        Application.
       3. W polu tekstowym podaj adres URL do pliku strony internetowej.
          Jeśli podasz adres do pliku JAD, emulator zwróci błąd. Wybierz
          opcję Menu i z listy — opcję Go.
       4. Dalej postępuj tak, jak w ćwiczeniu 1.4 w krokach 9 – 11
          (z uwzględnieniem nazwy MIDletu).


    Gratulacje! Jeśli wszystko zrealizowałeś zgodnie z wytycznymi, proces
    pobierania i instalowania MIDletu powinien zakończyć się powodze-
    niem, a efekt jego działania powinien być identyczny jak w przypadku
26           J2ME. Java dla urządzeń mobilnych • Ćwiczenia

uruchamiania MIDletu przy użyciu WTK. Jeśli jednak występują błędy,
upewnij się, że:
 q Adres URL do serwera we wszystkich miejscach jest wpisany
    prawidłowo,
 q Na serwerze znajdują się wszystkie pliki potrzebne
    do prawidłowego działania MIDletu,
 q Adres URL jest poprawny (w razie wątpliwości co do jego
    poprawności, poproś administratora serwera o pomoc).
Trzeba pamiętać o tym, iż nie sztuką jest napisać MIDlet działający
w środowisku WTK. Sztuką jest napisać MIDlet, który będzie działał na
wszystkich (lub przynajmniej większości) telefonach, czyli urządze-
niach docelowych. Najczęściej to właśnie z działaniem telefonów poja-
wiają się największe problemy. My, programiści — użytkownicy J2ME,
rzadko mamy wpływ na sposób implementacji J2ME w poszczególnych
modelach telefonów. W związku z tym, jeśli na niektórych (zwłaszcza
starszych) telefonach MIDlet nie działa (a teoretycznie powinien), nie
zawsze winy należy doszukiwać się po stronie programu. Czasem wy-
nika ona z zainstalowanych w telefonach wersjach Javy.

Contenu connexe

Similaire à J2ME. Java dla urządzeń mobilnych. Ćwiczenia

Po prostu sieci komputerowe w Windows Vista PL
Po prostu sieci komputerowe w Windows Vista PLPo prostu sieci komputerowe w Windows Vista PL
Po prostu sieci komputerowe w Windows Vista PLWydawnictwo Helion
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanieWydawnictwo Helion
 
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...Wydawnictwo Helion
 
Microsoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga ekspertaMicrosoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga ekspertaWydawnictwo Helion
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyWydawnictwo Helion
 
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieWydawnictwo Helion
 
Delphi. Techniki bazodanowe i internetowe
Delphi. Techniki bazodanowe i internetoweDelphi. Techniki bazodanowe i internetowe
Delphi. Techniki bazodanowe i internetoweWydawnictwo Helion
 
Windows Vista PL. Ćwiczenia praktyczne
Windows Vista PL. Ćwiczenia praktyczneWindows Vista PL. Ćwiczenia praktyczne
Windows Vista PL. Ćwiczenia praktyczneWydawnictwo Helion
 
Szybkie prototypowanie i development we VueJS
Szybkie prototypowanie i development we VueJSSzybkie prototypowanie i development we VueJS
Szybkie prototypowanie i development we VueJSThe Software House
 

Similaire à J2ME. Java dla urządzeń mobilnych. Ćwiczenia (20)

M3j2
M3j2M3j2
M3j2
 
M3j2
M3j2M3j2
M3j2
 
M3j3
M3j3M3j3
M3j3
 
M3j3
M3j3M3j3
M3j3
 
M3j1
M3j1M3j1
M3j1
 
M3j1
M3j1M3j1
M3j1
 
Po prostu sieci komputerowe w Windows Vista PL
Po prostu sieci komputerowe w Windows Vista PLPo prostu sieci komputerowe w Windows Vista PL
Po prostu sieci komputerowe w Windows Vista PL
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie
 
Slackware Linux. Ćwiczenia
Slackware Linux. ĆwiczeniaSlackware Linux. Ćwiczenia
Slackware Linux. Ćwiczenia
 
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...
Informatyka Europejczyka. Podręcznik dla szkoły podstawowej, kl. IV - VI. Edy...
 
Microsoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga ekspertaMicrosoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga eksperta
 
Spring. Zapiski programisty
Spring. Zapiski programistySpring. Zapiski programisty
Spring. Zapiski programisty
 
J2ME. Praktyczne projekty
J2ME. Praktyczne projektyJ2ME. Praktyczne projekty
J2ME. Praktyczne projekty
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
 
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
 
Delphi. Techniki bazodanowe i internetowe
Delphi. Techniki bazodanowe i internetoweDelphi. Techniki bazodanowe i internetowe
Delphi. Techniki bazodanowe i internetowe
 
Windows Vista PL. Ćwiczenia praktyczne
Windows Vista PL. Ćwiczenia praktyczneWindows Vista PL. Ćwiczenia praktyczne
Windows Vista PL. Ćwiczenia praktyczne
 
C#. Ćwiczenia. Wydanie II
C#. Ćwiczenia. Wydanie IIC#. Ćwiczenia. Wydanie II
C#. Ćwiczenia. Wydanie II
 
Mandriva. Ćwiczenia
Mandriva. ĆwiczeniaMandriva. Ćwiczenia
Mandriva. Ćwiczenia
 
Szybkie prototypowanie i development we VueJS
Szybkie prototypowanie i development we VueJSSzybkie prototypowanie i development we VueJS
Szybkie prototypowanie i development we VueJS
 

Plus de Wydawnictwo Helion

Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++Wydawnictwo Helion
 

Plus de Wydawnictwo Helion (20)

Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 

J2ME. Java dla urządzeń mobilnych. Ćwiczenia

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI J2ME. Java dla urz¹dzeñ mobilnych. Æwiczenia KATALOG KSI¥¯EK utor: Krzysztof Rychlicki-Kicior ISBN: 83-246-0393-X KATALOG ONLINE Format: B5, stron: 148 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Poznaj podstawy tworzenia aplikacji dla telefonów komórkowych DODAJ DO KOSZYKA • Zainstaluj œrodowisko programistyczne • Napisz w³asny MIDlet • Po³¹cz aplikacjê z internetem CENNIK I INFORMACJE Niemal ka¿dy telefon komórkowy umo¿liwia uruchamianie aplikacji napisanych w jêzyku Java. Jednak tworzenie takich aplikacji ró¿ni siê od pisania programów ZAMÓW INFORMACJE na „du¿e” komputery. Korzystanie z jêzyka Java dla urz¹dzeñ mobilnych (J2ME) O NOWOŒCIACH wymusza na programiœcie pewne ograniczenia wynikaj¹ce z mniejszej iloœci pamiêci, odmiennych metod komunikacji i wielu innych czynników. Tworzenie aplikacji J2ME, ZAMÓW CENNIK zwanych MIDletami, wymaga poznania tych ograniczeñ oraz specyficznych zasad programowania. Ksi¹¿ka „J2ME. Java dla urz¹dzeñ mobilnych. Æwiczenia” to przewodnik po CZYTELNIA podstawowych zagadnieniach zwi¹zanych z tworzeniem aplikacji dla urz¹dzeñ mobilnych. Wykonuj¹c zawarte w niej æwiczenia, nauczysz siê korzystaæ z tej wersji FRAGMENTY KSI¥¯EK ONLINE Javy. Stworzysz proste MIDlety i poznasz zasady tworzenia interfejsów u¿ytkownika. Dowiesz siê, jak implementowaæ po³¹czenia internetowe i korzystaæ z danych zawartych w zewnêtrznych plikach. • Instalacja œrodowiska J2ME Wireless Toolkit • Podstawowy szkielet MIDletu • Importowanie klas • Komponenty interfejsu u¿ytkownika • Zapis danych do pamiêci telefonu • Pobieranie zawartoœci stron internetowych • Odtwarzanie dŸwiêków Odczuwasz brak jakiejœ funkcji w telefonie komórkowym? Wydawnictwo Helion Napisz samodzielnie program, który j¹ zrealizuje ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Wstęp 7 Rozdział 1. Instalacja środowiska WTK 9 1.1. Pobranie komponentów z internetu 9 1.2. Instalacja oprogramowania 11 1.3. Omówienie środowiska J2ME Wireless Toolkit 12 1.3.1. KToolbar 12 1.3.2. OTA Provisioning 13 Rozdział 2. Pierwszy MIDlet 17 2.1. Tworzenie nowego projektu 17 2.2. Podstawowy szkielet MIDletu 18 2.2.1. Importowanie pakietów 18 2.2.2. Deklaracja klasy 19 2.2.3. Deklaracja koniecznych metod 19 2.2.4. Konstruktor 20 2.3. Publikowanie MIDletu 23 Rozdział 3. Interfejs użytkownika w MIDletach 27 3.1. MID Profile — nie wszystkie urządzenia mają takie same możliwości 28 3.2. Słuchacze zdarzeń (Listener) a komponenty 29 3.3. Najczęściej używane komponenty 30 3.3.1. Command — polecenie 30 3.3.2. TextField — pole tekstowe 32 3.3.3. StringItem — (nie)zwykły tekst 35 3.3.4. ChoiceGroup — lista wyboru 38 3.3.5. Image i ImageItem — obrazki 42
  • 3. 4 J2ME. Java dla urządzeń mobilnych • Ćwiczenia 3.3.6. Canvas i TextBox — inne sposoby wykorzystania powierzchni wyświetlacza 48 3.3.7. Timer — zegar i regulator 54 Rozdział 4. Zapisywanie i odczytywanie informacji w telefonie 59 4.1. Sposób I — wykorzystanie plików z archiwów JAR 59 4.2. Sposób II — wykorzystywanie RMS 64 4.2.1. Zapisywanie danych 65 4.2.2. Wczytywanie danych 69 4.2.3. Wykorzystanie klas ByteArrayInputStream i ByteArrayOutputStream do ułatwienia pracy z RMS 72 Rozdział 5. Urządzenia mobilne a internet 79 5.1. Zasady korzystania z klas gniazdek 80 5.2. Używanie interfejsu HttpConnection do pobierania stron internetowych 84 5.3. SocketConnection — interfejs do ogólnej komunikacji między urządzeniami 93 Rozdział 6. Odtwarzanie dźwięków 105 6.1. Pakiet javax.microedition.media 105 Rozdział 7. Projekt — aplikacja Baza Kontaktów 109 7.1. Tworzenie interfejsu użytkownika 109 7.2. Obsługa dostępu do danych 112 7.3. Obsługa interfejsu użytkownika 120 Dodatek A 127 A.1. Komentarze 127 A.2. Podstawowe elementy programu 128 A.2.1. Zmienne 128 A.2.2. Operatory relacji 130 A.2.3. Operator trójargumentowy 131 A.2.4. Operatory logiczne 131 A.3. Instrukcje złożone (sterujące) 131 A.3.1. Instrukcja warunkowa 132 A.3.2. Instrukcja Switch 132 A.4. Pętle 133 A.5. Tablice 135 A.6. Klasy 135 A.7. Dziedziczenie 138 A.8. Interfejsy 140
  • 4. Spis treści 5 A.9. Pakiety 141 A.10. Tworzenie obiektów 142 A.10.1. Metody statyczne 142 A.11. Klasa String 144 A.12. Rzutowanie 145 A.13. Konstrukcja try..catch 146 Bibliografia 147
  • 5. W tym rozdziale zapoznasz się ze schematem typowego MIDle- tu. Następnie wykorzystasz go do napisania aplikacji wyświe- tlającej na ekranie emulatora tekst. Osobom, które nie progra- mowały wcześniej w Javie (lub żadnym innym języku programowania), polecam zapoznanie się z Dodatkiem A. Opisano w nim najważniejsze elementy języka Java (głównie te, które wykorzystasz w pracy nad MIDletami). W poniższym ćwiczeniu utworzymy nowy projekt. Wykorzystamy go później do stworzenia MIDletu. Ć W I C Z E N I E 2.1 Utworzenie projektu przy pomocy środowiska WTK Uruchom środowisko WTK i utwórz nowy projekt. 1. Otwórz program J2ME Wireless Toolkit. 2. Kliknij przycisk New Project. 3. W pole Project Name wpisz projekt1, a w pole MIDlet Class Name — klasa1.
  • 6. 18 J2ME. Java dla urządzeń mobilnych • Ćwiczenia 4. W okienku Settings przejdź na zakładkę MIDlets i upewnij się, że w polu Class znajduje się wartość klasa1. Kliknij przycisk OK. Spróbuj teraz skompilować program poleceniem Build. Po wykona- niu wszystkich operacji powinien wyświetlić się ciąg komunikatów: Project settings saved Building "projekt1" No sources to compile Build failed MIDlet nie może zostać skompilowany, gdyż kompilator nie może od- naleźć kodu źródłowego. Można wyciągnąć z tego ważny wniosek — środowisko WTK nie tworzy plików zawierających kody źródłowe. Nie generuje też najprostszych nawet schematów aplikacji. Musimy zatem utworzyć ów schemat sami. 2.2.1. Importowanie pakietów Na początku musimy określić, jakie pakiety należy zaimportować do naszej aplikacji. W pierwszym programie wykorzystamy dwa spośród nich: javax.microedition.lcdui oraz javax.microedition.midlet Jaka jest rola tych pakietów w tworzeniu aplikacji? Pakiet javax.micro- edition.midlet, a w szczególności znajdująca się w nim klasa MIDlet (jest to klasa bazowa dla wszystkich klas MIDletów), dostarcza pod- stawowych funkcji, takich jak zamykanie aplikacji. W pakiecie ja- vax.microedition.lcdui znajdują się wszelkiego rodzaju komponenty graficzne, czyli klasy odpowiedzialne za wyświetlanie elementów gra- ficznych (np. pól tekstowych, tekstów, list wyboru itd.).
  • 7. Rozdział 2. • Pierwszy MIDlet 19 2.2.2. Deklaracja klasy Skoro dysponujemy już potrzebnymi elementami, możemy przystąpić do projektowania klasy. Będzie ona dziedziczyła po klasie MIDlet — stąd deklaracja: public class klasa1 extends MIDlet Proszę zwrócić uwagę, iż trzeba podać tę samą nazwę, którą wpisali- śmy przy tworzeniu projektu w programie Wireless Toolkit (klasa1). 2.2.3. Deklaracja koniecznych metod Dziedziczenie po klasie MIDlet zobowiązuje nas do zdefiniowania trzech metod, które w klasie MIDlet zostały oznaczone jako abstrakcyjne. Meto- dy abstrakcyjne nie zawierają żadnej treści i zmuszają programistów tworzących klasy pochodne do samodzielnego ich zdefiniowania. Metody abstrakcyjne, o których mowa, to: protected void startApp() protected void pauseApp() protected void destroyApp(boolean unconditional) Są one bezpośrednio związane ze stanem, w jakim znajduje się MIDlet. W momencie uruchamiania aplikacji wywołana zostaje metoda start- App(). Jeśli chcemy zwolnić zaalokowane wcześniej zasoby, możemy użyć metody destroyApp() przed zakończeniem działania aplikacji. Metoda pauseApp() jest swoistym ewenementem, gdyż istnienie takiej metody ma sens tylko w telefonach komórkowych (lub innych urzą- dzeniach z możliwością wykonywania połączeń telefonicznych). Zo- staje ona wywołana w chwili, gdy ktoś dzwoni i telefon musi zająć się obsługą rozmowy. Jeśli zatem nasz MIDlet wykonuje jakieś ope- racje w tle, np. pobieranie pliku z internetu, w metodzie pauseApp() możemy zapisać informację o stanie pobierania w pamięci telefonu. Działanie aplikacji nie jest jednak zatrzymane na zawsze — w pewnym momencie rozmowa kończy się i telefon powraca do zatrzymanego programu. Wtedy to zostaje ponownie wywołana metoda startApp(). Uważny Czytelnik (lub osoba, która zajrzała do dalszych rozdziałów książki) zauważy, że są czynności, które aplikacja może wykonać tylko raz — np. utworzenie komponentów graficznych. Wykonanie tego pro- cesu kilka razy (w przypadku przerywania aplikacji) spowodowałoby
  • 8. 20 J2ME. Java dla urządzeń mobilnych • Ćwiczenia w najlepszym razie dziwne zachowanie naszego MIDletu. W związku z tym tworzenie interfejsu i inne operacje jednorazowe wykonuje się w specjalnej metodzie, zwanej konstruktorem. 2.2.4. Konstruktor W poprzednim akapicie została wyjaśniona rola konstruktora w dzia- łaniu MIDletu. Jego deklaracja wygląda prosto: public klasa1() Warto pamiętać, iż konstruktor jest wywoływany PRZED metodą start- App(), co może być przydatne np. przy alokowaniu zasobów lub two- rzeniu wątków. Po omówieniu schematu możemy przystąpić do pisania pierwszej apli- kacji — MIDletu wypisującego na ekranie krótki tekst. W tym celu naj- pierw wykonamy ćwiczenie 2.2 — utworzenie pliku, w którym umie- ścimy kod źródłowy. Ć W I C Z E N I E 2.2 Utworzenie pliku, w którym znajdzie się kod źródłowy MIDletu Przygotuj plik, w którym zostanie zapisany kod programu. Musi on znaj- dować się w określonej lokalizacji (zgodnej z ustawieniami projektu). 1. Uruchom program Eksplorator Windows. 2. Przejdź do katalogu c:WTK22appsprojekt1src (jeśli środowisko WTK zostało zainstalowane w domyślnym katalogu). 3. Utwórz plik o nazwie klasa1.java (w systemie Windows kliknij prawym przyciskiem myszy puste pole w folderze, następnie z menu wybierz opcję Nowy/Dokument tekstowy i wpisz nazwę pliku). 4. Kliknij dwukrotnie ikonę nowo utworzonego pliku. Jeśli nie instalowałeś wcześniej żadnego środowiska programistycznego Javy, system poprosi Cię o wybranie programu, który będzie używany przy edycji plików o rozszerzeniu .java. Dla naszej pracy nie ma to znaczenia — ważne jest tylko, aby edytor zapisywał tekst bez żadnych dodatkowych znaczników (jak w przypadku formatu .txt).
  • 9. Rozdział 2. • Pierwszy MIDlet 21 W systemie Windows należy zwrócić uwagę, czy włączone jest pokazywanie rozszerzeń plików znanych typów. W tym celu, w oknie Eksploratora Windows z paska narzędzi wybierz opcję Narzędzia/ Opcje Folderów, następnie wybierz zakładkę Widok i upewnij się, że usunięte zostało zaznaczenie opcji Ukryj rozszerzenia znanych typów plików. Jeśli opcja ta jest włączona, wtedy wykonanie kroku 3. z poprzedniego ćwiczenia spowoduje utworzenie pliku klasa1.java.txt, co, rzecz jasna, nie jest naszym celem. Proces tworzenia pliku kodu źródłowego jest zawsze taki sam — znaj- duje się on w podkatalogu /src katalogu projektu (np. c:WTK22apps projekt1src). Kod, który trzeba zawrzeć w pliku klasa1.java, znajduje się poniżej (oczywiście, bez numerów linijek). Ć W I C Z E N I E 2.3 Program wypisze na ekranie emulatora tekst „Witaj swiecie!” Napisz program, który wyświetli na ekranie podany w kodzie tekst. Dodatkowo, okienko programu będzie miało określony tytuł. 1: import javax.microedition.lcdui.*; 2: import javax.microedition.midlet.MIDlet; 3: 4: public class klasa1 extends MIDlet 5: { 6: public klasa1() 7: { 8: Form formatka = new Form("Pierwszy MIDlet"); 9: formatka.append("Witaj swiecie!"); 10: Display ekran = Display.getDisplay(this); 11: ekran.set1urrent(formatka); 12: } 13: public void startApp() 14: { 15: } 16: public void pauseApp() 17: { 18: } 19: public void destroyApp(boolean unconditional) 20: { 21: } 22:}
  • 10. 22 J2ME. Java dla urządzeń mobilnych • Ćwiczenia Można zauważyć pewne różnice między powyższym kodem a opisa- nym wcześniej schematem aplikacji. Przede wszystkim, z pakietu ja- vax.microedition.midlet zaimportowaliśmy tylko klasę MIDlet. Kolejną różnicę widać w definicjach metod — zamiast słowa kluczowego pro- tected, widnieje słowo public. W naszym przypadku zastosowanie obydwu wariantów nie ma znaczenia — różnica między nimi została opisana w Dodatku. Najistotniejszym fragmentem kodu są oczywiście wiersze 8 – 11, gdyż to w nich zawarte są kolejne etapy tworzenia interfejsu graficznego. W wierszu 8. tworzymy pojemnik na inne gra- ficzne komponenty, czyli formę, zwaną też formatką lub formularzem. Następnie do formatki dodajemy tekst. W tym momencie dysponuje- my przygotowaną do wyświetlenia formą. Aby ją jednak wyświetlić, konieczne będzie utworzenie obiektu menedżera ekranu, który odpo- wiada za zarządzanie wyświetlaniem formatek. Każdy MIDlet posia- da swój obiekt menedżera, który pobieramy w wierszu 10. Wreszcie, w wierszu 11. wyświetlamy przy pomocy metody setCurrent() utwo- rzony obiekt formy. Te oraz inne komponenty graficzne zostaną omó- wione w następnym rozdziale. Po zapisaniu kodu źródłowego możemy przystąpić do jego kompilacji i uruchomienia przy pomocy poznanych wcześniej poleceń Build i Run. Korzystając z przycisku opcji, należy wybrać opcję Launch. Na rysunku 2.1 widać nasz pierwszy MIDlet w akcji. Rysunek 2.1. MIDlet w działaniu
  • 11. Rozdział 2. • Pierwszy MIDlet 23 W tym momencie tworzenia aplikacji dysponujemy już działającym programem. Nadszedł czas na opublikowanie naszego wiekopomnego dzieła w internecie. Istnieją dwie ogólne metody przenoszenia MIDletu z komputera na tele- fon komórkowy. Pierwsza polega na przesłaniu programu przy użyciu różnego rodzaju kabli (USB) bądź połączeń bezprzewodowych (IrDA) i wykorzystaniu oprogramowania dołączonego do telefonu. Takie roz- wiązanie posiada jedną niezaprzeczalną zaletę. Program można wgry- wać wiele razy bez ponoszenia kosztów pobierania z internetu. Nie- stety, opisanie wszystkich możliwych sytuacji przesyłania danych jest trudne, w związku z tym zajmować się będziemy jedynie publikowa- niem MIDletu w internecie. Do wykonania poniższego ćwiczenia niezbędny jest dostęp do serwera, który ma przypisane następujące typy MIME dla rozszerzeń: .jad — text/vnd.sun.j2me.app-descriptor .jar — application/java-archive Jeśli opisany poniżej proces zakończy się niepowodzeniem, poproś administratora o ustawienie tych typów MIME. Oczywiście, konto na serwerze musi mieć specjalny katalog (najczęściej o nazwie www lub htdocs), w którym umieszczone pliki są ogólnie dostępne i mogą być pobierane przez każdego. W poniższym ćwiczeniu przygotujemy MIDlet do wysłania na serwer. Ć W I C Z E N I E 2.4 Przygotowanie MIDletu do publikacji w internecie Zmień ustawienia projektu konieczne do jego prawidłowego działania. Utwórz archiwum JAR. 1. Uruchom środowisko Wireless Toolkit, a następnie otwórz projekt projekt1. 2. Kliknij przycisk Settings i przejdź na zakładkę Required.
  • 12. 24 J2ME. Java dla urządzeń mobilnych • Ćwiczenia 3. W polu MIDlet-Jar-URL wpisz adres internetowy URL do pliku z archiwum Javy (rozszerzenie .jar). W tym celu sprawdź, jaki jest adres internetowy do katalogu, w którym będziesz umieszczał MIDlet (np. http://www.serwer.org/katalog/), a następnie dopisz do tej ścieżki nazwę archiwum w postaci nazwa_projektu.jar (w naszym przypadku projekt1.jar). Można również wypełnić pole Vendor, wpisując w nie swoje imię i nazwisko. Jeśli będziesz chciał uruchomić MIDlet na normalnym telefonie, przejdź na zakładkę API Selection i z listy Target Platform wybierz opcję MIDP 1.0. Potwierdź zmiany, klikając OK. 4. Utwórz archiwum JAR, wybierając opcję Create Package z menu Project/Package. W wyniku powyższych operacji powstały dwa pliki gotowe do wysła- nia na serwer. Niestety, musimy utworzyć jeszcze jeden plik — stronę internetową zawierającą odnośnik do MIDletu, która jest wymagana przez niektóre modele telefonów, a także przez nasz emulator. Kod HTML strony znajduje się poniżej; należy zapisać go pod nazwą pro- jekt1.html i umieścić w podkatalogu /bin naszego projektu. <html> <head> <title>projekt1</title> </head> <body> <a href="http://www.serwer.com/katalog/projekt1.jad">projekt1.jad</a> </body> </html> Oczywiście, atrybut href odnośnika należy zmodyfikować zgodnie z adresem URL serwera. Możemy teraz przystąpić do kolejnego ćwiczenia, dzięki któremu bę- dziemy w stanie pobrać i uruchomić MIDlet. W tym celu wykonamy ćwiczenie 2.5. Ze względu na różnorodność programów do obsługi kont FTP i rodzajów serwerów będzie to raczej zestaw wskazówek przydat- nych przy wysyłaniu MIDletu na serwer.
  • 13. Rozdział 2. • Pierwszy MIDlet 25 Ć W I C Z E N I E 2.5 Wysyłanie programu na serwer Wyślij pliki MIDletu na serwer FTP. Musisz posiadać konto, które umożliwia publikowanie plików wszystkim internautom. 1. Uruchom program, przy pomocy którego zamierzasz wysłać pliki na serwer (np. Total Commander). 2. Połącz się z serwerem i przejdź do katalogu, w którym umieścisz MIDlet (zgodnie z określonymi wcześniej zasadami). 3. Wyślij na serwer pliki: projekt1.html, projekt1.jad, projekt1.jar. 4. Rozłącz się z serwerem. To już koniec pracy nad pierwszym MIDletem! Nie pozostało nam nic innego, jak wykonanie ćwiczenia 2.6, w którym pobierzemy naszą apli- kację przy użyciu programu OTA Provisioning. Ć W I C Z E N I E 2.6 Pobieranie MIDletu z internetu i uruchamianie w programie OTA Provisioning Pobierz MIDlet, korzystając z programu OTA Provisioning. Następnie uruchom go i przetestuj działanie. 1. Uruchom program OTA Provisioning, korzystając ze skrótu znajdującego się w Menu Start. 2. Wybierz opcję Apps, a następnie uruchom program Install Application. 3. W polu tekstowym podaj adres URL do pliku strony internetowej. Jeśli podasz adres do pliku JAD, emulator zwróci błąd. Wybierz opcję Menu i z listy — opcję Go. 4. Dalej postępuj tak, jak w ćwiczeniu 1.4 w krokach 9 – 11 (z uwzględnieniem nazwy MIDletu). Gratulacje! Jeśli wszystko zrealizowałeś zgodnie z wytycznymi, proces pobierania i instalowania MIDletu powinien zakończyć się powodze- niem, a efekt jego działania powinien być identyczny jak w przypadku
  • 14. 26 J2ME. Java dla urządzeń mobilnych • Ćwiczenia uruchamiania MIDletu przy użyciu WTK. Jeśli jednak występują błędy, upewnij się, że: q Adres URL do serwera we wszystkich miejscach jest wpisany prawidłowo, q Na serwerze znajdują się wszystkie pliki potrzebne do prawidłowego działania MIDletu, q Adres URL jest poprawny (w razie wątpliwości co do jego poprawności, poproś administratora serwera o pomoc). Trzeba pamiętać o tym, iż nie sztuką jest napisać MIDlet działający w środowisku WTK. Sztuką jest napisać MIDlet, który będzie działał na wszystkich (lub przynajmniej większości) telefonach, czyli urządze- niach docelowych. Najczęściej to właśnie z działaniem telefonów poja- wiają się największe problemy. My, programiści — użytkownicy J2ME, rzadko mamy wpływ na sposób implementacji J2ME w poszczególnych modelach telefonów. W związku z tym, jeśli na niektórych (zwłaszcza starszych) telefonach MIDlet nie działa (a teoretycznie powinien), nie zawsze winy należy doszukiwać się po stronie programu. Czasem wy- nika ona z zainstalowanych w telefonach wersjach Javy.