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 »
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
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
12
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
xyz @bartez® : Uważasz, że Apple nie ogranicza programistów? buahahaha
anga star za droga ludzie wy myślicie!?Jestem 4 klasistką rodzice się nigdy nie...
Jan Zwyczajnych filmów tak kręcić się nie da co najwyżej krótkie scenki jak w...
piotrek____ @asdfgh - yup, też tak sądzę.
Tak jak wtedy ten przeciek o żołnierzu...
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- 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)
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
#16 lukaszposadowski 2012-03-11 12:48:43 0
IP: 178.235.217.[...] Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20120224 Firefox/10.0.1
#17 ravalent 2012-04-09 01:10:08 0
IP: 89.25.224.[...] Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0