background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

Programowanie dla technologii bezprzewodowych 

Laboratorium 1 

Cele:  

 

Zapoznanie się z architekturą aplikacji dla systemu Android 

 

Przygotowanie środowiska programistycznego  

 

Uruchomienie przygotowanych aplikacji 

 

Tworzenie prostych aplikacji  

Zadania 

Materiały do zadao znajdują się na dysku wspólnym w katalogu PCudek\ Programowanie dla technologii 
bezprzewodowych\Lab 1

Obraz wirtualnego systemu operacyjnego Win XP na którym należy wykonad zadania znajduje się w katalogu 
PCudek\ Programowanie dla technologii bezprzewodowych\ Win_XP_Android 

1.  Skopiuj i uruchom wirtualną maszynę. Obraz  został przygotowany zgodnie z instrukcją dostępną na  

http://developer.android.com/sdk/installing.html

  

Po uruchomieniu zmieo nazwę komputera w sieci na wNUMER_INDEKSU  (Start->Mój komputer-
>Właściwości ->Nazwa komputera->Zmieo) 

2.  Uruchom program Eclipse wpisując w adresie obszaru roboczego (workspace)  D:\@projekty\lab1 . 

Sprawdź czy środowisko programistyczne jest przygotowane do uruchomienia projektu wykonując 
następujące czynności: 

a)  Window ->Preferences->Android->SDK Location:  C:\PROGRA~1\Android\android-sdk 

UWAGA!!! Pamiętaj aby nazwę „Program Files” zamienid na PROGRA~1 lub w przypadku ” 
Program Files (86)” na PROGRA~2 

b)  Window ->Android SDK and AVD Manager:  sprawdź czy na liście wirtualnych urządzeo znajduje 

się urządzenie, które zamierzasz wykorzystad w projekcie 

3.  Wykorzystując AVD Manager utwórz wirtualną maszynę systemu Android 2.1  

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

4.  Wybierając  File->New->Other utwórz nowy „Android project” z następującymi ustawieniami: 

 

5.  Przygotuj konfigurację uruchomienia aplikcji  Run->Run Configurations … (dodaj nową konfigurację 

Android Application o nazwie „Hellowrod Run”) 
W zakładkach: android - wskaż projekt helloword, target – zaznacz wirtuaną maszynę, common – w 
obszarze „display in favorites menu” zaznacz opcję Run i potwierdź wybór przyciskiem Apply. 

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

6.  Uruchom  aplikację helloword za pomocą: 

 

Zamknij aplikację. 

7.  Utwórz nowy projekt Android o  nazwie Quiz. W polu „Package name” wpisz pl.wsiz.quiz. 

8.  Zanim zaczniesz pisad program zapoznaj się z działem Teoria 

9.  Przygotuj konfigurację uruchomieniową o nazwie Quiz zgodnie z punktem 5 wskazując w zakładce 

android projekt Quiz. 

10. Ustawienie pierwszego acitvity – otwórz plik /res/layout/main.xml. 

Do ułożenia elementów na ekranie będziemy używad prostego układu o nazwie LinearLayout w tym celu 
wyczyśd zawartośd pliku main.xml i wklej poniższy kod: 

<?

xml

 

version

=

"1.0"

 

encoding

=

"utf-8"

?>

 

<

LinearLayout

 

xmlns:android

=

"http://schemas.android.com/apk/res/android"

 

    

android:orientation

=

"vertical"

 

    

android:layout_width

=

"fill_parent"

 

    

android:layout_height

=

"fill_parent"

 

    

>

 

</

LinearLayout

Właśnie usunęliśmy przykład HelloWord i pozostawiając jedynie layout. 

11. Wewnątrz LinearLayout stwórz element TextView dodając mu atrybuty 

 

android:id

=

"@+id/question" 

android:text

=

"Proszę czekać.." 

android:layout_width

=

"fill_parent" 

android:layout_height

=

"wrap_content"

 

12. Poniżej element TextView dodaj element LinearLayout dodając mu atrybuty: 

android:id

=

"@+id/answers" 

android:orientation

=

"vertical" 

android:layout_width

=

"fill_parent" 

android:layout_height

=

"wrap_content"

 

13. 

Wewnątrz element z punktu 12 dodaj trzy przyciski, które będą wariantami naszych odpowiedzi 

<

Button

 

android:id

=

"@+id/tak"

 

 

 

 

android:text

=

"Tak!"

 

 

 

 

android:layout_width

=

"fill_parent"

 

 

 

 

android:layout_height

=

"wrap_content"

 

/>

 

 

<

Button

 

android:id

=

"@+id/nie"

 

 

 

 

android:text

=

"Nie!"

 

 

 

 

android:layout_width

=

"fill_parent"

 

 

 

 

android:layout_height

=

"wrap_content"

 

/>

 

 

<

Button

 

android:id

=

"@+id/moze"

 

 

 

 

android:text

=

"Być może"

 

 

 

 

android:layout_width

=

"fill_parent"

 

 

 

android:layout_height

=

"wrap_content"

 

/> 

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

14. 

Dodamy teraz jeszcze dwa przyciski. Jeden pozwoli nam pominąd aktualne pytanie a drugi będzie 

