Top Banner
49

Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Aug 20, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i
Page 2: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Idź do

• Spis treści• Przykładowy rozdział• Skorowidz

• Katalog online

• Dodaj do koszyka

• Zamów cennik

• Zamów informacjeo nowościach

• Fragmenty książekonline

Helion SAul. Kościuszki 1c44-100 Gliwicetel. 32 230 98 63e-mail: [email protected]© Helion 1991–2011

Katalog książek

Twój koszyk

Cennik i informacje

Czytelnia

Kontakt

• Zamów drukowanykatalog

Android w akcji.Wydanie IIAutorzy: W. Frank Ableson, Robi Sen, Chris King

Tłumaczenie: Paweł Gonera

ISBN: 978-83-246-3380-7

Tytuł oryginału: Android in Action

Format: 168×237, stron: 624

Rozbudowany podręcznik tworzenia niesamowitych aplikacji dla systemu Android!• Android SDK i programowanie aplikacji WWW

• Komunikacja Bluetooth i przetwarzanie danych z czujników

• Grafika, animacja i multimedia w Androidzie

• Techniki pisania natywnych aplikacji w języku C

Skoro zwróciłeś uwagę właśnie na tę książkę, zapewne dobrze wiesz, czym jest Android i co potrafi

– teraz przyszła pora, abyś sprawdził go także w akcji! Oto doskonała książka dla wszystkich

programistów, którym marzy się tworzenie własnych aplikacji dla robiącego oszałamiającą karierę

systemu. Choć ta książka nie jest przeznaczona dla początkujących, zawiera wszystkie informacje

potrzebne osobom, dla których Android jest całkowicie nowym środowiskiem. Można w niej

znaleźć instrukcje niezbędne do szybkiego zorientowania się w architekturze tej platformy oraz

sposobie jej działania, co pozwoli sprawnie rozpocząć pracę w tym środowisku. Pozostałe rozdziały

to już czysta frajda programowania!

Od czego zaczniesz zabawę z Androidem? Dowiesz się, jak budować aplikacje dla tego systemu

od najmniejszych cegiełek aż po ekrany, dodawać funkcje telefoniczne i wykorzystywać bibliotekę

OpenGL ES do tworzenia złożonej grafiki 2D oraz 3D. Następnie poznasz zasady tworzenia

większych aplikacji oraz techniki pisania aplikacji w języku C, także z użyciem Android Native

Development Kit. Opanujesz potężne narzędzie Android SDK oraz budowanie aplikacji dla WebKit

z użyciem HTML 5, a nawet nauczysz się rozszerzać lub zastępować wbudowane funkcje Androida

na podstawie użytecznych i intrygujących przykładów.

• Wprowadzenie do systemu Android

• Środowisko programowania

• Komponenty interfejsu użytkownika, w tym View i Layout

• Metody przechowywania i odczytywania lokalnych danych

• Sieci oraz usługi sieciowe, Bluetooth, sensory i widżety aplikacji

• Przegląd podstawowych zagadnień związanych z telefonią

• Powiadomienia i alarmy

• Grafika i animacja w Androidzie

• Korzystanie z funkcji multimedialnych Androida

• Usługi oparte na lokalizacji

• Integracja kontaktów z platformy społecznościowej

• Aplikacja wspomagająca serwisantów

• Budowanie aplikacji Android w języku C

• Tworzenie stron WWW dla systemu Android

• Strategie lokalizowania aplikacji

• Android Native Development Kit oraz korzystanie z SDK oraz AVD Manager

Wkrocz wreszcie do akcji i zacznij tworzyć własne aplikacje dla Androida!

Page 3: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Spis tre�ci

Wprowadzenie 13

Wprowadzenie do pierwszego wydania 15

Podzi�kowania 17

O ksi��ce 19

O ilustracji na ok�adce 25

Cz��� I. Czym jest Android? Zarys ogólny 271. Wprowadzenie do systemu Android 29

1.1. Platforma Android ....................................................................................................................... 301.2. Omówienie rynku Androida ........................................................................................................ 32

1.2.1. Operatorzy telefonii komórkowej ....................................................................................... 321.2.2. Android kontra zaawansowane telefony ............................................................................. 321.2.3. Android kontra smartfony ................................................................................................... 341.2.4. Android kontra Android ...................................................................................................... 351.2.5. Licencjonowanie Androida ................................................................................................. 35

1.3. Warstwy systemu Android .......................................................................................................... 361.3.1. Budowanie na bazie j�dra Linux ........................................................................................ 381.3.2. Praca w maszynie wirtualnej Dalvik .................................................................................. 39

1.4. Intencje w programowaniu dla Androida ................................................................................. 391.4.1. Wykorzystywanie intuicyjnego interfejsu u�ytkownika .................................................... 401.4.2. Sposób dzia�ania intencji ..................................................................................................... 40

Page 4: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

4 Spis tre�ci

1.5. Cztery rodzaje komponentów Androida .................................................................................... 431.5.1. Klasa Activity ....................................................................................................................... 441.5.2. Klasa Service ........................................................................................................................ 451.5.3. Klasa BroadcastReceiver ..................................................................................................... 461.5.4. Klasa ContentProvider ........................................................................................................ 49

1.6. Budowa pliku AndroidManifest.xml .......................................................................................... 501.7. Odwzorowanie aplikacji na procesy .......................................................................................... 521.8. Tworzenie aplikacji dla systemu Android ................................................................................. 531.9. Podsumowanie .............................................................................................................................. 57

2. �rodowisko programowania dla systemu Android 592.1. Wprowadzenie do Android SDK ................................................................................................ 60

2.1.1. Podstawowe pakiety systemu Android ............................................................................... 612.1.2. Pakiety opcjonalne ............................................................................................................... 62

2.2. Przegl�d �rodowiska programowania ........................................................................................ 622.2.1. Perspektywa Java ................................................................................................................. 642.2.2. Perspektywa DDMS ........................................................................................................... 652.2.3. Narz�dzia wiersza polece� .................................................................................................. 68

2.3. Budowanie aplikacji dla systemu Android w Eclipse .............................................................. 712.3.1. Kreator projektu aplikacji Android ..................................................................................... 722.3.2. Kod �ród�owy przyk�adowej aplikacji Android .................................................................. 722.3.3. Pakowanie aplikacji ............................................................................................................. 79

2.4. U�ycie emulatora systemu Android ........................................................................................... 802.4.1. Konfiguracja �rodowiska emulowanego ............................................................................. 812.4.2. Testowanie aplikacji w emulatorze ..................................................................................... 85

2.5. Debugowanie aplikacji ................................................................................................................ 862.6. Podsumowanie .............................................................................................................................. 88

Cz��� II. wiczenia z Android SDK 893. Interfejs u�ytkownika 91

3.1. Tworzenie aktywno�ci ................................................................................................................. 933.1.1. Tworzenie klasy Activity ..................................................................................................... 943.1.2. Przedstawiamy cykl �ycia aktywno�ci ................................................................................ 99

3.2. Praca z widokami ....................................................................................................................... 1033.2.1. Przegl�d wspólnych widoków ........................................................................................... 1033.2.2. Korzystanie z ListView ...................................................................................................... 1053.2.3. Wielow�tkowo� z u�yciem klas Handler i Message ...................................................... 1093.2.4. Tworzenie w�asnych widoków .......................................................................................... 1113.2.5. Przedstawiamy uk�ady ....................................................................................................... 1133.2.6. Obs�uga fokusu .................................................................................................................. 1153.2.7. Przechwytywanie zdarze� ................................................................................................. 116

3.3. U�ycie zasobów ........................................................................................................................... 1173.3.1. Obs�ugiwane typy zasobów ............................................................................................... 1173.3.2. Odwo�ywanie si� do zasobów w kodzie Java ................................................................... 1183.3.3. Definiowanie widoków i uk�adów w zasobach XML ...................................................... 1203.3.4. Warto�ci zewn�trzne ......................................................................................................... 1223.3.5. Tworzenie animacji ........................................................................................................... 125

3.4. Przedstawiamy plik AndroidManifest.xml .............................................................................. 1263.5. Podsumowanie ............................................................................................................................ 128

Page 5: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Spis tre�ci 5

4. Intencje i us�ugi 1294.1. Obs�uga aplikacji Wyszukiwarka restauracji z u�yciem intencji ......................................... 130

4.1.1. Definiowanie intencji ........................................................................................................ 1314.1.2. Wywo�ania jawne i niejawne ............................................................................................ 1314.1.3. Dodawanie ��czy zewn�trznych do aplikacji Wyszukiwarka restauracji ....................... 1324.1.4. Wyszukiwanie celu dla intencji ........................................................................................ 1354.1.5. Wykorzystanie aktywno�ci dost�pnych w Androidzie .................................................... 137

4.2. Sprawdzanie pogody z u�yciem w�asnych URI ...................................................................... 1384.2.1. Oferowanie w�asnych URI ................................................................................................ 1384.2.2. U�ycie niestandardowego URI ......................................................................................... 140

4.3. Sprawdzanie pogody za pomoc� obiektu BroadcastReceiver ............................................... 1424.3.1. Rozg�aszanie intencji ......................................................................................................... 1424.3.2. Tworzenie odbiornika ....................................................................................................... 143

4.4. Budowanie us�ugi prognozy pogody ........................................................................................ 1444.5. Komunikacja WeatherAlertService z innymi aplikacjami .................................................... 148

4.5.1. J�zyk definicji interfejsu ................................................................................................... 1484.5.2. Binder oraz Parcelable ...................................................................................................... 1504.5.3. Udost�pnianie zdalnego interfejsu ................................................................................... 1514.5.4. �czenie z us�ug� .............................................................................................................. 1524.5.5. Uruchamianie i do��czanie us�ugi .................................................................................... 1554.5.6. Cykl �ycia us�ugi ................................................................................................................ 156

4.6. Podsumowanie ............................................................................................................................ 157

5. Zapisywanie i odczytywanie danych 1595.1. U�ycie w�a�ciwo�ci ..................................................................................................................... 160

5.1.1. Wykorzystanie obiektu SharedPreferences ..................................................................... 1605.1.2. Uprawnienia dost�pu do w�a�ciwo�ci .............................................................................. 163

5.2. U�ycie systemu plików ............................................................................................................... 1665.2.1. Tworzenie plików .............................................................................................................. 1665.2.2. Odczyt z plików ................................................................................................................. 1675.2.3. Pliki jako surowe zasoby ................................................................................................... 1685.2.4. Zasoby plików XML .......................................................................................................... 1695.2.5. Zapis na karcie SD ............................................................................................................. 171

5.3. Zapisywanie danych w bazie danych ....................................................................................... 1745.3.1. Budowanie i wykorzystanie bazy danych ......................................................................... 1755.3.2. Wykorzystanie programu sqlite3 ...................................................................................... 179

5.4. U�ycie klas ContentProvider .................................................................................................... 1805.4.1. U�ycie istniej�cej klasy ContentProvider ........................................................................ 1815.4.2. Tworzenie dostawcy tre�ci ................................................................................................ 182

5.5. Podsumowanie ............................................................................................................................ 188

6. Sieci oraz us�ugi sieciowe 1896.1. Przegl�d zagadnie sieciowych ................................................................................................ 191

6.1.1. Podstawy sieci .................................................................................................................... 1916.1.2. Serwery i klienty ................................................................................................................ 194

6.2. Sprawdzanie stanu sieci ............................................................................................................ 1956.3. Komunikacja poprzez gniazdo serwera ................................................................................... 1966.4. Wykorzystanie HTTP ................................................................................................................ 199

6.4.1. Proste ��dania HTTP i java.net ........................................................................................ 1996.4.2. Zaawansowana obs�uga HTTP za pomoc� HttpClient .................................................... 2016.4.3. Tworzenie klasy pomocniczej dla wywo�a� HTTP i HTTPS ......................................... 203

Page 6: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

6 Spis tre�ci

6.5. Us�ugi sieciowe ........................................................................................................................... 2096.5.1. POX — po��czenie HTTP i XML .................................................................................... 2096.5.2. REST .................................................................................................................................. 2116.5.3. SOAP czy nie SOAP — oto jest pytanie .......................................................................... 215

6.6. Podsumowanie ............................................................................................................................ 216

7. Telefonia 2177.1. Przegl�d podstawowych zagadnie zwi�zanych z telefoni� .................................................. 218

7.1.1. Poznajemy GSM ................................................................................................................ 2197.1.2. Poznajemy CDMA ............................................................................................................ 220

7.2. Dost�p do danych telefonii ....................................................................................................... 2217.2.1. Odczyt w�a�ciwo�ci telefonu ............................................................................................. 2227.2.2. Pozyskiwanie informacji o stanie telefonu ....................................................................... 224

7.3. Interakcja z telefonem ............................................................................................................... 2267.3.1. U�ycie intencji do nawi�zywania po��cze� ...................................................................... 2267.3.2. U�ycie narz�dzi zwi�zanych z numerami telefonicznymi ............................................... 2277.3.3. Przechwytywanie po��cze� wychodz�cych ...................................................................... 229

7.4. Obs�uga wiadomo�ci — SMS .................................................................................................... 2307.4.1. Wysy�anie wiadomo�ci SMS ............................................................................................. 2317.4.2. Odbieranie wiadomo�ci SMS ........................................................................................... 233

7.5. Podsumowanie ............................................................................................................................ 235

8. Powiadomienia i alarmy 2378.1. Korzystanie z Toast .................................................................................................................... 238

8.1.1. Tworzenie aplikacji SMS korzystaj�cej z klasy Toast ...................................................... 2388.1.2. Odbieranie wiadomo�ci SMS ........................................................................................... 239

8.2. Wprowadzenie do powiadomie .............................................................................................. 2428.2.1. Klasa Notification .............................................................................................................. 2438.2.2. Powiadamianie u�ytkownika o wiadomo�ci SMS ............................................................ 244

8.3. Wprowadzenie do alarmów ...................................................................................................... 2478.3.1. Przyk�ad u�ycia alarmu ..................................................................................................... 2488.3.2. U�ycie powiadomie� z alarmami ...................................................................................... 252

8.4. Podsumowanie ............................................................................................................................ 253

9. Grafika i animacja 2559.1. Rysowanie grafiki w systemie Android .................................................................................... 256

9.1.1. Rysowanie przy u�yciu XML ............................................................................................ 2579.1.2. Przegl�d figur rysowanych za pomoc� XML ................................................................... 259

9.2. Tworzenie animacji za pomoc� API graficznego .................................................................... 2619.2.1. Animacja poklatkowa w Androidzie ................................................................................. 2619.2.2. Programowe tworzenie animacji ...................................................................................... 263

9.3. Wprowadzenie do OpenGL dla systemów wbudowanych .................................................... 2679.3.1. Tworzenie kontekstu OpenGL ......................................................................................... 2689.3.2. Rysowanie prostok�ta za pomoc� OpenGL ES ............................................................... 2729.3.3. Tworzenie trójwymiarowych kszta�tów i powierzchni za pomoc� OpenGL ES ........... 275

9.4. Podsumowanie ............................................................................................................................ 279

10. Multimedia 28110.1. Wprowadzenie do multimediów oraz OpenCORE ................................................................ 28210.2. Odtwarzanie d�wi�ków ............................................................................................................. 28310.3. Odtwarzanie wideo .................................................................................................................... 285

Page 7: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Spis tre�ci 7

10.4. Przechwytywanie mediów ......................................................................................................... 28710.4.1. Obs�uga kamery ............................................................................................................... 28710.4.2. Zapisywanie d�wi�ku ...................................................................................................... 292

10.5. Zapisywanie wideo ..................................................................................................................... 29510.6. Podsumowanie ............................................................................................................................ 301

11. Lokalizacja 30311.1. Symulowanie po�o�enia w emulatorze ..................................................................................... 305

