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
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.
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"
/>
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.
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
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.
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.