prowadził do listy posiłków, które przygotowaliśmy. Przyciski należy umieścid poniżej elementu  
LinearLayout o Id=”answers” 

<

Button

 

android:id

=

"@+id/skip"

 

 

 

android:text

=

"Pomiń pytanie"

 

 

 

android:layout_marginTop

=

"12sp"

 

 

 

android:layout_width

=

"fill_parent"

 

 

 

android:layout_height

=

"wrap_content"

/>

 

 

<

Button

 

android:id

=

"@+id/view"

 

 

 

android:text

=

"Gotowe posiłki!"

 

 

 

android:layout_marginTop

=

"12sp"

 

 

 

android:layout_width

=

"fill_parent"

 

 

 

android:layout_height

=

"wrap_content"

/> 

15. Korzystając z widoku Graphical Layout zmieo atrybuty wyglądu elemenu o id=”question”  (prawy 

przycisk na elemencie->properties”: 
- wycentruj tekst 
- pogrub czcionkę 
- zmieo rozmiar czcionki na 24sp 
- dodaj dolny margines o wartości 12sp 
Zmiany te możesz też wprowadzid ręcznie w widoku xml dopisując odpowiednie atrybuty dlo znacznika  
np. 

android:gravity

=

"center" 

(oznacza wyśrodkowanie tekstu). 

16. W przycisku o id=”view” umieśd atrybuty : 

- rozmiar czcionki 18sp 
- kolor tekstu #9d1111 
- pogrubienie 
- cieo tekstu: x=0, y=-3, radius=1.5, kolor #ffffff 

Teoria 

Struktura projektu 

 

 src – zawiera Activity i kod programu w pakietach, tak jak w przypadku innych aplikacji Java.  

 

gen – zawiera pliki Java wygenerowane przez ADT, w tym klasę R. Nie zaleca się modyfikacji w tym 

plikach.  

 

Android 2.1 – a wewnątrz android.jar, który jest frameworkiem dla naszej aplikacji.  

 

assets – przechowuje pliki nie zaliczające się do zasobów (res). W większości aplikacji pusty  

 

Res – katalog, w którym będziemy przechowywad wszelkie zasoby, tj. zdjęcia, napisy, pliki multimedialne 

itp.  

 

AndroidManifest.xml – plik manifestu. (Jest to zbiór informacji o aplikacji, wskazuje m.in. wersję, 

zależności, wymagania, sdk, activity itp.)  

 

default.properties – zawiera konfigurację projektu.  

Komponenty 

Acivities  

Każdy ekran  to oddzielna klasa rozszerzająca klasę Activity, czyli jest to wizualny interfejs użytkownika.  

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

Widok może przyjmowad wiele postaci. (widok pełnoekranowy, pop-up o dowolnym rozmiarze itd.). 
Aplikacja może zawierad wiele widoków. Aplikacje nie mają jednego punktu startu (nie ma metody main()). 
Activities są komponentami. 

Services  

Nie posiadają interfejsu użytkownika, działają w tle. Rozszerzają klasę Service.  
Przykład:  odtwarzanie plików muzycznych działa w tle podczas, gdy my korzystamy w wysyłamy SMS-a.  

Broadcast recivers  

Aplikacja nasłuchuje sygnałów i reaguje w momencie ich otrzymania. Rozszerzają klasę BroadcastReceiver. 
Przykład:  informacja o niskim stanie baterii.  

Content providers  

Udostępniają dane innym programom. Działają na zasadzie kontrolera we wzorcu MVC. Rozszerzają klasę 
ContentProvider . 
 
 
Intencje 
Intencją będziemy nazywad akcję    oraz powiązane z nią dane 
Wywołania aplikacji z poziomu innej  
aplikacji. 
• Wywołania wewnętrznych lub  
zewnętrznych składników aplikacji. 
• Można generowad zdarzenia na które inne  
aplikacje mogą odpowiadad 

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

Cykl życia activity 

 

 

Nazwa  

Opis  

onCreate  

Wywoływana gdy Activity jest tworzona. Tu ustawiamy 
interfejs, pobieramy dane do list itp..  
Przyjmuje parametr Bundle z zapisanym poprzednim stanem 
widoku, jeżeli taki istnieje.  

onStart  

Wywoływana jeszcze przed ukazaniem się widoku 
użytkownikowi  

onRestart  

Jeżeli widok jest wznawiany po zatrzymaniu.  

onResume  

Wywoływana chwilę przed rozpoczęcie interakcji z 
użytkownikiem. Wywoływana jest zawsze po metodzie on 
Pause.  

background image

Programowanie dla technologii bezprzewodowych 

mgr Paweł Cudek 

onPause  

Metoda wykonywana jest jeżeli widok jest zatrzymywany, np. 
na rzecz innego widoku. Nie jest jeszcze, dokonuje ważnych 
operacji np. zapisania danych, zatrzymania animacji itp..  

onStop  

Widok nie jest już widoczny dla użytkownika. Działa w tle lub za 
chwilę zostanie zniszczony. Jeżeli działa w tle po metodzie 
nastąpi onCreate() lub onDestroy()  

onDestroy  

Ostateczne działania przed zamknięciem activity.