11.1.1. Wysy�anie wspó�rz�dnych z perspektywy DDMS ........................................................ 30511.1.2. Format GPS Exchange .................................................................................................... 30711.1.3. Keyhole Markup Language z Google Earth .................................................................. 309

11.2. U�ycie klas LocationManager i LocationProvider ................................................................. 31111.2.1. Dost�p do danych lokalizacji za pomoc� LocationManager ......................................... 31211.2.2. U�ycie klasy LocationProvider ....................................................................................... 31411.2.3. Odbieranie informacji o lokalizacji za pomoc� klasy LocationListener ....................... 315

11.3. Korzystanie z map ...................................................................................................................... 31811.3.1. Dziedziczenie po MapActivity ....................................................................................... 31811.3.2. U�ycie MapView ............................................................................................................. 31911.3.3. Umieszczanie danych na mapie za pomoc� Overlay ..................................................... 322

11.4. Zamiana miejsc na adresy za pomoc� klasy Geocoder .......................................................... 32511.5. Podsumowanie ............................................................................................................................ 327

Cz��� III. Aplikacje dla systemu Android 32912. Aplikacja wspomagaj�ca serwisantów 331

12.1. Projektowanie rzeczywistej aplikacji Android ........................................................................ 33312.1.1. Podstawowe wymagania aplikacji ................................................................................... 33312.1.2. Zarz�dzanie danymi ......................................................................................................... 33412.1.3. Architektura aplikacji i integracji ................................................................................... 335

12.2. Okre�lanie przebiegów w aplikacji .......................................................................................... 33612.2.1. Okre�lanie procesów w aplikacji .................................................................................... 33712.2.2. Lista plików �ród�owych ................................................................................................. 33812.2.3. Plik AndroidManifest.xml aplikacji serwisanta mobilnego ........................................... 340

12.3. Kod �ród�owy aplikacji .............................................................................................................. 34112.3.1. Aktywno� Splash ............................................................................................................ 34112.3.2. W�a�ciwo�ci u�ywane przez aktywno� FieldService ................................................... 34312.3.3. Implementacja aktywno�ci FieldService ....................................................................... 34412.3.4. Ustawienia ........................................................................................................................ 34612.3.5. Zarz�dzanie danymi zlece� ............................................................................................. 348

12.4. Kod �ród�owy dla zarz�dzania zleceniami .............................................................................. 35512.4.1. Aktywno� RefreshJobs ................................................................................................... 35512.4.2. Zarz�dzanie zleceniami — aktywno� ManageJobs ...................................................... 35912.4.3. Obs�uga zlecenia w aktywno�ci ShowJob ...................................................................... 36212.4.4. Przechwytywanie podpisu w aktywno�ci CloseJob ....................................................... 366

12.5. Kod serwera ................................................................................................................................ 37212.5.1. Interfejs u�ytkownika dyspozytora ................................................................................. 37212.5.2. Baza danych ..................................................................................................................... 37312.5.3. Kod PHP aplikacji dyspozytora ...................................................................................... 37412.5.4. Kod PHP do integracji z aplikacj� mobiln� ................................................................... 375

12.6. Podsumowanie ............................................................................................................................ 376

Page 8: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

8 Spis tre�ci

13. Budowanie aplikacji Android w j�zyku C 37713.1. Budowanie aplikacji Android bez SDK ................................................................................... 378

13.1.1. Kompilator i linker j�zyka C ........................................................................................... 37913.1.2. Budowanie aplikacji Witaj, �wiecie ................................................................................ 38013.1.3. Instalowanie i uruchamianie aplikacji ............................................................................ 38113.1.4. Skrypt buduj�cy aplikacj� w j�zyku C ........................................................................... 383

13.2. Rozwi�zywanie problemu z ��czeniem dynamicznym ........................................................... 38413.2.1. Biblioteki systemu Android ............................................................................................ 38413.2.2. Budowanie aplikacji ��czonej dynamicznie ................................................................... 38613.2.3. exit() oraz return() ............................................................................................................ 38913.2.4. Kod uruchamiaj�cy .......................................................................................................... 390

13.3. Która godzina? Serwer DayTime ............................................................................................. 39213.3.1. Aplikacja serwera DayTime ............................................................................................ 39213.3.2. Plik daytime.c .................................................................................................................. 39313.3.3. Baza danych SQLite ........................................................................................................ 39513.3.4. Budowanie i uruchamianie serwera DayTime .............................................................. 397

13.4. Klient DayTime .......................................................................................................................... 39913.4.1. Aktywno� ........................................................................................................................ 39913.4.2. Klient DayTime ............................................................................................................... 40113.4.3. Testowanie klienta DayTime .......................................................................................... 402

13.5. Podsumowanie ............................................................................................................................ 402

Cz��� IV. Dojrzewaj�ca platforma 405

14. Bluetooth i sensory 40714.1. Przegl�d mo�liwo�ci Bluetooth w systemie Android .............................................................. 409

14.1.1. Zast�powanie kabli .......................................................................................................... 40914.1.2. Rola podstawowa i podrz�dna oraz gniazda .................................................................. 41014.1.3. Urz�dzenia zaufane ......................................................................................................... 41114.1.4. Pod��czanie si� do zdalnego urz�dzenia ........................................................................ 41314.1.5. Przechwytywanie zdarze� Bluetooth ............................................................................. 41414.1.6. Uprawnienia Bluetooth ................................................................................................... 416

14.2. Interakcja z obiektem SensorManager .................................................................................... 41614.2.1. Typy czujników ................................................................................................................ 41714.2.2. Odczyt warto�ci czujnika ................................................................................................ 41814.2.3. W��czanie i wy��czanie czujników ................................................................................. 419

14.3. Budowanie aplikacji SenseBot .................................................................................................. 42014.3.1. Interfejs u�ytkownika ...................................................................................................... 42014.3.2. Interpretowanie warto�ci czujnika ................................................................................. 42314.3.3. Jazda robotem .................................................................................................................. 42414.3.4. Komunikacja z robotem .................................................................................................. 425

14.4. Podsumowanie ............................................................................................................................ 426

15. Integracja 42915.1. Poznajemy model kontaktów Androida ................................................................................... 430

15.1.1. Wybór otwartych rekordów ............................................................................................ 43115.1.2. Obs�uga wielu kont .......................................................................................................... 43315.1.3. Unifikowanie widoku lokalnego z ró�nych zdalnych magazynów ................................ 43415.1.4. Wspólny plac zabaw ........................................................................................................ 436

15.2. Zaczynamy korzysta� z LinkedIn ............................................................................................. 436

Page 9: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Spis tre�ci 9

15.3. Zarz�dzanie kontaktami ............................................................................................................ 43815.3.1. Wykorzystanie wbudowanej aplikacji kontaktów .......................................................... 43815.3.2. ��danie wykonania operacji z naszej aplikacji ............................................................... 44115.3.3. Bezpo�redni odczyt i modyfikowanie bazy danych kontaktów ..................................... 44315.3.4. Dodawanie kontaktów ..................................................................................................... 444

15.4. ��czenie wszystkiego ................................................................................................................. 44615.4.1. Marzenia o synchronizacji .............................................................................................. 44615.4.2. Definiowanie kont ........................................................................................................... 44715.4.3. Us�uga AccountManager ................................................................................................. 449

15.5. Tworzenie konta LinkedIn ........................................................................................................ 45015.5.1. Brak obs�ugi urz�dze� mobilnych .................................................................................. 45015.5.2. Uwierzytelnianie w LinkedIn ......................................................................................... 450

15.6. Synchronizacja w tle z u�yciem SyncAdapter ......................................................................... 45815.6.1. Cykl �ycia synchronizacji ................................................................................................ 45815.6.2. Synchronizowanie danych LinkedIn .............................................................................. 458

15.7. Koczymy — LinkedIn w akcji ................................................................................................ 46115.7.1. Ko�czenie projektu LinkedIn ......................................................................................... 46115.7.2. Rozwi�zywanie problemów ............................................................................................ 46215.7.3. Kontynuacja ..................................................................................................................... 463

15.8. Podsumowanie ............................................................................................................................ 464

16. Tworzenie stron WWW dla systemu Android 46516.1. Czym jest programowanie WWW dla Androida .................................................................... 466

16.1.1. Wprowadzenie do WebKit ............................................................................................. 46716.1.2. Analiza opcji architektury ............................................................................................... 467

16.2. Optymalizacja aplikacji WWW dla Androida ........................................................................ 46816.2.1. Projektowanie z zachowaniem mobilno�ci stron ........................................................... 46916.2.2. Dodawanie znacznika viewport ...................................................................................... 47016.2.3. Selektywne �adowanie tre�ci ........................................................................................... 47216.2.4. Analiza parametru user agent ......................................................................................... 47316.2.5. Zapytanie media .............................................................................................................. 47416.2.6. Aplikacja tylko dla urz�dze� mobilnych ......................................................................... 476

16.3. Przechowywanie danych w przegl�darce ................................................................................ 47716.3.1. Konfiguracja ..................................................................................................................... 47716.3.2. Analiza kodu ..................................................................................................................... 47916.3.3. Interfejs u�ytkownika ...................................................................................................... 48016.3.4. Otwieranie bazy danych .................................................................................................. 48116.3.5. Analiza funkcji transaction() ............................................................................................ 48216.3.6. Wstawianie i usuwanie wierszy ...................................................................................... 48416.3.7. Testowanie aplikacji za pomoc� narz�dzi WebKit ........................................................ 485

16.4. Budowanie aplikacji hybrydowej ............................................................................................. 48616.4.1. Poznajemy kontrolk� przegl�darki ................................................................................. 48716.4.2. Konfigurowanie kontrolki ............................................................................................... 48716.4.3. Implementowanie obiektu obs�ugi JavaScript ............................................................... 48916.4.4. U�ycie kodu z JavaScript ................................................................................................ 49116.4.5. Spotkanie z JavaScript ..................................................................................................... 49216.4.6. Przede wszystkim bezpiecze�stwo ................................................................................. 49416.4.7. Implementacja WebViewClient ..................................................................................... 49616.4.8. Rozszerzanie przegl�darki .............................................................................................. 49616.4.9. Wykrywanie zdarze� nawigacyjnych ............................................................................. 49716.4.10. Implementacja klasy WebChromeClient ..................................................................... 500

16.5. Podsumowanie ............................................................................................................................ 501

Page 10: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

10 Spis tre�ci

17. Wid�ety aplikacji 50317.1. Wprowadzenie do wid�etów aplikacji ..................................................................................... 504

17.1.1. Co to jest wid�et aplikacji? ............................................................................................. 50417.1.2. Strategie instalowania wid�etów .................................................................................... 507

17.2. Wprowadzenie do aplikacji SiteMonitor ................................................................................. 50917.2.1. Korzy�ci z aplikacji SiteMonitor ..................................................................................... 50917.2.2. Interfejs u�ytkownika ...................................................................................................... 509

17.3. Architektura aplikacji SiteMonitor .......................................................................................... 51317.3.1. Schemat projektu aplikacji .............................................................................................. 51317.3.2. Plik po pliku ..................................................................................................................... 515

17.4. Obs�uga danych w wid�etach .................................................................................................... 51517.5. Implementacja klasy AppWidgetProvider .............................................................................. 519

17.5.1. Katalog metod klasy AppWidgetProvider ...................................................................... 52017.5.2. Implementowanie klasy SiteMonitorWidgetImpl ......................................................... 52017.5.3. Obs�uga wid�etów zombie .............................................................................................. 523

17.6. Wy�wietlanie wid�etów za pomoc� RemoteViews ................................................................. 52417.6.1. Korzystanie z RemoteViews ........................................................................................... 52417.6.2. Metoda UpdateOneWidget() .......................................................................................... 525

17.7. Konfigurowanie instancji wid�etu ............................................................................................ 52717.7.1. Metadane wid�etu ........................................................................................................... 52717.7.2. Operacje na danych intencji ........................................................................................... 52817.7.3. Potwierdzenie utworzenia wid�etu ................................................................................ 529

17.8. Aktualizacja wid�etu .................................................................................................................. 53117.8.1. Porównanie us�ugi z alarmem ......................................................................................... 53117.8.2. Uruchamianie aktualizacji ............................................................................................... 53217.8.3. Aktualizowanie wid�etów ................................................................................................ 534

17.9. ��czenie wszystkich elementów w pliku AndroidManifest.xml ........................................... 53817.10. Podsumowanie ............................................................................................................................ 539

18. Lokalizowanie aplikacji 54118.1. Potrzeba lokalizowania .............................................................................................................. 54218.2. Ustawienia regionalne ............................................................................................................... 54318.3. Strategie lokalizowania aplikacji .............................................................................................. 545

18.3.1. Identyfikowanie docelowych j�zyków i danych ............................................................ 54518.3.2. Identyfikowanie tekstów i zarz�dzanie nimi .................................................................. 54618.3.3. Rysunki i uk�ady .............................................................................................................. 54818.3.4. Data, czas, liczby i waluty ............................................................................................... 54918.3.5. Praca z zespo�em t�umaczy ............................................................................................. 550

18.4. Wykorzystanie mo�liwo�ci zasobów Androida ....................................................................... 55018.4.1. Wi�cej ni� ustawienia regionalne ................................................................................... 55118.4.2. Przypisywanie tekstów z zasobów .................................................................................. 551

18.5. Lokalizowanie kodu Java ........................................................................................................... 55318.6. Formatowanie lokalizowanych napisów .................................................................................. 55418.7. Problemy z lokalizowaniem ....................................................................................................... 55618.8. Podsumowanie ............................................................................................................................ 557

19. Android Native Development Kit 55919.1. Wprowadzenie do NDK ............................................................................................................ 560

19.1.1. Zastosowania NDK .......................................................................................................... 56119.1.2. Przegl�d NDK ................................................................................................................. 561

Page 11: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Spis tre�ci 11

19.2. Budowanie aplikacji za pomoc� NDK ..................................................................................... 56319.2.1. Demonstracja gotowej aplikacji ...................................................................................... 56319.2.2. Struktura projektu ........................................................................................................... 565

19.3. Budowanie biblioteki JNI .......................................................................................................... 56519.3.1. Poznajemy JNI ................................................................................................................. 56619.3.2. Implementacja biblioteki ................................................................................................ 56719.3.3. Kompilowanie biblioteki JNI .......................................................................................... 571

19.4. Budowanie interfejsu u�ytkownika .......................................................................................... 57219.4.1. Uk�ad interfejsu u�ytkownika ......................................................................................... 57219.4.2. Wykonanie zdj�cia .......................................................................................................... 57419.4.3. Wyszukiwanie kraw�dzi .................................................................................................. 576

19.5. Integracja NDK w Eclipse ........................................................................................................ 57719.6. Podsumowanie ............................................................................................................................ 578

Cz��� V. Dodatki 581A. Instalowanie Android SDK 583

A.1. Wymagania �rodowiska programistycznego ............................................................................ 584A.2. Pobieranie i instalowanie Eclipse ............................................................................................. 584A.3. Pobieranie i instalowanie Android SDK .................................................................................. 587A.4. Korzystanie z SDK oraz AVD Manager ................................................................................... 587A.5. Pobieranie i instalowanie wtyczki Eclipse ............................................................................... 590A.6. Konfigurowanie wtyczki Eclipse ............................................................................................... 592

B. Publikowanie aplikacji 595B.1. Przygotowanie aplikacji do dystrybucji.................................................................................... 596

B.1.1. Rejestrowanie..................................................................................................................... 596B.1.2. Powiadomienia debugowania............................................................................................ 596B.1.3. Przyk�adowe dane.............................................................................................................. 596B.1.4. Plik AndroidManifest.xml ................................................................................................. 597B.1.5. Licencja u�ytkownika ........................................................................................................ 597B.1.6. Testowanie ......................................................................................................................... 598B.1.7. Operacje ko�cowe ............................................................................................................. 598

