Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
Choć od ogłoszenia platformy Android minęły już dwa lata, dopiero od niedawna obecne są na rynku telefony obsługujące to mobilne dziecko giganta z Mountain View. Zainteresowanie Androidem rośnie jednak szybko, czego najlepszym dowodem są zapowiedzi ze strony różnych wiodących producentów elektroniki wydania kolejnych produktów wspierających tę platformę. Czy Android odniesie sukces na miarę swojego patrona, czas pokaże. Już teraz warto się jednak przyjrzeć najważniejszych cechom tej platformy i spróbować swoich sił w programowaniu. Zapraszamy więc na krótki, praktyczny kurs pisania aplikacji dla systemu Android.
Spis treści |
|---|
| Czym jest Android? Zarys architektury aplikacji Instalacja i przygotowanie środowiska roboczego z wykorzystaniem Eclipse IDE Tworzymy przykładową aplikację Podsumowanie |
Czym jest Android?
Android to platforma programowa przeznaczona dla urządzeń mobilnych, w której skład wchodzi system operacyjny, warstwa oprogramowania pośredniczącego (middleware) i kluczowe aplikacje. Software Development Kit w wydaniu Androida dostarcza narzędzia i interfejs (API) umożliwiający tworzenie aplikacji z użyciem języka Java.
Główne elementy, które cechują opisywaną platformę to komponenty aplikacji – używane wielokrotnie i w różnych konfiguracjach. Należą do nich: maszyna wirtualna Dalvik, zaprojektowana i specjalnie zoptymalizowana dla urządzeń mobilnych (niekompatybilna z JVM), wbudowana przeglądarka bazująca na WebKit, biblioteki umożliwiające wykorzystanie grafiki 2D (własna biblioteka platformy) oraz 3D w oparciu o OpenGL ES 1.0, a także baza danych SQLite. Ponadto Android udostępnia projektantowi różne formaty multimediów (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF), otwiera dostęp do technologii komunikacyjnych takich jak GSM, Bluetooth, EDGE, 3G i WiFi, oraz ułatwia wykorzystanie aparatu fotograficznego, kamery, kompasu, ekranu dotykowego, GPS i akcelerometru. Uzupełnieniem tego zestawu, kluczowym z naszego punktu widzenia, jest środowisko programistyczne zawierające emulator, debugger, profiler wydajności pamięci oraz plugin do IDE Eclipse (ADT – Android Development Tools).
Tak szeroki asortyment komponentów oraz nieskrępowany dostęp do nich stwarzają ogromne możliwości w zakresie tworzenia innowacyjnych programów dla urządzeń mobilnych. Przyjrzyjmy się zatem w ogólnym zarysie szkieletowi aplikacji.
Zarys architektury aplikacji
Jak już wspomnieliśmy wyżej, deweloperzy programów dla Androida mają pełny dostęp do API używanego przez rdzenne aplikacje systemu. Architektura sprzyja również ponownemu użyciu komponentów – dowolna aplikacja może korzystać z już zaimplementowanych w innych programach funkcjonalności, takich chociażby jak lista rozwijana.
Wszystkie programy po skompilowaniu, wraz z dodatkowymi zasobami, są umieszczane przez narzędzie apt w pakiecie Androida o rozszerzeniu APK. Jeden plik APK jest traktowany jako jedna aplikacja, uruchamiana w osobnym procesie i wykorzystująca swoją własną wirtualną maszynę Java. Dopuszczalne jest również współdzielenie maszyn wirtualnych przez różne programy.
W celu użycia poszczególnych komponentów aplikacji system musi mieć możliwość wystartowania każdego z nich i powołania dla niego odpowiednich obiektów Java. Dlatego aplikacje na Androida nie posiadają pojedynczego punktu wejścia (np. brak funkcji main), ale pewne elementy, które system może uruchamiać w zależności od potrzeb. Elementy te możemy ująć w cztery grupy: aktywności, usługi, odbiorcy transmisji i dostawcy treści.
Aktywność (activity) prezentuje element interfejsu użytkownika w postaci pojedynczego okna zawierającego kontrolki aplikacji. W ramach jednej aktywności można także zastosować dodatkowe okna wyskakujące. Przykładową aktywnością może być lista kontaktów czy też okno do wpisywania wiadomości SMS. Zaprojektowana aplikacja może oczywiście zawierać cały zbiór aktywności
Usługi (services) uruchamiane są w tle, najczęściej na nieokreślony z góry okres czasu. Przykładem może być tutaj odtwarzacz muzyczny, który działa także wtedy, gdy użytkownik pisze wiadomość tekstową lub surfuje po Sieci.
Odbiorcy transmisji (broadcast receivers), jak sama nazwa wskazuje, to komponenty odpowiedzialne za odbiór i reagowanie na komunikaty. Wiele z nich jest już wbudowanych w kod Androida (powiadamianie o niskim stanie baterii czy o zmianie strefy czasowej), ale aplikacje użytkownika również mogą inicjować swoje własne transmisje komunikatów żeby powiadomić inne programy o otrzymanych, gotowych do użycia danych.
Dostawcy danych (content providers) zapewniają dostęp do swoich zasobów innym aplikacjom. Dane mogą być przechowywane w bazie danych SQLite lub w jakiejkolwiek innej, sensownej postaci. Komponenty te posiadają zaimplementowany cały zbiór metod pozwalających aplikacjom na pozyskiwanie i zapisywanie odpowiednich informacji. Należy jednak pamiętać, że metody nie są wywoływane bezpośrednio przez aplikacje, lecz za pomocą obiektu ContentResolver, który pośredniczy w komunikacji między programami i dostawcami danych.
Aktywności, usługi i odbiorcy transmisji, w przeciwieństwie do dostawców danych, aktywowane są za pomocą asynchronicznych komunikatów zwanych intencjami (intents). Intencja jest to obiekt, który przechowuje treść wiadomości. W wypadku usług i aktywności zawiera ona nazwę czynności do podjęcia i URI do odpowiednich zasobów, natomiast w wypadku odbiorców transmisji tylko nazwę czynności.
Głównym elementem, który pozwala Androidowi uruchomić aplikację, jest plik manifestu w postaci dokumentu XML o nazwie AndroidManifest.xml. Zawiera on przede wszystkim deklaracje wszystkich potrzebnych komponentów, a także nazwy niezbędnych bibliotek czy też definicje uprawnień.
W zakresie interfejsu użytkownika mamy do dyspozycji całą paletę widoków, które możemy grupować i zagnieżdżać na różne sposoby, a także rozszerzalnych layoutów i widżetów – zarówno tych prostych (przycisk czy pole tekstowe), jak i bardziej skomplikowanych (wybór daty lub zegar). Nic nie stoi na przeszkodzie, by pisać własne widżety, jednakże ich predefiniowany zestaw pozwala znacząco przyspieszyć proces implementacji.
Powyżej przedstawiliśmy jedynie ogólne informacje dotyczące architektury i funkcjonowania aplikacji. Wyczerpującą wiedzę na ten temat można uzyskać, korzystając z materiałów źródłowych projektu. Lekturę najlepiej zacząć od strony http://developer.android.com/guide/basics/what-is-android.html gdzie został przedstawiony odpowiedni diagram wraz ze szczegółowym opisem poszczególnych warstw systemu. Swoją wiedzę można również uzupełnić, zapoznając się z treścią bloga dla developerów lub korzystając ze wsparcia społeczności skupionej wokół Androida, która jest już dość liczna. Tymczasem przejdźmy jednak do opisu instalacji i przygotowania środowiska developerskiego dla naszej przykładowej aplikacji.
«poprzednia 1 2 3 4 ... 7 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Firefox 10 już jest. Wiele atrakcji dla programistów, użytkownicy raczej nic nie zauważą
9
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
26
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
13
Nowa polityka prywatności Google'a już za miesiąc wejdzie w życie. Mamy się czego bać?
16
PHP 5.3.9 nie pozwoli hakerom zawiesić serwera. Pozwoli za to przejąć nad nim kontrolę
28
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Rząd Tuska zablokował dostęp do tańszych leków z internetowych aptek
61
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Społeczność
WebDev Z tego wynika, że zmienią się tylko serwery z którymi przeglądarka łączy...
agilob Ale folder bez nazwy się da założyć :P
zetesha Apple nie zrezygnował z PPC całkiem ponieważ posiada P.A. Semi, która to...
pablo1919191 Thunderbolt to jest technolgia intela wiec skora appel wpakowal jako...
BartekBb Już wiem skąd kopiujecie artykuły, bo zrobiliście ten sam błąd co na...
Marr moglibyście się zdecydować. W newsach podajecie, że systemy wymiany (czyli...
setXYZ I jeszcze warto poczytać co o tym myśli sam MS http://webhosting.pl/Koniec...
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 d-d 2009-11-09 14:11:11 0
IP: 86.70.219.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0
#2 dAREuS® 2009-11-09 14:30:48 0
IP: 83.31.127.[...] Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.01
#3 d-d 2009-11-09 14:32:40 0
IP: 86.70.219.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0
#4 Java is too heavy (weight) 2009-11-09 20:03:55 0
IP: 193.238.94.[...] Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
#5 yahuto 2009-11-18 12:46:43 0
IP: 91.90.61.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
#6 Petrol 2010-10-31 16:43:09 0
IP: 83.31.215.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7
#7 Gal 2011-03-12 11:58:24 0
IP: 78.31.154.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16
#8 LAMAS 2011-05-03 17:59:47 0
IP: 79.175.204.[...] Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.8.131 Version/11.10
#9 Burger 2011-08-19 13:03:11 0
IP: 83.9.3.[...] Midori/0.3 (X11; Linux; U; pl-pl) WebKit/534.21+
#10 Burger 2011-08-19 13:05:12 0
IP: 83.9.3.[...] Midori/0.3 (X11; Linux; U; pl-pl) WebKit/534.21+
#11 Michał 123a 2011-08-23 18:51:38 0
IP: 85.219.183.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1
#12 konrad16 2011-09-08 12:15:09 0
IP: 85.28.180.[...] Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Sabayon Chrome/14.0.835.94 Safari/535.1
#13 totum 2011-10-10 04:36:09 0
IP: 89.76.247.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
#14 ~fourup 2011-11-30 23:52:24 0
IP: 195.189.90.[...] Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.9.168 Version/11.52
#15 Whata?! 2011-12-03 00:05:15 0
IP: 79.191.25.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1