B.2. Podpisywanie cyfrowe aplikacji ................................................................................................ 599B.2.1. Magazyny kluczy................................................................................................................ 599B.2.2. keytool ................................................................................................................................ 599B.2.3. jarsigner.............................................................................................................................. 600

B.3. Publikowanie w Android Market .............................................................................................. 602B.3.1. Zasady Android Market ..................................................................................................... 602B.3.2. Umieszczanie aplikacji w Android Market....................................................................... 603B.3.3. Android Market — w�a�ciwe rozwi�zanie........................................................................ 603

B.4. Inne sposoby dystrybucji............................................................................................................ 604B.5. Podsumowanie Android Debug Bridge .................................................................................... 606

Skorowidz 609

Page 12: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Bluetooth i sensory

W tym rozdziale:

� Do��czanie Bluetooth do urz�dzenia� Interakcja z obiektem SensorManager� Budowanie i uruchamianie aplikacji

SenseBot

Page 13: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

408 ROZDZIA� 14Bluetooth i sensory

Wi�kszo� materia�u przedstawionego w tej ksi��ce dotyczy wykorzystania ró�nychmo�liwo�ci Android SDK. Teraz jednak poka�emy, jak skorzysta z mo�liwo�ci sprz�-towych urz�dze� Android. Zapoznamy si� tu z pod��czaniem urz�dzenia Android dozdalnych urz�dze� za pomoc� po��czenia bezprzewodowego Bluetooth oraz odczytemi interpretacj� warto�ci ze sprz�towego czujnika orientacji urz�dzenia. W rozdziale tymte dwa tematy zwi�zane ze sprz�tem po��czyli�my w jednym przyk�adowym programie,który pozwala sterowa robotem zbudowanym przy u�yciu popularnego zestawu LEGOMindstorms NXT. Robot Mindstorm NXT obs�uguje protokó� komunikacyjny znanypod nazw� „Direct Commands1”, co pozwala na sterowanie nim z u�yciem urz�dzeniazdalnego. Jest to rozdzia�, w którym konieczne jest u�ycie fizycznego urz�dzenia z zain-stalowanym systemem Android w wersji 2 lub nowszej — sam symulator nie jest wystar-czaj�cy do sprawdzania dzia�ania Bluetooth oraz sensorów.

Kod do��czony do tego rozdzia�u tworzy aplikacj� o nazwie SenseBot. Jest to �red-nio skomplikowany przyk�ad u�ycia systemu Android do manipulowania zewn�trznymiobiektami. Czujniki orientacji urz�dzenia Android pozwalaj� u�ytkownikowi „jecha”robotem, przechylaj�c telefon w okre�lonym kierunku, w sposób podobny do u�ywaniaNintendo Wii lub innego zaawansowanego systemu gier. Przechylamy telefon do przodu,a robot jedzie do przodu. Przechylamy telefon do ty�u, a robot zmienia kierunek. Prze-chylanie w lewo lub w prawo powoduje skr�t robota w odpowiednim kierunku. Pozinterpretowaniu warto�ci ka�dego czujnika ruchu aplikacja SenseBot wysy�a poleceniado robota poprzez Bluetooth, powoduj�c odpowiednie fizyczne dzia�anie. LEGO NXTma wbudowany zestaw polece� pozwalaj�cych na operacje niskiego poziomu, takie jakbezpo�rednie sterowanie silnikami. Ruchy urz�dzenia Android s� interpretowane,konwertowane na polecenia i przesy�ane za pomoc� Bluetooth do robota.

Oprócz podstaw komunikacji Bluetooth oraz zarz�dzania sensorami kod demon-struje u�ycie dynamicznie tworzonych obiektów BroadcastReceiver, które obs�uguj�zdarzenia zwi�zane z po��czeniem Bluetooth.

Temat komunikacji Bluetooth jest znacznie szerszy i nie mamy mo�liwo�ci opisago w ca�o�ci w jednym rozdziale. Na platformie Android dost�pnych jest co najmniejsze� ró�nych sensorów, a w tym rozdziale demonstrujemy u�ycie tylko jednego. Je�eliszukasz dok�adnego opisu tych dwóch tematów, zach�camy do odszukania dokumen-tacji w sieci lub by mo�e innej ksi��ki na ten temat. Celem tego rozdzia�u jest przed-stawienie funkcji Bluetooth oraz sensorów na platformie Android w kontek�cie dzia-�aj�cej (i zabawnej) aplikacji. Je�eli masz dost�p do robota LEGO Mindstorms NXTi zbudujesz t� aplikacj�, obiecujemy, �e na d�ugi czas nie b�dziesz si� móg� oderwa od„je�d�enia” robotem za pomoc� telefonu. Jedna z wersji tej aplikacji jest dost�pnado pobrania z Android Market.

1 Wi�cej informacji na temat Direct Commands dla Lego Mindstorm mo�na znale� pod adresem

http://mindstorms.lego.com/en-us/support/files/default.aspx.

Page 14: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.1. Przegl�d mo�liwo�ci Bluetooth w systemie Android 409

14.1. Przegl�d mo�liwo�ci Bluetoothw systemie Android

Pierwszym urz�dzeniem, jakie przychodzi na my�l, gdy wspomina si� Bluetooth, jestbezprzewodowy zestaw s�uchawkowy. W wielu krajach te cude�ka technologii bez-przewodowej s� wymagane przez prawo w przypadku korzystania z telefonu w czasieprowadzenia samochodu. W rzeczywisto�ci zestawy s�uchawkowe to tylko jedno z wieluzastosowa� technologii Bluetooth.

Bluetooth to technologia komunikacji bezprzewodowej podobna do Wi-Fi, aleograniczona do komunikacji o niewielkim zasi�gu, oko�o 10 metrów. Oprócz zastosowa-nia w bezprzewodowych s�uchawkach i mikrofonie telefonu komórkowego Bluetoothpozwala równie� na realizacj� po��cze� sieciowych mi�dzy urz�dzeniami, wymian�obiektów, zast�powanie kabli oraz realizacj� zaawansowanych funkcji audiowizualnych.

Podobnie jak ka�dy inny standardowy protokó�, tak i Bluetooth posiada w�asny „stos”protoko�ów, z których ka�dy implementuje osobne mo�liwo�ci i funkcje protoko�u.W rozdziale tym nie b�dziemy traci czasu na prezentowanie tych warstw, poniewa� stosBluetooth jest opisany w innych miejscach. Zamiast tego w rozdziale tym poka�emymo�liwo�ci nawi�zania po��czenia danych pomi�dzy dwoma urz�dzeniami. B�dziemytu korzysta z „profilu” Bluetooth o nazwie RFCOMM2, b�d�cego profilem zast�po-wania kabla.

W tym podrozdziale poka�emy, jak nawi�za po��czenie pomi�dzy Androidema zdalnym urz�dzeniem, korzystaj�c z pakietu android.bluetooth. Poniewa� platformaAndroid pozwala tylko na po��czenia szyfrowane, dwa urz�dzenia komunikacyjne musz�by wcze�niej sparowane, a pó�niej mog� ��czy si� ze sob� bez konieczno�ci podawa-nia has�a. Aby wiedzie, czy aplikacja jest po��czona z urz�dzeniem Bluetooth, nale�ynast�pnie zarejestrowa dwa zdarzenia: ACTION_ACL_CONNECTED oraz ACTION_ACL_�DISCONNECTED. Dodatkowo aplikacja Android musi posiada uprawnienie BLUE-TOOTH zdefiniowane w pliku AndroidManifest.xml. Zaczynamy!

14.1.1. Zast�powanie kabli

Obecnie pod��czanie si� do internetu w celu sprawdzenia poczty lub przegl�dania sieciWWW jest codzienn� czynno�ci� wielu u�ytkowników systemu Android. Przy u�yciunaszego telefonu mo�emy po��czy si� z komputerami znajduj�cymi si� po drugiejstronie planety, ale jak komunikowa si� z czym�, co znajduje si� w tym samym pokoju?W niezbyt odleg�ej przesz�o�ci programowali�my interfejsy pomi�dzy komputeramipo��czonymi szeregowo kablem korzystaj�cym z interfejsu RS232. Po kilku krótkichlatach kable szeregowe RS232, zast�pione przez bardziej zaawansowane kable USBoraz przez profil Bluetooth Serial Port, sta�y si� eksponatem muzealnym.

Tak jak USB mo�e by u�ywane przez wiele ró�nych aplikacji, tak i protokó� bez-przewodowy Bluetooth mo�e by wykorzystywany na wiele sposobów. W tym momen-cie interesuje nas mo�liwo� u�ycia Bluetooth do zast�pienia kabla szeregowego zapomoc� profilu Serial Port Profile (SPP), nazywanego czasami RFCOMM. RF pochodzi

2 Wi�cej informacji na temat RFCOMM mo�na znale� na stronie http://www.bluetooth.com.

Page 15: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

410 ROZDZIA� 14Bluetooth i sensory

od s�ów radio frequency, czyli cz�stotliwo�ci radiowych. COMM pochodzi od portukomunikacyjnego, czyli antycznego ju� po��czenia punkt-punkt, wykorzystuj�cegoprotokó� strumieniowy.

14.1.2. Rola podstawowa i podrz�dna oraz gniazda

Protokó� Bluetooth dzia�a w sposób podobny do innych �rodowisk komunikacyjnych,w których urz�dzenie podstawowe inicjuje komunikacj� z jednym lub wi�ksz� liczb�urz�dze� podrz�dnych. Android jest na tyle rozbudowany, �e mo�e by zarówno urz�-dzeniem podstawowym, jak i podrz�dnym w po��czeniu Bluetooth.

Niezale�nie od sposobu nawi�zania po��czenia — jako podstawowe lub drugorz�dneurz�dzenie Bluetooth — aplikacja Android wymienia dane poprzez interfejs gniazd.To prawda — znany ju� mechanizm sieciowy korzystaj�cy z gniazd oraz skojarzonychz nimi strumieni wej�ciowych i wyj�ciowych jest równie� stosowany przy po��czeniachBluetooth. Je�eli wi�c przejdziemy przez etap ��czenia ze sob� dwóch urz�dze� Bluetoothw celu utworzenia sesji komunikacyjnej, mo�emy mniej przejmowa si� szczegó�amikomunikacji i po prostu traktowa urz�dzenie jako aplikacj� po drugiej stronie gniazda.Jest to podobne do relacji pomi�dzy przegl�dark� WWW i zdalnym serwerem, którywymienia dane poprzez gniazda TCP.

Aby u�y �rodowiska Bluetooth w urz�dzeniu Android, musimy skorzysta z pakietuandroid.bluetooth, który zosta� dodany w wersji 2.0. Cho wi�kszo� urz�dze� Androidw wersji ni�szej ni� 2.0 mog�a korzysta z zestawów s�uchawkowych Bluetooth, to dopierood wersji 2.0 aplikacje Android mog�y wykorzystywa komunikacj� Bluetooth w sposóbprzedstawiony w tym rozdziale. W tabeli 14.1 pokazane s� g�ówne klasy Java u�ywanew aplikacjach Android korzystaj�cych z komunikacji Bluetooth.

Tabela 14.1. Klasy Bluetooth

Klasa Komentarz

BluetoothAdapter Klasa ta reprezentuje sprz�t lokalnego urz�dzenia Bluetooth w systemie Android i pozwalana tworzenie interfejsu. Wszystko zaczyna si� od BluetoothAdapter.

BluetoothClass Klasa BluetoothClass zapewnia wygodne metody dost�pu do sta�ych warto�ci zwi�zanychz komunikacj� i dzia�aniem Bluetooth.

BluetoothDevice Ka�de urz�dzenie zdalne jest reprezentowane jako BluetoothDevice.

BluetoothSocket Klasa BluetoothSocket jest u�ywana przy wymianie danych. Urz�dzenie podstawoweinicjuje po��czenie z gniazdem w urz�dzeniu podrz�dnym, tworz�c wcze�niej BluetoothSocket.W rozdziale tym przedstawione s� przyk�ady kodu demonstruj�ce t� technik�.

BluetoothServerSocket Urz�dzenie podrz�dne Bluetooth oczekuje po��cze� z urz�dzeniem nadrz�dnym za pomoc�BluetoothServerSocket w taki sam sposób, jak serwer WWW oczekuje na po��czenieprzez gniazdo TCP z przegl�darki. Po zestawieniu po��czenia tworzony jest obiektBluetoothSocket zapewniaj�cy dalsz� komunikacj�.

W rozdziale tym przedstawimy u�ycie klas BluetoothAdapter, BluetoothDevice orazBluetoothSocket. W nast�pnym punkcie poka�emy, w jaki sposób urz�dzenie Androidpod��cza si� do innego urz�dzenia Bluetooth.

Page 16: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.1. Przegl�d mo�liwo�ci Bluetooth w systemie Android 411

Uwaga

W przedstawionych tu przyk�adach urz�dzenie Android jest podstawowym, a kon-troler LEGO Mindstorm NXT podrz�dnym urz�dzeniem Bluetooth.

14.1.3. Urz�dzenia zaufane

Cho specyfikacja Bluetooth pozwala na korzystanie zarówno z po��cze� szyfrowanych,jak i nieszyfrowanych, to jednak platforma Android pozwala wy��cznie na po��czeniaszyfrowane. W zasadzie oznacza to tylko, �e dwa komunikuj�ce si� z sob� urz�dzeniamusz� by wcze�niej sparowane lub zwi�zane. Jest to nieco irytuj�cy krok polegaj�cy napoinformowaniu ka�dego z urz�dze�, �e drugie jest urz�dzeniem zaufanym. Pomimok�opotliwo�ci tego procesu oraz faktu, �e niemal wszystkie urz�dzenia Bluetooth natej planecie korzystaj� z kodu zabezpiecze� 0000 lub 1234, jedynym zabezpieczeniemprotoko�u Bluetooth jest ten w�a�nie kod.

Urz�dzenia mog� by sparowane poprzez ich ekrany „ustawie�” lub podczas nawi�-zywania pierwszego po��czenia. W tym punkcie przedstawimy sposób parowaniaurz�dzenia Android3 z modu�em kontrolera robota LEGO.

Na rysunku 14.1 pokazana jest cz�� ekranu ustawie� Bluetooth z mojego telefonuNexus One z systemem Android 2.2.

Rysunek 14.1.Ekran ustawie�Bluetooth

Z tego ekranu mo�emy uzyska nast�puj�ce informacje:

� Bluetooth jest w��czony.� Urz�dzenie ma nazw� Nexus One.� Urz�dzenie to nie jest obecnie wykrywalne. Oznacza to, �e inne urz�dzenia

Bluetooth nie widz� tego telefonu w czasie „skanowania”. Praktycznie rzecz bior�c,oznacza to, �e telefon ignoruje pakiety wykrywania. Znajduje si� tu równie�

3 Aby dowiedzie si� wi�cej na temat typów u�ywanych uk�adów w sprz�cie Android, warto skorzysta

z forum Talk Android, dost�pnego pod adresem http://www.talkandroid.com/android-forums/android-hardware/.

Page 17: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

412 ROZDZIA� 14Bluetooth i sensory

przycisk pozwalaj�cy na zainicjowanie wykrywania znajduj�cych si� w pobli�uurz�dze�.

� Aby rozpocz� skanowanie znajduj�cych si� w zasi�gu urz�dze� Bluetooth, nale�yklikn� przycisk Wyszukaj urz�dzenia.

� W telefonie by�y równie� wcze�niej sparowane inne urz�dzenia, które nie s�obecnie po��czone:� NXT — robot LEGO.� Dwa urz�dzenia bezprzewodowe Samsung. To nie pomy�ka — mamy tu dwa

osobne urz�dzenia sparowane z telefonem. (Autor w ten sposób „rozwi�za�”problem cz�stego gubienia zestawów s�uchawkowych przez kupienie kilkusztuk poprzez eBay, st�d kilka sparowanych urz�dze�).

D�ugie klikni�cie jednego z tych urz�dze� Bluetooth na li�cie pozwala otworzyekran opcji z dodatkowymi operacjami, zale�nymi od urz�dzenia. Na przyk�ad wybraniejednego z urz�dze� Samsung powoduje otwarcie okna pokazanego na rysunku 14.2.

Rysunek 14.2.Opcjesparowanegourz�dzenia

Aby sparowa urz�dzenie, nale�y najpierw przeprowadzi skanowanie. Po dodaniuurz�dzenia do listy mo�emy je wybra i zainicjowa parowanie. Na rysunku 14.3 poka-zany jest kontroler robota LEGO, na którym pokazane jest ��danie PIN w czasieparowania.

Rysunek 14.3.Kontroler LEGO��daj�cy podaniakodu PIN

Podany PIN jest porównywany z kodem wprowadzonym w telefonie, co jest pokazanena rysunku 14.4.

Page 18: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.1. Przegl�d mo�liwo�ci Bluetooth w systemie Android 413

Rysunek 14.4.Parowaniez robotem LEGO

W tym momencie nasz telefon i kontroler robota LEGO s� sparowane. Od tegomomentu b�dziemy w stanie pod��cza si� do tego urz�dzenia bez ��dania podaniakodu PIN.

14.1.4. Pod��czanie si� do zdalnego urz�dzenia

Pod��czanie si� do sparowanego urz�dzenia wymaga wykonania dwóch kroków:

� Pobrania listy sparowanych urz�dze� za pomoc� stosu sprz�towo-programowegoBluetooth.

� Zainicjowania po��czenia RFCOMM z urz�dzeniem docelowym. Na poni�szymlistingu pokazany jest sposób nawi�zywania po��czenia RFCOMM lub SerialPort Profile pomi�dzy dwoma sparowanymi urz�dzeniami.

Listing 14.1. Inicjowanie po��czenia z urz�dzeniem Bluetooth

public void findRobot(View v){ try { btInterface = BluetoothAdapter.getDefaultAdapter(); pairedDevices = btInterface.getBondedDevices(); Iterator<BluetoothDevice> it = pairedDevices.iterator(); while (it.hasNext()) { BluetoothDevice bd = it.next(); if (bd.getName().equalsIgnoreCase(ROBOTNAME)) { connectToRobot(bd); return; } } } catch (Exception e) { Log.e(tag,"B��d w findRobot() " + e.getMessage()); }}

Page 19: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

414 ROZDZIA� 14Bluetooth i sensory

private void connectToRobot(BluetoothDevice bd){ try { socket = bd.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); socket.connect(); } catch (Exception e) { Log.e(tag,"B��d komunikacji ze zdalnym urz�dzeniem [" + e.getMessage() + "]"); }}

Wszystkie operacje zwi�zane z Bluetooth4 zaczynaj� si� od BluetoothAdapter .Przy u�yciu referencji do adaptera mo�na uzyska list� sparowanych urz�dze� . Nast�p-nie przegl�damy list� , szukaj�c nazwy urz�dzenia odpowiadaj�cej nazwie robota.Nazwa ta mo�e by wpisana na sta�e, jak jest to zrealizowane w przyk�adowej aplikacji,wprowadzana przez u�ytkownika w czasie uruchamiania lub nawet wybierana z bardziejzaawansowanej listy urz�dze�. Niezale�nie od metody naszym celem jest zidentyfiko-wanie obiektu BluetoothDevice, a nast�pnie zainicjowanie po��czenia, jak jest to poka-zane w wywo�aniu funkcji o nazwie connectToRobot() . Dobr� praktyk� jest prze-chwytywanie wyj�tków , szczególnie je�eli korzystamy ze zdalnego urz�dzeniafizycznego, które mo�e wyj� z zasi�gu lub mo�e mie problemy z zasilaniem. Abypod��czy si� do zdalnego urz�dzenia za pomoc� profilu Serial Port Profile, nale�y u�ymetody createRfComSocketToServiceRecord() z klasy BluetoothDevice. Ci�g UUIDpokazany w kodzie jest identyfikatorem profilu Serial Port Profile . Gdy mamy dost�pnyobiekt BluetoothSocket, mo�na wywo�a metod� connect() .

W tym momencie mamy odnalezione interesuj�ce nas urz�dzenie i próbujemy wys�a��danie po��czenia. Czy to si� uda�o? Jak mo�emy to sprawdzi? Mo�na poczyni za�o-�enie na temat stanu urz�dzenia i ewentualnie czeka na b��d. Nie jest to jednak naj-lepsze podej�cie. Musi istnie inna metoda — faktycznie jest taka metoda, ale wymagawykorzystania obiektów Intent.

14.1.5. Przechwytywanie zdarze Bluetooth

Aby sprawdzi, czy aplikacja jest prawid�owo pod��czona do BluetoothDevice, nale�yzarejestrowa dwa zdarzenia zwi�zane z Bluetooth: ACTION_ACL_CONNECTED oraz ACTION_�ACL_DISCONNECTED. Gdy wyst�pi� te dwa zdarzenia, mo�emy by pewni, �e mamyprawid�owe po��czenie lub je utracili�my. W jaki sposób mo�na u�y tych zdarze�w po��czeniu z utworzonym wcze�niej gniazdem? Na poni�szym listingu pokazana jesttechnika polegaj�ca na tworzeniu obiektów BroadcastReceiver bezpo�rednio w aktyw-no�ci i rejestrowaniu w nich interesuj�cych nas zdarze�.

4 Wi�cej informacji mo�na znale� w dokumentacji Google na temat Bluetooth oraz Android dost�pnej

pod adresem http://developer.android.com/guide/topics/wireless/bluetooth.html.

Page 20: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.1. Przegl�d mo�liwo�ci Bluetooth w systemie Android 415

Listing 14.2. Monitorowanie po��czenia Bluetooth

private BroadcastReceiver btMonitor = null;private void setupBTMonitor() { btMonitor = new BroadcastReceiver() { @Override public void onReceive(Context context,Intent intent) { if (intent.getAction().equals("android.bluetooth.device.action.ACL_CONNECTED")) { handleConnected(); } if (intent.getAction().equals("android.bluetooth.device.action.ACL_DISCONNECTED")) { handleDisconnected(); } } };}

Aby monitorowa specyficzne rozg�aszane zdarzenia, nale�y u�y obiektu Broadcast�Receiver. Zwykle realizuje si� to przy u�yciu osobnej klasy, ale aplikacja ta wymagabli�szej integracji z interfejsem u�ytkownika, wi�c zastosowali�my alternatywne podej-�cie. Zwykle obiekty BroadcastReceiver s� definiowane w pliku AndroidManifest.xml,ale w tym przypadku chcemy otrzymywa powiadomienia w okre�lonych przypadkach.W kodzie tym zdefiniowany jest obiekt BroadcastReceiver o nazwie btMonitor . W meto-dzie onCreate() wywo�ywana jest metoda setupBTMonitor() , w której tworzony jestobiekt BroadcastReceiver zawieraj�cy implementacj� metody onReceive() . Zaka�dym razem, gdy dla tego obiektu BroadcastReceiver dost�pny jest rozg�aszany obiektIntent, wywo�ywana jest metoda onReceive(). W implementacji tej obs�ugujemy akcjepod��czenia i roz��czenia urz�dzenia Bluetooth. Gdy urz�dzenie jest pod��czone, wywo-�ywana jest metoda handleConnected() . Podobnie gdy zdalne urz�dzenie zostanieroz��czone, wywo�ywana jest metoda handleDisconnected() , której zadaniem jestwykonanie operacji porz�dkowych.

Gdy urz�dzenie jest pod��czone, musimy wykona kilka operacji przygotowawczych,takich jak skonfigurowanie strumienia wej�ciowego oraz wyj�ciowego dla gniazda. Nanast�pnym listingu przedstawiona jest skrócona wersja metody handleConnected()zawieraj�ca kod pozwalaj�cy obs�ugiwa Bluetooth.

Listing 14.3. Metoda handleConnected

private void handleConnected() { try { is =socket.getInputStream(); os = socket.getOutputStream(); bConnected = true; btnConnect.setVisibility(View.GONE); btnDisconnect.setVisibility(View.VISIBLE); } catch (Exception e) { is = null; os = null; disconnectFromRobot(null); }}

Page 21: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

416 ROZDZIA� 14Bluetooth i sensory

Gdy wywo�ana zostaje metoda handleConnection(), zestawione jest prawid�owe po��-czenie gniazd Bluetooth, wi�c musimy tylko utworzy strumienie wej�cia i wyj�cia .Po utworzeniu tych strumieni mo�e rozpocz� si� komunikacja pomi�dzy urz�dzeniemAndroid a robotem LEGO. Jak si� oka�e w dalszej cz��ci tego rozdzia�u, chcemy prze-twarza zdarzenia czujnika wy��cznie przy dzia�aj�cym po��czeniu z robotem, wi�custawiamy znacznik informuj�cy aplikacj� o stanie po��czenia. W procedurze tejprze��czamy równie� widoczno� dwóch przycisków — jednego u�ywanego do ��cze-nia z robotem oraz drugiego pozwalaj�cego zako�czy po��czenie. W przypadku wyst�-pienia b��du w czasie wykonywania tych operacji musimy zamkn� strumienie i zainicjowa ��danie roz��czenia .

Kod pozwalaj�cy na roz��czenie gniazda jest bardzo prosty:

socket.close();

Aby mo�na by�o wykona wi�kszo� operacji Bluetooth w systemie Android, nienale�y zapomina o jeszcze jednym wa�nym elemencie: uprawnieniach!

14.1.6. Uprawnienia Bluetooth

Korzystanie ze sparowanych urz�dze� to nie jedyna czynno�, do której wykonaniakonieczne s� uprawnienia. Aby korzysta z Bluetooth API, aplikacja Android musi posia-da uprawnienie BLUETOOTH w pliku AndroidManifest.xml:

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

Cz�� kodu odpowiedzialnego za komunikacj� Bluetooth jest przedstawiona w trze-cim podrozdziale, w którym przedstawiamy dok�adniej kod aplikacji SenseBot. Zanimzajmiemy si� kodowaniem i uruchamianiem aplikacji robota, przyjrzyjmy si� klasieSensorManager, dzi�ki której b�dziemy mogli wykorzysta czujniki Androida do stero-wania robotem.

14.2. Interakcja z obiektem SensorManager

Android udost�pnia odczyty z czujników poprzez klas� o nazwie SensorManager. KlasaSensorManager jest podobna do BluetoothAdapter, poniewa� wszystkie zwi�zane z ni�aktywno�ci intensywnie korzystaj� z SensorManager. Klasa SensorManager wchodziw sk�ad pakietu android.hardware. W tym podrozdziale poka�emy, jak odczytywa infor-macje z sensora orientacji, co b�dzie nam potrzebne w aplikacji SenseBot.

W tabeli 14.2 wymienione s� g�ówne klasy skojarzone z SensorManager.Korzystanie z klasy SensorManager jest bardzo proste. Na pocz�tek nale�y odczyta

referencj� do obiektu tej klasy:

SensorManager sManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

Page 22: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.2. Interakcja z obiektem SensorManager 417

Tabela 14.2. Klasy zwi�zane z sensorami

Klasa Komentarz

SensorManager Podstawowy interfejs do wszystkich zainstalowanych w urz�dzeniu sensorów.

Sensor Reprezentuje pojedynczy sensor.

SensorEvent Reprezentuje odczyt z sensora.

SensorEventListener Interfejs ten jest u�ywany do odbierania zdarze� SensorEvents niemal w czasierzeczywistym.

Po odczytaniu referencji mo�na u�y tej zmiennej w ca�ej aplikacji do realizowaniainterakcji z samymi sensorami. Na przyk�ad aplikacja SenseBot korzysta z czujnikaorientacji. Aby uzyska referencj� do obiektu tego czujnika, nale�y wywo�a z klasySensorManager metod� getDefaultSensor():

Sensor orientationSensor = sManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

W aplikacji tej korzystamy tylko z czujnika orientacji, ale Android oferuje znaczniewi�cej. Przyjrzyjmy si� li�cie czujników dost�pnych w systemie Android 2.2.

14.2.1. Typy czujników

Android obs�uguje typy czujników wymienione w tabeli 14.3.

Tabela 14.3. Czujniki systemu Android

Sensor.TYPE_ACCELEROMETER Mierzy przyspieszenie w trzech wymiarach.

Sensor.TYPE_GYROSCOPE �yroskop.

Sensor.TYPE_LIGHT Czujnik �wiat�a.

Sensor.TYPE_MAGNETIC_FIELD Kompas mierz�cy pole magnetyczne.

Sensor.TYPE_ORIENTATION Mierzy po�o�enie w trzech wymiarach.

Sensor.TYPE_PRESSURE Mierzy ci�nienie.

Sensor.TYPE_PROXIMITY Mierzy odleg�o�� telefonu od innego obiektu, na przyk�ad naszego ucha.

Sensor.TYPE_TEMPERATURE Mierzy temperatur� otoczenia.

Ka�dy z obiektów czujnika mo�e zawiera kilka przydatnych i interesuj�cych atry-butów, takich jak:

� nazwa czujnika,� zu�ycie pr�du — w mA,� rozdzielczo�,� maksymalny zakres,� dostawca,� wersja.

Page 23: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

418 ROZDZIA� 14Bluetooth i sensory

Czujnik orientacji w telefonie Nexus One ma nast�puj�c� charakterystyk�:

� Nazwa: AK8973 Orientation Sensor� Pobór pr�du: 7,0 mA� Rozdzielczo�: 1,0 stopie�� Maksymalny zakres: 360 stopni

Teraz, gdy wiemy, jak uzyska dost�p do czujnika poprzez SensorManager, zajmijmysi� odczytem jego warto�ci.

14.2.2. Odczyt warto�ci czujnika

Warto�ci z czujników odczytujemy z u�yciem obiektu implementuj�cego interfejsSensorEventInterface. Do metody o nazwie onSensorChanged() wysy�ane s� obiektySensorEvent. Klasa SensorEvent zawiera cztery pola wymienione w tabeli 14.4.

Tabela 14.4. Pola klasy SensorEvent

Pole Komentarz

accuracy Pole typu ca�kowitego reprezentuj�ce dok�adno�� odczytu szacowan� przez czujnik.

Sensor Referencja do czujnika, który utworzy� ten obiekt SensorEvent.

timestamp Znacznik czasu z dok�adno�ci� nanosekundow�, informuj�cy o momencie utworzenia zdarzenia.Pole to mo�e by� przydatne przy korelowaniu wielu zdarze�.

values[3] Warto�ci z czujnika zapisane jako tablica liczb zmiennoprzecinkowych z trzema warto�ciami. Jednostkii dok�adno�� tych trzech warto�ci jest zale�na od czujnika.

Obiekt SensorEventListener otrzymuje zdarzenie za ka�dym razem, gdy zmieni si�warto� sensora. Na poni�szym listingu przedstawiona jest uproszczona wersja metodyonSensorChanged() z aplikacji SenseBot.

Listing 14.4. Uproszczona wersja metody onSensorChanged()

public void onSensorChanged(SensorEvent event) { try { if (bConnected == false) return; StringBuilder sb = new StringBuilder(); sb.append("[" + event.values[0] + "]"); sb.append("[" + event.values[1] + "]"); sb.append("[" + event.values[2] + "]");

readings.setText(sb.toString());

// przetworzenie tych danych z czujnika // updateMotors(); } catch (Exception e) { Log.e(tag,"B��d w onSensorChanged ::" + e.getMessage()); } }

Page 24: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.2. Interakcja z obiektem SensorManager 419

Za ka�dym razem, gdy dost�pny jest obiekt SensorEvent , jest on przekazywany dometody onSensorChanded(). Pierwsz� operacj� w tym kodzie jest sprawdzenie, czy mamydzia�aj�ce po��czenie z robotem . Je�eli nie ma po��czenia, ignorujemy dane. Ka�daz trzech warto�ci jest odczytywana i formatowana do wy�wietlenia w polu TextView .Warto�ci s� interpretowane i odpowiednie instrukcje s� wysy�ane do kontrolera ste-ruj�cego silnikami robota . Kod odpowiedzialny za interpretacj� i interakcj� z robo-tem przedstawiono w dalszej cz��ci tego rozdzia�u.

Aplikacja musi zarejestrowa swój obiekt SensorEventListener, aby otrzymywa tepowiadomienia. W nast�pnym punkcie przedstawimy zalecany sposób wykonywaniaprocesu rejestracji.

14.2.3. W��czanie i wy��czanie czujników

Obiekt implementuj�cy interfejs SensorEventListener otrzymuje komunikaty wy��czniewtedy, gdy jest zarejestrowany. Klasa SensorManager zawiera dwie funkcje pozwalaj�ceaplikacji na rejestrowanie zdarze� czujnika. W kontek�cie aplikacji SenseBot interesujenas otrzymywanie zdarze� z czujnika po�o�enia wy��cznie wtedy, gdy urz�dzenie jestpo��czone z robotem poprzez Bluetooth. Dlatego kod rejestracji umie�cili�my w przed-stawionej wcze�niej metodzie handleConnected(). Na poni�szym listingu zamieszczonyjest nowy kod, dodany do metody handleConnected().

Listing 14.5. Kod rejestracji czujnika

sManager.registerListener(SenseBot.this, sManager.getDefaultSensor( Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);

Metoda registerListener() z klasy SensorManager oczekuje trzech argumentówpotrzebnych do przekazania danych z czujnika do aplikacji. Pierwszym argumentem jestobiekt implementuj�cy interfejs SensorEventListener, którym w tym przypadku jest samaklasa SenseBot.this . Drugim argumentem jest obiekt interesuj�cego nas czujnika.W tym przypadku jeste�my zainteresowani �ledzeniem warto�ci z czujnika po�o�enia .Cz�stotliwo�, z jak� s� aktualizowane dane czujników, jest zmienna i definiowana przezprogramist� za pomoc� trzeciego parametru. W tym przypadku u�yli�my sta�ej Sensor�Manager.SENSOR_DELAY_UI , która jest dobr�, uniwersaln� warto�ci�. Dla gier i innychaplikacji czasu rzeczywistego nale�y u�y wi�kszych warto�ci.

Jak pami�tamy, czujnik po�o�enia potrzebuje 7 mA. Aby wyd�u�y czas pracybaterii, nale�y pami�ta o wy��czeniu czujnika, je�eli nie jest on potrzebny. W aplikacjiSenseBot istniej� dwa miejsca, w których ma to miejsce. Pierwszym jest metoda handle�Disconnected() — gdy utracimy po��czenie z robotem, nie ma sensu próbowa odczy-tywa dane z sensora. Innym miejscem, w którym nale�y doda funkcj� „wyrejestro-wania”, jest metoda cyklu �ycia aktywno�ci, onStop().

Niezale�nie od miejsca, z którego wywo�any jest kod, obiekt SensorEventListener jestwyrejestrowywany za pomoc� prostej metody unregisterListener() z klasy SensorManager:

sManager.unregisterListener(SenseBot.this);

Page 25: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

420 ROZDZIA� 14Bluetooth i sensory

Trzeba pami�ta, �e je�eli aplikacja zarejestrowa�a wi�cej ni� jeden typ czujnika,konieczne jest wyrejestrowanie wszystkich tych czujników.

Wiemy ju�, jak pod��czy si� do robota i odczytywa warto�ci z czujnika po�o�enia.Czas po��czy ze sob� te informacje i zbudowa aplikacj� SenseBot!

14.3. Budowanie aplikacji SenseBot

Za�o�enia aplikacji SenseBot s� proste — chcemy sterowa robotem LEGO Mind-storms NXT5 przez zmian� orientacji telefonu Android. Nie korzystamy z przewodów —ca�a komunikacja jest realizowana poprzez Bluetooth, a orientacja telefonu pozwala okre-�li sposób poruszania si� robota. Cho robot LEGO jest programowalny, korzystamytylko z wbudowanych mo�liwo�ci manipulowania poszczególnymi silnikami. Zalet�takiego podej�cia jest mo�liwo� wykorzystywania tego programu z niemal ka�dymrobotem LEGO, niezale�nie od umiej�tno�ci programisty robota. Jedynym wymaganiemjest pod��czenie silników do portów wyj�ciowych B oraz C, co jest cz�st� praktyk� przykonstruowaniu robotów LEGO NXT. Na rysunku 14.5 pokazany jest robot z o prostej,dwusilnikowej konstrukcji.

Rysunek 14.5.Prosty robot LEGONXT z silnikamipod��czonymido portów Boraz C

Robot mo�e jecha w przód, w ty�, skr�ca w lewo oraz w prawo. Przechylenie tele-fonu do przodu lub do ty�u spowoduje jazd� robota, natomiast przechylenie go w lewolub prawo powoduje, �e robot skr�ca.

Cho robot jest kontrolowany wy��cznie przez ruchy telefonu, nadal musimy utwo-rzy przydatny i intuicyjny interfejs u�ytkownika. W rzeczywisto�ci interfejs u�ytkow-nika w tej aplikacji jest bardzo wa�ny.

14.3.1. Interfejs u�ytkownika

Interfejs u�ytkownika tej aplikacji jest prosty, ale musi by równie� intuicyjny dlau�ytkownika. Chcemy pokaza u�ytkownikowi, co si� dzieje, aby zapewni mu informa-cje na temat sposobu u�ywania aplikacji. Dodatkowo komunikujemy si� z mechanicz-nym robotem, który niekoniecznie mo�e prawid�owo dzia�a. Robot mo�e wykona nie-

5 Je�eli masz w rodzinie przysz�ego in�yniera robotyki, warto zapozna si� z lig� First Lego League:

http://www.firstlegoleague.org/.

Page 26: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.3. Budowanie aplikacji SenseBot 421

oczekiwan� akcj� — dlatego po��dane jest, aby mo�na by�o porówna ruchy robotaz wizualnymi wska�nikami wy�wietlanymi w interfejsie u�ytkownika. Musimy wi�cinformowa u�ytkownika o stanie silników przez ca�y czas, gdy urz�dzenie Android jestpod��czone do robota. Na rysunku 14.6 pokazany jest domy�lny interfejs u�ytkownikaprzed pod��czeniem robota.

Rysunek 14.6.Oczekiwaniena pod��czenierobota

Klikni�cie przycisku Po��cz inicjuje sekwencj� ��czenia, zawieraj�c� metod� find�Robot(), pokazan� wcze�niej w punkcie „Pod��czanie si� do zdalnego urz�dzenia”.Po pod��czeniu do robota musimy ukry przycisk Po��cz i zapewni mo�liwo� od��cze-nia od robota za pomoc� przycisku Roz��cz. Dodatkowo chcemy wy�wietli stan silnikówi wy�wietla odczyty z czujnika. Na rysunku 14.7 pokazana jest aplikacja po po��czeniu,gdzie robot ma wy��czone silniki.

Rysunek 14.7.Pod��czeniedo robotaz zatrzymanymisilnikami

Uwaga

Wskaniki silników na ekranie s� warto�ciami zdefiniowanymi w aplikacji i sko-relowanymi z instrukcjami sterowania silnikami, wysy�anymi do robota. Nie s� towarto�ci odczytywane z robota.

Je�eli silniki robota pracuj�, a na ekranie pokazane jest, �e oba s� zatrzymane, wyst�-puje problem z wys�anym poleceniem lub z samym robotem.

Na rysunku 14.8 pokazany jest ekran aplikacji w przypadku wydania poleceniacofania.

Na rysunku 14.9 pokazana jest aplikacja wysy�aj�ca komunikat skr�tu w lewo. Abywykona tak� operacj�, lewy silnik pracuje w ty�, a prawy w przód.

Page 27: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

422 ROZDZIA� 14Bluetooth i sensory

Rysunek 14.8.Oba silnikidzia�aj� w ty�

Rysunek 14.9.Skr�t w lewo

Na koniec, gdy aplikacja od��czy si� od robota (albo przez klikni�cie przycisku Roz��cz,albo przez wy��czenie robota), aplikacja wykrywa zdarzenie roz��czenia i wywo�ujemetod� handleDisconnect(), a interfejs u�ytkownika jest aktualizowany, jak jest to poka-zane na rysunku 14.10.

Rysunek 14.10.Stan od��czenia,oczekiwanie nanowe po��czenie

Interfejs u�ytkownika sk�ada si� z dwóch elementów View oraz trzech rysunków6:stop, w gór� (w przód) oraz w dó� (w ty�). Na podstawie warto�ci z czujnika odpowiednielement View ma ustawiane odpowiednie t�o.

6 Warto pobra aplikacj� wy�wietlaj�c� wszystkie zasoby znajduj�ce si� w android.R.drawable urz�dzenia

Android: http://www.appbrain.com/app/android-drawables/aws.apps.androidDrawables.

Page 28: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.3. Budowanie aplikacji SenseBot 423

Aplikacja ta jest tak zale�na od orientacji telefonu przy sterowaniu robotem, �e niemo�emy pozwoli na zmiany z uk�adu pionowego na poziomy i odwrotnie, poniewa�zarówno powoduje to ponowne uruchomienie aktywno�ci, co mo�e wprowadzi sporozamieszania, jak równie� zmienia orientacj� czujników. Aby spe�ni to wymaganie, w plikuAndroidManifest.xml nale�y do znacznika activity doda poni�szy atrybut:

android:screenOrientation=landscape

Po skonfigurowaniu orientacji nie ma obawy o zmian� uk�adu z poziomego na pio-nowy przy sterowaniu robotem. Uznali�my, �e trzymanie telefonu poziomo pozwala nawygodne „kierowanie”.

Aby zapewni dok�adne skoordynowanie interfejsu u�ytkownika z fizycznymi sil-nikami, konieczne jest przygotowanie mechanizmu sprz��enia, dzi�ki czemu mo�nalepiej sterowa robotem, jak i pomóc przy rozwi�zywaniu problemów z anomaliamiw czasie testowania tego projektu in�ynierskiego.

Komunikacja jest gotowa do dzia�ania, a czujniki orientacji dostarczaj� danych; czaszaj� si� interpretowaniem warto�ci z czujników.

14.3.2. Interpretowanie warto�ci czujnika

Aby sterowa robotem przy u�yciu orientacji telefonu, nale�y zdefiniowa „martw� stref�”,której „�rodek” jest reprezentowany przez pozycj� telefonu w poziomie, z niewielkimodchyleniem w ty�. Po zdefiniowaniu tej pozycji centralnej dodajemy w wymiarachx i y wygodne w u�yciu zakresy czu�o�ci. Dopóki orientacja telefonu nie przekroczywarto�ci czu�o�ci, silniki pozostaj� wy��czone. Zmienne o nazwach xCenter, yCenter,xSensitivity oraz ySensitivity pozwalaj� utworzy „neutralny prostok�t”.

Spójrzmy na metod� onSensorChanged(): w niej w�a�nie odbieramy obiekty SensorEventzawieraj�ce warto�ci dla ka�dego z wymiarów, x, y oraz z. Na poni�szym listingu poka-zana jest kompletna implementacja tej metody wraz z analiz� czujników oraz suge-stiami ruchu.

Listing 14.6. Metoda onSensorChanged() interpretuj�ca orientacj�

public void onSensorChanged(SensorEvent event) { try { if (bConnected == false) return; StringBuilder sb = new StringBuilder(); sb.append("[" + event.values[0] + "]"); sb.append("[" + event.values[1] + "]"); sb.append("[" + event.values[2] + "]"); readings.setText(sb.toString()); // przetwarzanie danych z czujników movementMask = MOTOR_B_STOP + MOTOR_C_STOP;

if (event.values[2] < (yCenter - ySensitivity)) { movementMask = MOTOR_B_FORWARD + MOTOR_C_FORWARD; motorPower = 75;

} else if (event.values[2] > (yCenter + ySensitivity)) { movementMask = MOTOR_B_BACKWARD + MOTOR_C_BACKWARD; motorPower = 75;

Page 29: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

424 ROZDZIA� 14Bluetooth i sensory

} else if (event.values[1] >(xCenter + xSensitivity)) { movementMask = MOTOR_B_BACKWARD + MOTOR_C_FORWARD;

motorPower = 50; } else if (event.values[1] < (xCenter - xSensitivity)) { movementMask = MOTOR_B_FORWARD + MOTOR_C_BACKWARD; motorPower = 50; } updateMotors(); } catch (Exception e) { Log.e(tag,"B��d onSensorChanged ::" + e.getMessage()); } }

Przy interpretacji warto�ci dla silników domy�lnie mamy oba silniki zatrzymane .Zwró uwag�, �e silniki B i C s� zarz�dzane osobno. Na pocz�tek sprawdzamy, czywarto� czujnika y jest poza martw� stref� osi y . Je�eli wykryta warto� jest pozagranic� „przechylony w przód”, ruszamy robotem do przodu. Podobnie je�eli odczytanawarto� jest mniejsza od granicy warto�ci spoczynkowej, ruszamy robotem do ty�u, przezw��czenie wstecznych obrotów obu silników. Je�eli nie okre�lili�my ruchu robotaw przód lub w ty�, sprawdzamy kolejne opcje, dla ruchu w lewo lub w prawo . Je�elirobot przesuwa si� w przód lub w ty�, szybko� jest ustawiona na 75% . Je�eli robotskr�ca, jego szybko� jest ustawiona na 50% . Ostatnim krokiem jest przekszta�cenietych masek ruchu na prawdziwe akcje przez zmodyfikowanie stanu silników i zak-tualizowanie interfejsu, aby odzwierciedla� te polecenia.

Poniewa� metoda onSensorChanged() w pe�ni przetwarza dane SensorEvent, czas nauruchomienie silników robota i zaktualizowanie interfejsu u�ytkownika.

14.3.3. Jazda robotem

Jazda robotem jest bardzo prosta — i jednocze�nie z�o�ona — poniewa� polega tylkona w��czeniu silników za pomoc� serii polece�. Sam protokó� polece� jest przedstawionyw nast�pnym punkcie, a teraz skupimy si� na metodzie updateMotors(), w której mody-fikowany jest interfejs u�ytkownika oraz stan silników. Na poni�szym listingu zamiesz-czona jest metoda updateMotors().

Listing 14.7. Metoda updateMotors()

private void updateMotors() { try { if ((movementMask & MOTOR_B_FORWARD) == MOTOR_B_FORWARD) { motorB.setBackgroundResource(R.drawable.uparrow); MoveMotor(MOTOR_B,motorPower);

} else if ((movementMask & MOTOR_B_BACKWARD) == MOTOR_B_BACKWARD) { motorB.setBackgroundResource(R.drawable.downarrow); MoveMotor(MOTOR_B,-motorPower); } else { motorB.setBackgroundResource(R.drawable.stop); MoveMotor(MOTOR_B,0); }

Page 30: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.3. Budowanie aplikacji SenseBot 425

if ((movementMask & MOTOR_C_FORWARD) == MOTOR_C_FORWARD) { motorC.setBackgroundResource(R.drawable.uparrow); MoveMotor(MOTOR_C,motorPower);

} else if ((movementMask & MOTOR_C_BACKWARD) == MOTOR_C_BACKWARD) { motorC.setBackgroundResource(R.drawable.downarrow); MoveMotor(MOTOR_C,-motorPower);

} else { motorC.setBackgroundResource(R.drawable.stop); MoveMotor(MOTOR_C,0); } } catch (Exception e) { Log.e(tag,"B��d w updateMotors ::" + e.getMessage()); }}

W metodzie updateMotors() porównywane s� ��dania ruchu zdefiniowane w postacizmiennej movementMask, osobnej dla ka�dego z silników . Gdy zostanie znalezionapasuj�ca warto� — na przyk�ad gdy ustawiony jest bit MOTOR_B_FORWARD — w��czany jestdany silnik w zdefiniowanym kierunku i szybko�ci . Kierunek ujemny oznacza jazd�w ty�, a warto� szybko�ci jest skalowana do zakresu od 0 do 100. Dodatkowo aktualizo-wany jest interfejs u�ytkownika w po��czeniu z samymi silnikami, co daje u�ytkow-nikowi mo�liwie dok�adny obraz dzia�ania.

14.3.4. Komunikacja z robotem

Protokó� komunikacji pozwalaj�cy na interakcj� z robotem LEGO NXT sk�ada si�z polece� strukturalnych z opcjonalnym protoko�em odpowiedzi. Ka�dy pakiet danychjest umieszczony w kopercie opisuj�cej jego rozmiar. Wewn�trz koperty ka�de polecenieprotoko�u Direct Command posiada standardowy nag�ówek, po którym nast�puj� spe-cyficzne parametry. W aplikacji tej potrzebujemy tylko jednego polecenia — powodu-j�cego ustawienie stanu dzia�ania silnika. Kod pozwalaj�cy na zbudowanie i wys�anietych pakietów jest pokazany na poni�szym listingu.

Listing 14.8. Metoda MoveMotor

private void MoveMotor(int motor,int speed){ try { byte[] buffer = new byte[14]; buffer[0] = (byte) (14-2); //d�ugo�� lsb buffer[1] = 0; // d�ugo�� msb buffer[2] = 0; // polecenie Direct Command (z odpowiedzi�) buffer[3] = 0x04; // ustawienie stanu wyj�cia buffer[4] = (byte) motor; // wyj�cie 0, 1, 2 (silniki A, B, C) buffer[5] = (byte) speed; // moc buffer[6] = 1 + 2; // w��czenie silnika + hamulec pomi�dzy PWM buffer[7] = 0; // regulacja buffer[8] = 0; // rotacja skr�tu buffer[9] = 0x20; // stan dzia�ania buffer[10] = 0; // cztery bajty danych pozycji

Page 31: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

426 ROZDZIA� 14Bluetooth i sensory

buffer[11] = 0; // ustawione na zero buffer[12] = 0; buffer[13] = 0;

os.write(buffer); os.flush(); byte response [] = ReadResponse(4); } catch (Exception e) { Log.e(tag,"B��d w MoveForward(" + e.getMessage() + ")"); }}

Kod ten realizuje prost�, cho precyzyjn� operacj� formatowania polecenia wysy-�anego do robota LEGO, które zapewnia bezpo�redni� kontrol� nad silnikami. Na pocz�-tek deklarujemy bufor o odpowiedniej wielko�ci . Rozmiar tego bufora jest definio-wany przez polecenie SetOutputState, które jest jednym z wielu polece� obs�ugiwanychprzez robota. Ka�da z informacji jest umieszczana w odpowiednim miejscu bufora .Po sformatowaniu bufora polecenia jest on zapisywany do gniazda, a gniazdo opró�-niane . Kod odpowiedzi odczytywany przez metod� ReadResponse() jest znacznikiemprawid�owego odbioru polecenia. Jak si� okazuje, oprócz specyficznego formatowaniadanych steruj�cych robotem, wysy�anie i odbieranie danych poprzez Bluetooth jestrównie proste, co odczyt i zapis do bufora bajtów.

Na tym etapie czujniki dzia�aj�, a urz�dzenie Android i robot LEGO komunikuj� si�ze sob�. Z czasem, po nabraniu praktyki, mo�esz si� sta doskona�ym pilotem robotaLEGO. Pe�ny kod �ród�owy tej aplikacji jest dost�pny do pobrania.

14.4. Podsumowanie

W tym rozdziale wprowadzili�my dwie funkcje platformy Android zorientowane sprz�-towo: Bluetooth i czujniki. Z tych dwóch pozornie niezwi�zanych obszarów dzia�aniawyros�a aplikacja pozwalaj�ca na operowanie robotem LEGO Mindstorms NXT. Poka-zali�my tu najwa�niejsze kroki wymagane do po��czenia urz�dzenia Android ze zdal-nym partnerem obs�uguj�cym Bluetooth, z u�yciem protoko�u zast�puj�cego po��czeniekablowe, RFCOMM. Ten kana� komunikacyjny jest u�ywany do wymiany zestawu pole-ce� znanych jako protokó� Direct Command, udost�pniany przez kontroler LEGO NXT.Dzi�ki tym poleceniom mo�na manipulowa silnikami robota, wprawiaj�c go w ruch.Aby interfejs u�ytkownika by� mo�liwie intuicyjny, skorzystali�my z czujnika orientacji,wbudowanego w wi�kszo� telefonów z systemem Android, który pozwala na odczyty-wanie ruchów u�ytkownika. Po�o�enie urz�dzenia jest interpretowane i odpowiadaj�caim seria polece� jest wysy�ana do robota. Sensory nie tylko s� dobr� metod� sterowaniarobotem, ale równie� daj� du�o zabawy!

Oprócz komunikacji poprzez Bluetooth i u�ycia czujników w rozdziale tym poka-zali�my równie� techniki zapewniaj�ce intuicyjne informowanie u�ytkownika o opera-cjach wykorzystywanych przez aplikacj�. Na przyk�ad gdy silniki s� w��czone, u�ytkow-nik widzi na ekranie kierunek obrotu ka�dego z nich. Podobnie ruchy u�ytkownika s�przetwarzane wy��cznie w przypadku aktywnego po��czenia Bluetooth. Poniewa� jest to

Page 32: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

14.4. Podsumowanie 427

scenariusz sterowany zdarzeniami, aplikacja demonstruje nas�uch tych zdarze� poprzezdynamicznie rejestrowany obiekt BroadcastReceiver, z odpowiednimi filtrami intencji.

Mamy nadziej�, �e lekcja u�ycia komunikacji Bluetooth oraz czujników, przedsta-wiona w tym rozdziale, by�a ciekawa, a je�eli masz dost�p do robota LEGO Mindstorm,zach�camy do jazdy próbnej.

W nast�pnym rozdziale poka�emy inne sposoby pod��czania urz�dzenia Android dozewn�trznego �wiata — tym razem b�dziemy wykorzystywa mo�liwo�ci platformy dosynchronizowania danych z popularn� biznesow� witryn� spo�eczno�ciow� LinkedIn.

Page 33: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz

AAbleson Frank, 18AccountManager, 451adapter, 96, 112

ArrayAdapter, 96CursorAdapter, 96GalleryAdapter, 96ListAdapter, 96

adapter synchronizacji, 460Adaptive Multi-Rate (AMR), 282adb shell, 381adres URI, 40, 41, 49adresy IP, 193ADT, 80Advanced Audio Coding (AAC), 282Advanced Video Coding (AVC H.264), 282akcja, 131

EDIT, 41Intent.ACTION_CALL, 134, 226Intent.ACTION_DELETE, 134Intent.ACTION_EDIT, 134, 442Intent.ACTION_INSERT, 134, 441Intent.ACTION_VIEW, 133MAIN, 51, 128PICK, 41VIEW, 41

aktualizacja dynamiczna, 228aktualizowanie wid�etów, 529, 534aktywno�ci, 92, 103

dzia�aj�ce, 52niedzia�aj�ce, 52u�pione, 53

aktywno�CloseJob, 366FieldService, 340, 343, 344ManaageJobs, 340ManageJob, 372ManageJobs, 359MapViewActivity, 316, 318RefreshJobs, 355ShowJob, 340, 362ShowSettings, 340SiteMonitorConfigure, 539SMSNotifyActivity, 239Splash, 339, 340, 341

alarm, 247, 531ELAPSED_REALTIME, 250ELAPSED_REALTIME_WAKEUP, 250RTC, 250RTC_WAKEUP, 250

AMR-NB, 282AMR-WB, 282analiza pliku uk�adu XML, 120

Page 34: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

610 Skorowidz

analizowanie danych intencji, 136Android, 30Android Cloud to Device Messaging (C2DM), 232Android Debug Bridge, 69, 606Android Interface Definition Language (AIDL), 130

pakiety i interfejsy, 149typy danych, 149

Android Market, 36, 603Android Open Source Platform (AOSP), 35Android SDK, 57, 60, 68, 89, 378, 585animacja

<alpha>, 125<rotate>, 126<scale>, 125<translate>, 126

animacja poklatkowa, 261Ant in Action

Second Edition of Java Development with Ant, 79API, 81

AhhtClient, 201Apache HttpClient, 199GData, 212Google Base Atom, 105graficzne, 256java.net, 199OpenGL ES, 268Yahoo! Weather, 130

aplikacjaAndroid

kod �ród�owy, 341okre�lanie procesów, 337pliki zasobów, 339podstawowe wymagania, 333sposoby przesy�ania danych, 350

AppWidgetHost, 505Dev Tools, 464hybrydowa, 487, 489klient-serwer, 195konsolidowana statycznie, 381mobilnego serwisanta, 332OCR, 560SenseBot, 417, 420serwera DayTime, 393, 399SiteMonitor, 509–515

interfejs u�ytkownika, 509podstawy architektury, 515schemat projektu, 513

UA2EFindingEdges, 563aplikacje integracyjne, 465aplikacje systemu, 52aplikacje u�ytkownika, 67

architektura aplikacji i integracji, 335argument

argc, 380, 390argv[], 380, 390

arkusze stylów, 474arkusze stylów dedykowane, 475arm-nonelinux-gnueabi-gcc, 379arm-none-linux-gnueabi-ld, 379arm-none-linux-gnueabi-objdump, 379atrybut

androidid, 75text, 552

autoLink, 511media, 475updatePeriodMillis, 528

atrybuty, 113atrybuty animacji

duration, 126interpolar, 126startOffset, 126

Authentication key (Ki), 220AVD Manager, 588

Bbaza danych, 174

otwieranie bazy danych, 481baza danych kontaktów, 443baza danych MySQL, 373baza danych SQLite, 396bezpiecze�stwo transmisji danych, 334bezpiecze�stwo urz�dzenia, 334biblioteka

JNI, Java Native Interface, 563, 565PhoneGap, 494Stagefright, 37, 282NDK, 562przetwarzaj�ca obraz, 565testowa PV, 282uruchomieniowa, 37

biblioteki, 37OpenCORE, 37OpenGL ES, 37Scalable Games Language (SGL), 37Secure Socket Layer (SSL), 37SQLite, 37, 398WebKit, 37systemowe Androida, 385, 390

BlackBerry, 34Bluetooth, 190, 409

Page 35: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 611

BOOT_COMPLETED, 143budowanie dynamicznej wersji aplikacji, 387bufor g��bi, 275Burnette Ed, 65

CCDMA, Code Division Multiple Access, 218–220cross-kompilacja, 382cross-kompilator, 379CSS, 466cykl �ycia aktywno�ci, 100

faza ca�ego cyklu �ycia, 101faza dzia�ania, 101faza widoczno�ci, 101

cykl �ycia aplikacji, 92cykl �ycia synchronizacji, 458czujnik orientacji, 417, 418czujniki systemu Android, 417

Ddane, 131

binarne, 49instancyjne i metody klasy SiteMonitorModel, 516lokalizacji, 311POST, 372SensorEvent, 424tekstowe, 358wid�etu, 526XML, 352

datagram, 192DDL, 398DDMS, 381debugowanie aplikacji, 86, 464definiowanie

animacji, 125CONTENT_URI oraz MIME_TYPE, 182intencji, 131kolorów, 123kont, 448plików XML, 125stylów, 123surowych plików, 125tablic, 124uk�adu i widoków, 95widoków i uk�adów w zasobach XML, 120wymiarów, 123

Delicious, 209deskryptor aplikacji, 51deskryptor intencji, 46

Developer Network, 437dezasemblacja pliku wykonywalnego, 391diagram klas API widoków, 104dodawanie

kontaktów, 444��czy zewn�trznych, 132wid�etu do ekranu g�ównego, 506

dokumentacja Android SDK, 60dostawca

LocationManager.GPS_PROVIDER, 314LocationManager.NETWORK_PROVIDER, 314LocationManager.PASSIVE_PROVIDER, 314tre�ci, 49

dost�p do sieci, 190drzewo hierarchiczne, 113drzewo widoków, 120dynamiczny interfejs u�ytkownika, 96dystrybucja aplikacji Android, 596, 606dziennik systemu, 45

EEclipse IDE, 585Eclipse in Action

A Guide for Java Developers, 65ekran, 93, 113

dyspozytora, 373g�ówny, 343MapViewActivity, 318powitalny, 341startowy, 341ustawie�, 346ustawie� Bluetooth, 411

eksportowanie us�ugi, 152Electronic Serial Number (ESN), 220element

MIME, 182<activity>, 127<application>, 127<array>, 125<dimen>, 123<intent-filter>, 128, 135<manifest>, 127<userpermission>, 127<uses-permission>, 128div, 480ImageView, 576manifest, 51ProgressDialog, 366TextView, 400, 487uses-library, 319VideoView, 285, 286

Page 36: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

612 Skorowidz

elementyintencji, 131menu, 98podrz�dne <item>, 125

emulator, 295, 305emulator Android, 62, 80, 288, 292, 381, 588emulator-tcp5554, 65encje, 335etykiety, 122

Ffigura

GL_LINE_LOOP, 273GL_LINE_STRIP, 273GL_LINES, 273GL_POINTS, 273GL_TRIANGLE_FAN, 273GL_TRIANGLE_STRIP, 273GL_TRIANGLES, 273

figury proste OpenGL ES, 273filtr intencji, 41, 130, 135, 539filtrowanie informacji, 78fokus, 115

typ DEFAULT_FOCUS, 115typ WEAK_FOCUS, 115

folder src, 72format

.dex, 79AARRGGBB, 576GPS Exchange, 307ISO, 543JSON, 336Keyhole Markup Language (KML), 309@string/<identyfikator>, 552

formatowanie numerów telefonów, 228forum WWW, 23funkcja

alert(), 492converttogray(), 567, 569deleteAllRecords(), 484detectedges(), 569exit(), 390file_get_contents(), 375getJobsXML(), 375glDrawArrays(), 274GLU.gluLookAt(), 278gluPerspective(), 276

parametr aspect, 276parametr fovy, 276parametr gl, 276

parametr zFar, 276parametr zNear, 276

htons(), 396LogCat(), 567main(), 380, 392RecordHit(), 396saveRecord(), 484SetSearchTerm(), 491, 493toString(), 359transaction(), 482wait(), 495

funkcje debugowania, 86funkcje eksportu i importu danych, 598funkcje gniazd, 396funkcje lokalizacyjne, 304funkcje �rodowiska Eclipse, 63funkcje telefoniczne, 221

GGallardo David, 65geokodowanie, 325globalne dane stanu, 98gniazdo, 199gniazdo serwera, 196Google Maps, 82, 304GPS, 33GSM, Global System for Mobile

Communications, 218

Hhas�o, 450Hatcher Erik, 79hierarchiczna struktura widoków, 92hierarchiczne drzewo elementów View, 103HTML, 466HTTP, HyperText Transfer Protocol, 190, 199HttpClient, 201

IICANN, Internet Corporation

for Assigned Names and Numbers, 194IDE Eclipse, 63identyfikator

kontaktu, 439, 441numeryczny wid�etu, 515php input, 375procesu, 66u�ytkownika, 79, 373, 450

Page 37: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 613

IDL j�zyk definicji interfejsu, 148implementacja biblioteki, 567implementacja interfejsu u�ytkownika, 346informacja o lokalizacji, 309instalacja

ADT, 590Android SDK, 584CodeSourcery, 379Eclipse, 584wtyczki ADT dla Eclipse, 584, 590

instancjaAVD, 81klasy android.media.MediaRecorder, 293, 297MediaPlayer, 284

instrukcjaimport, 77return, przepe�nienie stosu, 390

Integrated Circuit Card Identifier (ICCID), 220intencja, 39, 41, 130

inicjowanie akcji, 133Intent.ACTION_CALL, 134, 226Intent.ACTION_DIAL, 134, 226jawna, 42mechanizmy rozpoznawania, 132metody do rozg�aszania, 142niejawna, 42wbudowana, 131wype�nianie danych, 134wywo�anie jawne, 132wywo�anie niejawne, 131, 134zdefiniowana, 43

interfejs, 148IBinder, 150LocationListener, 317programowy aplikacji (API), 81SensorEventInterface, 418SurfaceHolder, 271u�ytkownika, 44, 77u�ytkownika dyspozytora, 372zdalny, 148, 151

IMEI, International Mobile Equipment Identity, 220IMSI, International Mobile Subscriber Identity, 220International Telecommunication Union H.263

(H.263), 282IP, Internet Protocol, 190IPC, 148iPhone, 34

Jjarsigner, 600Java Development Tools (JDT), 64Java ME, 39Java Micro Edition, 34JavaBean, 98Javadoc, 60, 588JavaScript, 466j�dro systemu Linux, 36jednow�tkowo� interfejsu, 117j�zyk C, 378j�zyk Java, 57JPEG, Joint Photographic Experts Group, 282JQuery, 468JRE, 584

Kkana� alfa, 568karta SD, 171karta SIM, 220katalog

android, 599app, 67drawable, 262build, 562gen, 149jni, 565libs, 565platforms, 587res, 73, 117res/anim, 125, 262res/drawables, 73res/layout, 54, 73, 121res/raw, 168, 283res/values, 74, 123, 547samples, 589sdcard, 295shared_prefs, 164system/lib, 385tools, 68, 305, 589

katalog docelowy, 383kategoria, 41

CATEGORY_LAUNCHER, 41LAUNCHER, 128

keytool, 599King Chris, 18klasa

Activity, 44, 181AlarmManager, 247, 253AlertDialog, 99

Page 38: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

614 Skorowidz

klasaandriod.content.ContentValues, 293android.app.Activity, 94android.util.Log, 46Application, 574AppWidgetManager, 514AppWidgetProvider, 505, 506, 514, 519

metoda checkForZombies, 520metoda onDeleted, 520metoda onDisabled, 520metoda onEnabled, 520metoda onReceive, 520metoda onUpdate, 520metoda UpdateOneWidget, 520

Binder, 128Bluetooth, 410BroadcastReceiver, 46, 143, 240Bundle, 350Camera, 287ConnectivityManager, 190, 195ContentProvider, 49, 180–188, 516ContentResolver, 49Context, 46, 167Criteria, 314Cursor, 49DoCloseJob, 370Drawable, 257DrawSurfaceView, 276FieldService, 344Geocoder, 305, 325, 326GeoPoint, 319Handler, 109, 201, 265Intent, 40, 57, 133IntentFilter, 40ItemizedOverlay, 322java.text.DecimalFormat, 549java.text.DecimalFormatSymbols, 549java.text.SimpleDateFormat, 549java.util.Formatter, 554java.util.GregorianCalendar, 549java.util.Locale, 549JobEntry, 349JobList, 350JobListHandler, 352LayoutParams, 113Locale, 546LocationListener, 315LocationManager, 304, 311, 313LocationProvider, 311, 314Log, 78Looper, 109, 358

MapActivity, 317, 318, 319MapController, 319MapView, 317, 319MapViewActivity, 312MediaRecorder, 292Message, 265Notification, 242, 243, 253NotificationManager, 47, 253Overlay, 319OverlayItem, 322PhoneNumberUtils, 227PhoneStateListener, 218Prefs, 343R, 56, 77, 120R.java, 92RefreshJobs, 356RemoteViews, 524Requester, 401ResponseHandler, 201Sensor, 417SensorEvent, 417SensorEventListener, 417SensorManager, 416, 417Service, 45SharedPreferences, 343, 519SiteMonitorConfigure, 514SiteMonitorBootstrap, 514, 533SiteMonitorModel, 514, 516, 529SiteMonitorWidget, 513SiteMonitorWidgetImpl, 514, 520SmsManager, 231SmsMessage, 231, 238Stub, 149SurfaceView, 271TelephonyManager, 218, 222Toast, 238, 241UA2EFindEdgesApp, 574UAChrome, 500View, 103, 368ViewGroup, 113WeatherAlertService, 141, 147WebChromeClient, 500WTApplication, 491, 496

klasa bazowaBroadcastReceiver, 143ItemizedOverlay, 322LayoutParams, 113OverlayItem, 322

klasa dziedzicz�ca, 45klasa globalna WTApplication, 491, 496klasa mened�era informacji, 221

Page 39: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 615

klasa odbiornika, 144klasa pochodna, 95klasa pomocnicza, 203klasa wewn�trzna, 113klasa zasobów aplikacji, 118klauzula

Order By, 49Where, 49

klient, 194J2ME, 215DayTime, 400, 402

klikni�cie, 40klucz API Google Maps, 319kod

bajtowy, 38nas�uchu, 78natywny, 576obs�ugi ekranu, 94odpowiedzi, 426PHP aplikacji dyspozytora, 374PHP do integracji z aplikacj� mobiln�, 375serwera, 372startowy, 391symulatora, 81z JavaScript, 491

kodeki d�wi�ku, 282kodeki mowy, 282kodery oraz dekodery wideo, 282kolejkowanie podpisów, 368kompilator gcc, 379kompilowanie biblioteki JNI, 571kompilowanie pliku, 386komponent ListView, 105komponent Observable, 116komponenty widoku, 119komunikat skr�tu w lewo, 421komunikat Toast, 238konfigurowanie

instancji wid�etu, 527karty SD, 286obiektu Handler, 342opcji budowania, 580strumienia wej�ciowego, 415�rodowiska emulowanego, 81wtyczki Eclipse, 592

konsolidowanie programu, 386konstruktor klasy ReviewAdapter, 112kontakt wywo�any z aplikacji, 442kontener, 95kontener ViewGroup, 113konto Google, 433

konto Microsoft Exchange, 433kontrolka

EditText, 510przegl�darki, 468, 487, 489WebView, 488

korze� drzewa widoków, 121kraw�dzie obrazu, 576kreator projektu aplikacji, 72kwalifikatory do organizowania

i definiowania zasobów, 551

Llicencja

Apache Software License (ASL), 35General Public License (GPL), 35u�ytkownika (EULA), 597License Verification Library (LVL), 602

LinkedIn, 430, 436interfejs u�ytkownika, 451logowanie, 453synchronizowanie danych, 459tworzenie konta, 450uwierzytelnianie, 451

linker, 379, 386–387, 399lista recenzji, 105lista zlece�, 336, 352localhost, 71Location Area Identity (LAI), 220LogCat, 596lokalizacja dok�adna (FINE), 315lokalizacja zgrubna (COARSE), 315lokalizowanie

aplikacji, 550aplikacji Android, 542kodu Java, 553

lokalna baza danych SQL, 477Loughran Steve, 79

���cze symboliczne do katalogu, 561��czenie i rozdzielanie kontaktów, 435��czenie danych z widokiem, 112��czenie surowych danych kontaktów, 435

Mmacierz to�samo�ci, 274magazyn kluczy, 599magazyn SharedPreferences, 514

Page 40: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

616 Skorowidz

manifest dostawcy tre�ci, 187MapView, 324maszyna Java, 57maszyna wirtualna Dalvik, 37, 39McGovern Robert, 65mechanizm pó�nego ��czenia, 134mechanizm rejestrowania, 46mechanizm SharedPreferences, 188mened�er SMS, 232menu

Develop, 485Favorites, 86Favorites Debug, 86Favorites Run, 86Window, 86

metadane wid�etu, 527metoda

addAccount(), 456addToDB(), 294AndroidBitmap_getInfo(), 569asInterface(), 150beginRecording, 300Binder.onTransact(), 151cancel(), 247Canvas.drawColor(), 370checkForZombies(), 522confirm(), 501Context.bindService(), 153Context.startService(), 156Context.stopService(), 156detectedges(), 577draw(), 324execute(), 206findViewById(), 122findAll(), 499findViewById(), 54, 78formatNumber(), 228GET, 207getAppWidgetIds(), 524getAvtivity(), 525getDataFromSite(), 537getDefault(), 546getDefaultSensor(), 417getFormattedDate(), 519getInstance(), 524getProvider(), 313getSharedPreferences(), 160getSystemService(), 195getter(), 574getText(), 55, 78getView(), 112

glVertexPointer(), 274handleDisconnected(), 419handleConnected(), 415handleDisconnect(), 422handleDisconnected(), 415handleMessage(), 110loadReviews(), 108, 109managedQuery(), 181MediaRecorder.setAudioEncoder(), 293, 297MediaRecorder.setOutputFormat(), 293, 297MediaRecorder.setAudioSource(), 293, 297MediaRecorder.setPreviewDisplay(), 293, 297MediaRecorder.setVideoEncoder(), 297MediaRecorder.setVideoSource(), 297nextFocusDown(), 115nextFocusLeft(), 115nextFocusRight(), 115nextFocusUp(), 115onActivityResult(), 365, 438, 576onBind(), 46OnClickListener(), 78onCreate(), 95, 100–101, 401onCreateOptionsMenu(), 368onDeleted(), 522onDestroy(), 101, 530onDisabled(), 523onDraw(), 112, 370onJsAlert(), 500onKeyDown(), 291onLayout(), 112onListItemClick(), 108onMeasure(), 112onPageFinished(), 496onPageStarted(), 496, 499onPause(), 100, 319onPrrformSync(), 459onReceive(), 47, 522–523, 531onReceivedSslError(), 496onRestart(), 101onResume(), 101, 319onSensorChanged(), 418, 423onServiceConnected(), 153onStart(), 101onStop(), 101, 419onUpdate(), 522, 525, 531onVisibilityChanged(), 112openInputStream(), 49PlaceCall(), 491prepare(), 284, 293ProgressDialog.show(), 109ReadResponse(), 426

Page 41: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 617

release(), 293requestLocationUpdates(), 317Resources.getXml(), 125Resources.openRawResource(), 125run(), 110saveWidgetData(), 519sendBroadcast(), 142sendDataMessage(), 231sendEmptyMessage(), 110sendEmptyMessageAtTime(), 110sendEmptyMessageDelayed(), 110sendMessage(), 110sendMultipartTextMessage(), 231sendOrderedBroadcast(), 142sendStickyBroadcast(), 142sendTextMessage(), 231set(), 247setAlarm(), 534setContentView(), 54setContentView(), 95, 524setInt(), 525setListAdapter(), 109setOnClickListener(), 525setOnClickPendingIntent(), 525setOnFocusChangedListener(), 115setRepeating(), 247setResult(), 47setter(), 574setText(), 78setTimeZone(), 247setVideoSize(), 297start(), 284, 293startActivity(), 44startActivityForResult(), 44startService(), 46stop(), 293stopSelf(), 536System.loadLibrary(), 566tap(), 324toString(), 546touch(), 324transaction(), 482

funkcja wywo�ywana po wykonaniu instrukcjiSQL, 483

parametryzowana instrukcja SQL, 482procedura obs�ugi b��dów, 484tablica obiektów JavaScript, 482

updateMotors(), 424updateOneSite(), 537UpdateOneWidget(), 525validate(), 99

View.requestFocus(), 115metody

cyklu �ycia aktywno�ci, 101cyklu �ycia aplikacji, 95cyklu �ycia widoku, 112lokalizacji, 304statyczne klasy SiteMonitorModel, 517uzyskania referencji obiektów

LocationProvider, 314w API klasy bazowej View, 105w klasie TextView, 105wywo�ania zwrotnego, 523

Microsoft Exchange, 34Mobile Equipment Identity (MEID), 220mobilne aplikacje WWW, 485modu� rozszerzaj�cy Android Development Tools

(ADT), 60modyfikowanie danych kontaktowych, 444MP3, Moving Picture Experts Group Audio Layer 3,

282MPEG-4, Moving Picture Experts Group 4, 282MXL, 209

Nnadmiarowe instrukcje, 596nadpisywanie funkcji przegl�darki, 487nag�ówek content-type, 206NANP, North American Numbering Plan, 229narz�dzia wiersza polece� Codesourcery, 381narz�dzie

adb, 382, 589, 607Android Asset Packaging Tool, 69arm-none-linux-gnueabi-objdump, 391Error Console, 485GUI Layout, 76mksdcard, 171objdump, 379telnet, 48, 71, 307Web Inspector, 485

nas�uch, 105nas�uch zdarze�, 116nas�uch ��da� intencji, 135National Data Buoy Center (NDBC), 304NDK, Android Native Development Kit, 378,

560–577ndk builder, 577NDK w Eclipse, 577NTLM, Windows NT Lan Manager, 206

Page 42: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

618 Skorowidz

Oobiekt

AccountManager, 455Activity, 41, 136, 232Adapter, 107Application, 499Binder, 449BluetoothDevice, 414Broadcast, 232BroadcastReceiver, 41, 136, 142, 532Bundle, 102, 143, 361Button, 55Canvas, 257DefaultHttpClient, 206Drawable, 266FileInputStream, 352, 372GeoPoint, 305, 326grabReviews, 95Handler, 107, 109, 119HandlerThread, 110Intent, 41IntentFilter, 48, 135, 136java.net, 200JNIEnv, 566JobList, 354JobListHandler, 352JsResult, 501LayoutParams, 113ListView, 106

w�a�ciwo�ci, 108LocationListener, 317LocationManager, 141, 317LocationProvider, 317Looper, 110NetworkInfo, 195Notification, 245null, 494Observer, 116OnFocusChangeListener, 115Overlay, 304, 321, 326PendingIntent, 232, 314, 525PhoneStateListener, 218Prefs, 348, 368ProgressDialog, 357RemoteViews, 524ReviewListView, 111Runnable, 110SensorManager, 416Service, 41, 136, 232SharedPreferences, 160

Spinner, 96Toast, 441Uri, 131View, 44

w�a�ciwo�ci, 122ViewGroup, 113WebView, 501WebViewClient, 496

obiekt nas�uchu, 285, 317obiekt nas�uchu zdarze� telefonicznych, 221obiekt obs�ugi JavaScript, 489obiekt uwierzytelniania, 206obs�uga

b��du, 361intencji, 43interfejsu u�ytkownika, 43kamery, 287OpenGL, 267transakcji wymiany danych, 335wid�etów zombie, 523wielu kont, 433zlecenia, 362��da� intencji, 135

odbieranie wiadomo�ci SMS, 230, 233, 239odbiornik aktualizacji lokalizacji, 315odbiornik intencji, 240odbiornik SiteMonitorBootstrap, 539odcisk MD5 certyfikatu, 320odczyt warto�ci czujnika, 418oddzielanie litera�ów znakowych od kodu, 122odtwarzanie przyrostowe, 282odtwarzanie strumieniowe, 282odtwarzanie wideo, 285odwo�anie, 121odwo�anie typu int, 122odwrotne geokodowanie, 325okno pow�oki komputera Linux, 382okno wiersza polece�, 382okre�lanie pasuj�cych akcji i kategorii, 136okre�lanie pasuj�cych intencji, 136opcja

-c, 386-static, 381Konta, 448push, 383Reset Perspective, 65shell, 383Show View, 65viewport, 470linkera, 389wiersza polece�, 84znacznika meta viewport, 472

Page 43: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 619

Open Headset Alliance, 32OpenCORE, 282OpenGL, 256OpenGL ES, 256, 267, 268, 279operacje CRUD, 185

Ppakiet, 192

Android Native Development Kit (NDK), 378,560–577

android.app, 44, 61android.app.Service, 46android.bluetooth, 61, 409android.content, 61android.gesture, 61android.graphics, 61, 256android.hardware, 416android.location, 61android.net, 61android.opengl, 61android.os, 61android.provider, 62android.telephony, 62, 222, 231android.text, 62android.util, 62android.view, 62, 103android.webkit, 62, 487, 488, 496android.widget, 62, 112com.google.android.maps, 319com.msi.manning.nlockingandroid, 48java.io, 61java.lang, 61java.math, 61java.net, 61java.text, 61javax.net, 61javax.security, 61javax.xml, 61kSOAP, 215org.apache, 61org.xml, 61Sourcery G++, 379

pakiet graficzny, 256panel Emulator Control, 305parametr

Class, 132ComponentName, 132data, 232deliveryIntent, 232destinationAddress, 232

destinationPort, 232scAddress, 232sentIntent, 232user agent, 473wipe-data, 84

parowanie urz�dzenia, 412parser SAX, 106, 352parsowanie numerów telefonów, 228PDU, 234, 241PendingIntent, 232perspektywa, 63

DDMS, 65, 225, 295, 305, 382Debug, 86Eclipse, 88Java, 64OpenGL, 276

p�tla zwrotna, 71, 193, 197Phone 7, 34PID aplikacji, 66platforma, 31platforma LinkedIn, 430platforma multimedialna, 282plik

.aidl, 149addjob.php, 374android.jar, 44, 73, 589Android.mk, 565AndroidManifest.xml, 41, 46–47, 51, 72, 93, 126,

238, 293, 296, 339–340, 423, 516, 538, 597arrays.xml, 124BounceActivity.java, 264BounceView.java, 266ChapterTwo.java, 72CloseJob.java, 339closejob.php, 374, 375colors.xml, 123corestuff.css, 474db.html, 480db.js, 480db.php, 374debug.keystore, 599dimens.xml, 123eclipse.exe, 585export.php, 374FieldService.java, 339, 343, 344footer.php, 374getjoblist.php, 374, 375handheld-small.css, 475header.php, 374index.html, 489index.php, 374

Page 44: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

620 Skorowidz

plikjni.h, 566JobEntry.java, 339JobList.java, 339JobListHandler.java, 339libua2efindedges.so, 572main.xml, 54, 74, 516, 572make, 571manage.php, 374ManageJobs.java, 339monitor.xml, 516output.txt, 565Prefs.java, 339R.class, 75R.java, 55, 73, 338, 339, 554RefreshJobs.java, 339releasekey.keystore, 599review_criteria.xml, 96savejob.php, 374screen.css, 475screenfonts.css, 475SDK Setup.exe, 587ShowJob.java, 339showjob.php, 374ShowSettings.java, 339Simple_animation.xml, 262SiteMonitorBootstrap.java, 516, 532SiteMonitorConfigure.java, 516SiteMonitorModel.java, 516SiteMonitorService.java, 516sitemonitorwidget.xml, 516, 527SiteMonitorWidgetImpl.java, 516Splash.java, 339splash.xml, 341strings.xml, 56, 437, 516, 547, 551styles.xml, 124ua2efindedges.c, 567, 572updatejob.php, 374utils.php, 374xmldrawable.xml, 259

plik deskryptora aplikacji, 128plik instalacji, 71plik nag�ówkowy, 380plik wsadowy, 78, 387plik wynikowy, 79plik zasobu XML, 95pliki

AIDL, 148APK, 600class, 79CSS, 473

dex, 39, 79ELF, 391GPX, 307JAR, 437KML, 310PNG, 265XML, 79, 95zasobów ze stylami, 124

pobieranie napisu, 554podmenu Open Perspective, 86podpisywanie cyfrowe aplikacji, 599pola klasy Notification, 243pole

accuracy, 418Latitude, 306Longitude, 306Sensor, 418timestamp, 418values, 418

pole kategorii, 41polecenia pow�oki, 71po��czenia Bluetooth, 410po��czenie sieciowe

EDGE, 81EVDO, 81GPRS, 81

po��czenie szyfrowane SSL, 334po�o�enie u�ytkownika na mapie, 322port 5037, 71port TCP 1024, 394porty, 194

dynamicznie przydzielane, 194prywatne, 194rejestrowane, 194zarezerwowane, 194

POSIX, Portable Operating System Interfacefor UNIX, 196

powiadomienia, 243debugowania, 596na pasku stanu, 244o alarmie na pasku stanu, 253

powiadomienie Toast, 244, 494, 498POX, 209POX XML over HTTP, 191pó�ne do��czanie, 43pracownik mobilny, 333, 334, 336procedura startowa, 390proces AIDL, 150program

aapt, 69, 118adb, Android Debug Bridge, 69, 387, 399AVD Manager, 81

Page 45: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 621

netstat, 71pocztowy POP3, 447SDK and AVD Manager, 81sqlite3, 179

programowanie WWW, 466projekt

SiteMonitor, 508linkedin-j, 437open source PhoneGap, 494

protokó�Atom Publishing (AtomPub), 212bezprzewodowy Bluetooth, 409Direct Command, 426IP, 192komunikacji z robotem, 425

Prototype, 468przechwytywanie

alarmu, 249mediów, 287podpisu, 366po��cze�, 229rozmów, 226zdarze�, 116, 370zdarze� Bluetooth, 414

przeci��ony konstruktor klasy, 42przep�yw danych pomi�dzy central� a

pracownikiem mobilnym, 335przep�ywy sterowania w aplikacji serwisowej, 337przesy�anie danych do serwera, 366przetwarzanie obrazu

interfejs u�ytkownika, 572przyciski ekranowe, 98przyk�adowe dane aplikacji, 596Pseudo Electronic Serial Number (pESN), 221publikowanie w Android Market, 602puste procesy, 53

Rreferencja

do adaptera, 414do AppWidgetManager, 526do danych osoby, 442do obiektu AlarmManager, 534do obiektu Application, 577do OutputStream, 370do progresshandler, 359do samej siebie (this), 99

rejestr filtrów intencji, 135rejestracja nas�uchów, 317rejestracja zdarze� czujnika, 419

rekord kontaktu, 41rekord o sta�ej d�ugo�ci, 432rekord otwarty, 431relacje mi�dzy aktywno�ciami, widokami,

zasobami, 92repozytorium, 447REST, 209, 211

POST, 207, 212PUT, 212GET, 212DELETE, 212

REST, Representational State Transfer, 191RFC, Requests for Comments, 199RFCOMM, 409robot LEGO Mindstorms NXT, 420, 426routing pakietów, 193rozg�aszanie akcji, 143rozg�aszanie intencji, 142rozmiary widoku, 114rozmiary aktualne widoku, 114rozpoznawanie intencji, 137rozszerzanie klasy WebViewClient, 500rozszerzanie przegl�darki, 496rysowanie przy u�yciu XML, 257

Sschemat, nazwa i �cie�ka w adresach URI, 136selektywne �adowanie tre�ci, 472Selman Daniel, Java 3D Programming, 279Sen Robi, 18SenseBot

interfejs u�ytkownika, 420Serial Port Profile (SPP), 409serwer, 194, 197serwer czasu, 378serwer DayTime, 393, 403serwer korzystaj�cy z gniazd TCP, 394sieci telefoniczne, 218silnik JavaScript, 467silnik przegl�darki WebKit, 33, 466skalowanie, 472skalowanie widoku, 126skrypt budowania, 399skrypt budowania aplikacji, 384skrypt ndk-build, 572skrzynka SMS, 247smartfon, 32, 430SmartPhone, 34SMS, Short Message Service, 230SMTP, Simple Mail Transfer Protocol, 193

Page 46: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

622 Skorowidz

SOAP, Simple Object Access Protocol, 191, 209,215–216, 335

specyfikacja 3GPP, 3rd Generation PartnershipProject, 234, 282

sprawdzanie po��czenia sieciowego, 195SQLite, 174, 188sqlite3, 179Stagefright, 283sta�a

Context.MODE_PRIVATE (), 163Context.MODE_WORLD_READABLE (), 163Context.MODE_WORLD_WRITEABLE (), 163FILL_PARENT, 114MIME_TYPE, 437UPDATE_FREQUENCY, 533WRAP_CONTENT, 114

stan od��czenia, 422stan procesów, 100stan telefonu, 224standard pkzip, 79sterowanie robotem, 423stos, 36, 37stos TCP/IP, 194struktura drzewiasta, 96styl lokalny, 124Symbian, 34symbol @, 51, 56symulator, 81synchronizacja, 447, 458, 465synchronizacja i wspó�dzielenie danych, 404synchronizowanie kont, 458system centralny, 333system komunikacji mi�dzyprocesowej (IPC), 128system OpenCORE, 282

��cie�ka logiczna android_asset, 489�rodowisko

emulowane, 67programistyczne, 584

Ttabela raw_contacts, 434tabela tbl_jobs, 373TCP, 193TCP/IP, Transmission Control Protocol/Internet

Protocol, 192TDMA, Time Division Multiple Access, 219technologia zarz�dzania bazami danych, 477

telefonia, 218telefony

Android, 218CDMA, 232GSM, 232

telnet, 48, 71, 307tematy, 124test g��bi, 276testowanie

aktywno�ci, 598aplikacji w emulatorze, 85klienta DayTime, 403regresyjne aplikacji, 598wiadomo�ci SMS, 48

tryb macierzy GL_PROJECTION, 274tryb mapy, 321tryb projektowania, 79tworzenie

aktywno�ci, 93animacji, 125, 261animacji za pomoc� kodu, 263aplikacji multimedialnych, 301aplikacji WWW, 468dostawcy tre�ci, 182klasy Activity, 94klucza, 599konfiguracji uruchamiania emulatora, 82konta LinkedIn, 450kontekstu OpenGL, 268nowego kontaktu, 441nowego urz�dzenia AVD, 83odbiornika, 143prostok�ta z wykorzystaniem figur prostych

OpenGL, 272strumieni wej�cia i wyj�cia, 416trójwymiarowych kszta�tów, 275wid�etu, 508w�asnych widoków, 111

typ danychGL_BYTE, 274GL_FLOAT, 274GL_SHORT, 274

typ MIME, 136typ tablicy GL_VERTEX_ARRAY, 274typy alarmów, 250

UU.S. National Oceanic and Atmospheric

Administration (NOAA), 304uchwyt transakcji bazy danych, 483

Page 47: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

Skorowidz 623

UDP, User Datagram Protocol, 193uk�ad FrameLayout, 113uk�ad LinearLayout, 113uk�ad RelativeLayout, 113uk�ady, 113umieszczanie aplikacji w Android Market, 603URI, Uniform Resource Identifier, 40, 212URL, Uniform Resource Locator, 40uprawnienie android.permission

.CALL_PHONE, 128, 224

.CALL_PRIVILEGED, 224

.MODIFY_PHONE_STATE, 224

.PROCESS_OUTGOING_CALLS, 224

.READ_PHONE_STATE, 224

.READ_SMS, 233

.RECEIVE_SMS, 233

.SEND_SMS, 233

.WRITE_CONTACTS, 443

.WRITE_SMS, 233uprawnienie

AUTHENTICATE_ACCOUNTS, 450BLUETOOTH, 409, 416CAMERA, 296GET_ACCOUNTS, 450MANAGE_ACCOUNTS, 450READ_PHONE_STATE, 224RECORD_AUDIO, 296USE_CREDENTIALS, 450WRITE_EXTERNAL_STORAGE, 296WRITE_SETTINGS, 450

urz�dzenie wirtualne Android, 306urz�dzenia AVD, 83us�uga, 531

AccountManager, 449prognozy pogody, 144SiteMonitorService, 514, 534, 539WeatherAlertService, 144

us�ugi, 52cykl �ycia, 156uruchamianie i do��czanie, 155sieciowe, 190, 209wi�zania, 148

ustawienia regionalne, 543, 546uwierzytelnianie

bazuj�ce na formularzu, 206konta, 449podstawowe, 206w LinkedIn, 451

u�ytkownik mobilny, 474

VVideoView, 285, 297

Wwarstwa, 192

abstrakcji, 36aplikacji, 192danych, 49komunikacyjna, 128po��czenia, 192sieci, 192transportowa, 192

warto� identyfikatora zlecenia, 375w�tek, 109, 358w�tek g�ówny interfejsu u�ytkownika, 109, 204w�ze�, 192wideotelefonia, 282widok, 92, 103

cuisine, 95Devices, 65EditText, 54EditView, 54Emulator Control, 67File Explorer, 67grabReviews, 95Javadoc, 64LinearView, 55location, 95LogCat, 66, 77MapView, 304, 319Package Explorer, 64, 72Problems, 64

widokipodrz�dne, 113statyczne, 96z�o�one, 112

wid�et, 504wiersz polece�, 71Wi-Fi, 190WiMAX, Worldwide Interoperability for

Microwave Access, 190Windows Mobile, 34w�a�ciwo�ci ListView, 108w�a�ciwo�ci View, 122wspó�rz�dne geograficzne, 306wstawianie danych do bazy danych, 394wstawianie i usuwanie wierszy, 484wyczerpywanie zasobów systemu, 52wykonanie zdj�cia, 574wykrywanie kraw�dzi, 560, 576

Page 48: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i

624 Skorowidz

wykrywanie kraw�dzi metod� Sobela, 560wymagania funkcjonalne, 336wynik aktywno�ci

RESULT_CANCELED, 530RESULT_OK, 530

wysy�anie wiadomo�ci SMS, 231wywo�ania zwrotne cyklu �ycia, 100wywo�anie

characters(), 354endElement(), 354Looper.loop(), 359Looper.prepare(), 359POST, 375setResult(), 366startElement(), 354

wywo�anie aplikacji zewn�trznych, 134wzorce instalowania wid�etów, 508

Zzabezpieczenie CAPTCHA, 214zamkni�cie zlecenia, 370zapis @id, 122zapisywanie d�wi�ku, 292zapisywanie mediów, 282zapisywanie wideo, 295zapytanie, 49zapytanie media, 474zarz�dzanie kontaktami, 438zasady Android Market, 602zasoby, 92, 117

graficzne, 120grupa animacje, 123grupa kolory, 123grupa napisy, 123grupa style, 123grupa tablice, 123grupa wymiary, 123lokalne, 120res/anim, 117res/drawable, 117res/layout, 117res/raw, 118res/values, 118res/xml, 118XML, 169

zdarzenia systemowe, 45zdarzenie, 116

ACTION_ (ACL_DISCONNECTED, 414ACTION_ACL_ (DISCONNECTED, 409ACTION_ACL_CONNECTED, 409, 414ACTION_DOWN, 370

ACTION_MOVE, 370ACTION_UP, 370Aplikacja nie odpowiada (ANR), 109onCreate(), 116onFocusChanged(), 116onFreeze(), 116onLayout(), 116onSizeChanged(), 116onTouchEvent(), 116setMessage(), 117

zdarzenie interfejsu, 117zdarzenie roz��czenia, 422zdefiniowane urz�dzenia AVD, 83ZigBee, 190z��czenie widoków, 96zmienna

$data, 375AuthToken, 453browser, 488java.util.Date, 519LOCAL_LDLIBS, 572

zmienne typu wyliczeniowego (enum), 266zmniejszanie liczby procesów, 99znacznik

<intent-filter>, 41, 48, 51<joblist>, 375<receiver>, 46, 51<service>, 51<uses-permission>, 48, 539<uses-permissions>, 51corners, 260Drawable, 323ImageView, 262meta, 470meta viewport, 492padding, 260stroke, 260viewport, 470, 471, 474, 477

zwi�zanie kamery emulatora z widokiem, 288

��danie

ACTION_PICK, 438HTTP GET, 199HTTP POST, 201klucza dla API LinkedIn, 437

�eton uwierzytelniania, 450, 455

Page 49: Android w akcji. Wydanie II - Darmowe ebooki · • Android SDK i programowanie aplikacji WWW • Komunikacja Bluetooth i przetwarzanie danych z czujników • Grafika, animacja i