Android 3. Tworzenie Aplikacji

download Android 3. Tworzenie Aplikacji

of 438

Transcript of Android 3. Tworzenie Aplikacji

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    1/1174

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    2/1174

    Spis treści

    Przedmowa ............................................................................................. 21

    O autorach .............................................................................................. 23

    Informacje o redaktorze technicznym ................................................. 25

    Podziękowania ....................................................................................... 27

    Słowo wstępne ....................................................................................... 29

    Rozdział 1. Wprowadzenie do platformy obliczeniowej Android ........................ 31

    Nowa platforma dla nowego typu komputera osobistego .............................. 32Początki historii Androida .................................................................................. 33Zapoznanie się ze środowiskiem Dalvik VM .................................................... 36Stos programowy Androida ................................................................................ 37Projektowanie aplikacji użytkownika końcowego

    za pomocą zestawu Android SDK ................................................................... 38Emulator Androida ........................................................................................ 38Interfejs użytkownika na platformie Android ............................................ 39Podstawowe składniki Androida .................................................................. 40Zaawansowane koncepcje interfejsu użytkownika .................................... 41Składniki usług w Androidzie ....................................................................... 43Składniki multimediów oraz telefonii w Androidzie ................................ 43

    Pakiety Java w Androidzie ............................................................................ 44Wykorzystanie zalet kodu źródłowego Androida ............................................ 48Przykładowe projekty zawarte w książce ........................................................... 49Podsumowanie ...................................................................................................... 49

    Rozdział 2. Konfigurowanie środowiska programowania .................................... 51

    Konfigurowanie środowiska ............................................................................... 52Pobieranie zestawu JDK 6 ............................................................................. 52Pobieranie środowiska Eclipse 3.6 ............................................................... 53Pobieranie zestawu Android SDK ................................................................ 54

    Okno narzędzi ................................................................................................. 56Instalowanie narzędzi ADT .......................................................................... 56

    Przedstawienie podstawowych składników ...................................................... 58Widok ............................................................................................................... 58Aktywność ....................................................................................................... 59

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    3/1174

    6  Spis treści

    Intencja ............................................................................................................ 59Dostawca treści ............................................................................................... 59Usługa .............................................................................................................. 59AndroidManifest.xml .................................................................................... 60

    Urządzenia AVD ............................................................................................ 60Witaj, świecie! ....................................................................................................... 60Wirtualne urządzenia AVD ................................................................................ 65Poznanie struktury aplikacji Androida ............................................................. 67Analiza aplikacji Notepad .................................................................................... 69

    Wczytanie oraz uruchomienie aplikacji Notepad ...................................... 69Rozłożenie kodu na czynniki pierwsze ........................................................ 71

    Badanie cyklu życia aplikacji ............................................................................... 78Usuwanie błędów w aplikacji .............................................................................. 81

    Uruchamianie emulatora .............................................................................. 83StrictMode ....................................................................................................... 84Odnośniki ........................................................................................................ 89

    Podsumowanie ...................................................................................................... 89

    Rozdział 3. Korzystanie z zasobów .......................................................................... 91

    Zasoby .................................................................................................................... 91Zasoby typu string .......................................................................................... 92Zasoby typu layout ......................................................................................... 94

    Składnia odniesienia do zasobu .................................................................... 95Definiowanie własnych identyfikatorów zasobów do późniejszego użytku ............................................................................... 97

    Skompilowane oraz nieskompilowane zasoby Androida ......................... 98Rodzaje głównych zasobów w Androidzie ........................................................ 99Praca na własnych plikach zasobów XML ...................................................... 109Praca na nieskompresowanych zasobach ........................................................ 111Praca z dodatkowymi plikami ........................................................................... 111Przegląd struktury katalogów mieszczących zasoby ...................................... 112

    Zasoby a zmiany konfiguracji ........................................................................... 112Odnośniki ............................................................................................................ 116Podsumowanie .................................................................................................... 117

    Rozdział 4 . Dostawcy treści .................................................................................... 119

    Analiza wbudowanych dostawców Androida ................................................ 120Architektura dostawców treści ......................................................................... 126Implementowanie dostawców treści ................................................................ 139Testowanie dostawcy BookProvider ................................................................ 150

    Dodawanie książki ........................................................................................ 150

    Usuwanie książki .......................................................................................... 150Zliczanie książek ........................................................................................... 151Wyświetlanie listy książek ........................................................................... 151

    Odnośniki ............................................................................................................ 152Podsumowanie .................................................................................................... 153

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    4/1174

    Spis treści 7

    Rozdział 5. Intencje ................................................................................................. 155

    Podstawowe informacje na temat intencji ...................................................... 155Intencje dostępne w Androidzie ....................................................................... 156Przegląd struktury intencji ................................................................................ 159

    Intencje a identyfikatory danych URI ....................................................... 159Działania ogólne ........................................................................................... 160Korzystanie z dodatkowych informacji ..................................................... 161Stosowanie składników 

    do bezpośredniego przywoływania aktywności ..................................... 162Kategorie intencji ......................................................................................... 163Reguły przydzielania intencji do ich składników ..................................... 166Działanie ACTION_PICK .......................................................................... 169Działanie ACTION_GET_CONTENT ..................................................... 171

    Wprowadzenie do intencji oczekujących ........................................................ 172Odnośniki ............................................................................................................ 173Podsumowanie .................................................................................................... 174

    Rozdział 6. Budowanie interfejsów użytkownika oraz używanie kontrolek ........ 175

    Projektowanie interfejsów UI w Androidzie .................................................. 175Programowanie interfejsu użytkownika wyłącznie za pomocą kodu ........ 177Tworzenie interfejsu użytkownika wyłącznie w pliku XML .................. 179Konstruowanie interfejsu użytkownika

    za pomocą kodu oraz języka XML ........................................................... 180FILL_PARENT a MATCH_PARENT ....................................................... 182

    Standardowe kontrolki Androida .................................................................... 182Kontrolki tekstu ............................................................................................ 183Kontrolki przycisków ................................................................................... 187Kontrolka ImageView .................................................................................. 195Kontrolki daty i czasu .................................................................................. 197Kontrolka MapView ..................................................................................... 200

    Działanie adapterów ........................................................................................... 200

    Zapoznanie się z klasą SimpleCursorAdapter .......................................... 200Zapoznanie się z klasą ArrayAdapter ........................................................ 202

    Wykorzystywanie adapterów wraz z kontrolkami AdapterView ................ 204Podstawowa kontrolka listy — ListView ................................................... 205Kontrolka GridView .................................................................................... 213Kontrolka Spinner ........................................................................................ 215Kontrolka Gallery ......................................................................................... 217Tworzenie niestandardowych adapterów ................................................. 218Inne kontrolki w Androidzie ...................................................................... 223

    Style i motywy ..................................................................................................... 224Stosowanie stylów ......................................................................................... 224Stosowanie motywów .................................................................................. 227

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    5/1174

    8  Spis treści

    Menedżery układu graficznego ......................................................................... 227Menedżer układu graficznego LinearLayout ............................................ 228Menedżer układu graficznego TableLayout ............................................. 231Menedżer układu graficznego RelativeLayout ......................................... 235

    Menedżer układu graficznego FrameLayout ............................................ 237Dostosowanie układu graficznego do konfiguracji różnych urządzeń ....... 239

    Usuwanie błędów i optymalizacja układów graficznychza pomocą narzędzia Hierarchy Viewer ....................................................... 242

    Odnośniki ............................................................................................................ 244Podsumowanie .................................................................................................... 245

    Rozdział 7. Praca z menu ........................................................................................ 247

    Menu w Androidzie ........................................................................................... 247

    Tworzenie menu ........................................................................................... 249Praca z grupami menu ................................................................................. 250

    Odpowiedź na wybór elementów menu .......................................................... 251Utworzenie środowiska testowego do sprawdzania menu ........................... 253Praca z innymi rodzajami menu ....................................................................... 259

    Rozszerzone menu ....................................................................................... 259Praca z menu w postaci ikon ....................................................................... 259Praca z podmenu .......................................................................................... 260Zabezpieczanie menu systemowych .......................................................... 261

    Praca z menu kontekstowymi ..................................................................... 261Praca z menu alternatywnymi .................................................................... 264Praca z menu w odpowiedzi na zmianę danych ....................................... 268

    Wczytywanie menu poprzez pliki XML .......................................................... 268Struktura pliku XML zasobów menu ......................................................... 268Zapełnianie plików XML zasobów menu .................................................. 269Tworzenie odpowiedzi dla elementów menu opartych na pliku XML ..... 270Krótkie wprowadzenie do dodatkowych znaczników 

    menu w pliku XML .................................................................................... 271

    Odnośniki ............................................................................................................ 272Podsumowanie .................................................................................................... 272

    Rozdział 8. Praca z oknami dialogowymi .............................................................. 273

    Korzystanie z okien dialogowych w Androidzie ............................................ 274Projektowanie okien alertów ...................................................................... 274Projektowanie okna dialogowego zachęty ................................................ 276Natura okien dialogowych w Androidzie ................................................. 281Przeprojektowanie okna dialogowego zachęty ......................................... 282

    Praca z zarządzanymi oknami dialogowymi ................................................... 283Protokół zarządzanych okien dialogowych .............................................. 283Przekształcenie niezarządzanego okna dialogowego

    na zarządzane okno dialogowe ................................................................ 283Uproszczenie protokołu zarządzanych okien dialogowych ................... 285

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    6/1174

    Spis treści 9

    Praca z klasą Toast .............................................................................................. 293Odnośniki ............................................................................................................ 294Podsumowanie .................................................................................................... 294

    Rozdział 9. Praca z preferencjami i zachowywanie stanów ................................ 295Badanie struktury preferencji ........................................................................... 296Klasa ListPreference ..................................................................................... 296Widok CheckBoxPreference ....................................................................... 305Widok EditTextPreference .......................................................................... 307Widok RingtonePreference ......................................................................... 308

    Organizowanie preferencji ................................................................................ 310Programowe zarządzanie preferencjami ......................................................... 312Zapisywanie stanu za pomocą preferencji ...................................................... 313

    Odnośniki ............................................................................................................ 314Podsumowanie .................................................................................................... 315

    Rozdział 10. Analiza zabezpieczeń i uprawnień ..................................................... 317

    Model zabezpieczeń w Androidzie ................................................................... 317Przegląd pojęć dotyczących zabezpieczeń ................................................. 317Podpisywanie wdrażanych aplikacji .......................................................... 318

    Przeprowadzanie testów zabezpieczeń środowiska wykonawczego ............. 324Zabezpieczenia na granicach procesu ........................................................ 324Deklarowanie oraz stosowanie uprawnień ............................................... 325Stosowanie niestandardowych uprawnień ................................................ 326Stosowanie uprawnień identyfikatorów URI ........................................... 332

    Odnośniki ............................................................................................................ 334Podsumowanie .................................................................................................... 335

    Rozdział 11. Tworzenie i użytkowanie usług ............................................................ 337

    Użytkowanie usług HTTP ................................................................................. 337Wykorzystanie modułu HttpClient do żądań wywołania GET .................. 338Wykorzystanie modułu HttpClient do żądań wywołania POST

    (przykład wieloczęściowy) .......................................................................... 340Parsery SOAP, JSON i XML ....................................................................... 342Obsługa wyjątków ........................................................................................ 343Problemy z wielowątkowością .................................................................... 345Zabawa z przekroczeniami limitu czasu .................................................... 348Stosowanie klasy HttpURLConnection ..................................................... 349Używanie klasy AndroidHttpClient .......................................................... 349Stosowanie wątków drugoplanowych (AsyncTask) ................................ 351Obsługa zmian konfiguracji za pomocą klasy AsyncTask ...................... 357Pobieranie plików za pomocą klasy DownloadManager ........................ 362

    Stosowanie usług w Androidzie ........................................................................ 367Usługi w Androidzie .................................................................................... 368Usługi lokalne ............................................................................................... 369Usługi AIDL .................................................................................................. 376

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    7/1174

    10  Spis treści

    Definiowanie interfejsu usługi w języku AIDL ........................................ 376Implementowanie interfejsu AIDL ............................................................ 379Wywoływanie usługi z poziomu aplikacji klienckiej ............................... 381Przekazywanie usługom złożonych typów danych .................................. 385

    Przykład aplikacji użytkowej korzystającej z usług ........................................ 395Interfejs Tłumacz Google ............................................................................ 395Stosowanie interfejsu Tłumacz Google ..................................................... 397

    Odnośniki ............................................................................................................ 405Podsumowanie .................................................................................................... 405

    Rozdział 12. Analiza pakietów ................................................................................. 407

    Pakiety i procesy ................................................................................................. 407Szczegółowa specyfikacja pakietu .............................................................. 407

    Przekształcanie nazwy pakietu w nazwę procesu ..................................... 408Tworzenie listy zainstalowanych pakietów ............................................... 408Usuwanie pakietu za pomocą aplikacji Package Browser ....................... 409

    Jeszcze raz o procesie podpisywania pakietów ............................................... 409Zrozumienie koncepcji podpisów cyfrowych — scenariusz 1. ................. 410Zrozumienie koncepcji podpisów cyfrowych — scenariusz 2. ................. 410Wyjaśnienie koncepcji podpisów cyfrowych ............................................ 410Jak zatem tworzymy cyfrowy podpis ......................................................... 411Implikacje wynikające z podpisywania plików ........................................ 411

    Współdzielenie danych pomiędzy pakietami ................................................. 412Natura współdzielonych identyfikatorów użytkownika ......................... 412Schemat kodu wykorzystywanego przy współdzieleniu danych ........... 413

    Projekty bibliotek ................................................................................................ 414Czym jest projekt bibliotek? ........................................................................ 414Twierdzenia dotyczące projektów bibliotek ............................................. 414Utworzenie projektu bibliotek .................................................................... 417Tworzenie projektu testowego wykorzystującego projekt bibliotek ..... 420

    Odnośniki ............................................................................................................ 425

    Podsumowanie .................................................................................................... 426Rozdział 13. Analiza procedur obsługi .................................................................... 427

    Składniki Androida i wątkowanie .................................................................... 427Aktywności działają w głównym wątku .................................................... 428Odbiorcy komunikatów działają w głównym wątku ............................... 429Usługi działają w głównym wątku ............................................................. 429Dostawcy treści działają w głównym wątku ............................................. 429Skutki posiadania pojedynczego głównego wątku ................................... 429Pule wątków, dostawcy treści, składniki zewnętrznych usług ................... 429

    Narzędzia wątkowania — poznaj swój wątek ........................................... 429Procedury obsługi ............................................................................................... 431

    Skutki przetrzymywania głównego wątku ................................................ 432Zastosowanie procedury obsługi

    do opóźnienia operacji w wątku głównym ............................................. 432

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    8/1174

    Spis treści 11

    Przykładowy kod źródłowy procedury obsługi opóźniającejprzeprowadzanie operacji ......................................................................... 433

    Konstruowanie odpowiedniego obiektu Message ................................... 435Wysyłanie obiektów Message do kolejki ................................................... 435

    Odpowiedź na metodę zwrotną handleMessage ...................................... 436Stosowanie wątków roboczych ......................................................................... 436

    Przywoływanie wątku roboczego z poziomu menu ................................ 437Komunikacja pomiędzy wątkami głównym i roboczym ........................ 438Szybki przegląd — jak działa wątek? .......................................................... 440

    Klasy przykładowego sterownika procedury obsługi ...................................... 441Plik aktywności sterującej ........................................................................... 442Plik układu graficznego ............................................................................... 444Plik menu ....................................................................................................... 445

    Plik manifest .................................................................................................. 445Czas życia składnika i procesu .......................................................................... 446

    Cykl życia aktywności .................................................................................. 446Cykl życia usługi ........................................................................................... 448Cykl życia odbiorców komunikatów ......................................................... 448Cykl życia dostawcy treści ........................................................................... 448

    Instrukcje dotyczące kompilowania kodu ....................................................... 449Utworzenie projektu za pomocą pliku ZIP ............................................... 449Tworzenie projektu za pomocą listingów ................................................. 449

    Odnośniki ............................................................................................................ 450Podsumowanie .................................................................................................... 450

    Rozdział 14. Odbiorcy komunikatów i usługi długoterminowe ........................... 453

    Odbiorcy komunikatów ..................................................................................... 453Wysyłanie komunikatu ................................................................................ 454Tworzenie prostego odbiorcy — przykładowy kod ................................. 454Rejestrowanie odbiorcy komunikatów w pliku manifeście .................... 456Wysyłanie komunikatu testowego ............................................................. 456

    Wprowadzanie wielu odbiorców komunikatów ...................................... 460Projekt wykorzystujący odbiorców pozaprocesowych ............................ 462Używanie powiadomień pochodzących od odbiorcy komunikatów .......... 463

    Monitorowanie powiadomień za pomocą menedżera powiadomień ....... 463Wysyłanie powiadomienia .......................................................................... 464

    Długoterminowi odbiorcy komunikatów i usługi ......................................... 467Protokół długoterminowego odbiorcy komunikatów ............................ 468Klasa IntentService ....................................................................................... 469Kod źródłowy klasy IntentService .............................................................. 470

    Rozszerzanie klasy IntentService na odbiorcę komunikatów ...................... 472Abstrakcja długoterminowej usługi wysyłającej komunikaty .................. 472Długoterminowy odbiorca komunikatów ................................................ 474Wyodrębnianie blokady przechodzenia

    w stan zatrzymania za pomocą klasy LightedGreenRoom ................... 476

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    9/1174

    12  Spis treści

    Oświetlony zielony pokój ............................................................................ 478Implementacja oświetlonego zielonego pokoju ....................................... 478

    Implementacja długoterminowej usługi .......................................................... 483Szczegółowe informacje na temat usługi nietrwałej ................................ 484

    Informacje dotyczące trwałej usługi .......................................................... 485Odmiana nietrwałej usługi — ponownie dostarczane intencje .................. 485Definiowanie flag usługi w metodzie onStartCommand ........................ 485Wybieranie odpowiedniego trybu usługi .................................................. 485Kontrolowanie blokady przechodzenia

    w stan zatrzymania z dwóch miejsc jednocześnie ................................. 486Implementacja długoterminowej usługi ................................................... 486Testowanie długoterminowych usług ........................................................ 488

    Instrukcje dotyczące kompilowania kodu ....................................................... 489Utworzenie projektów za pomocą pliku ZIP ............................................ 489Utworzenie projektów za pomocą listingów ............................................ 489

    Odnośniki ............................................................................................................ 491Podsumowanie .................................................................................................... 492

    Rozdział 15. Badanie menedżera alarmów ............................................................. 493

    Podstawy menedżera alarmów — konfiguracja prostego alarmu ............... 493Uzyskanie dostępu do menedżera alarmów ............................................. 494Definiowanie czasu uruchomienia alarmu ............................................... 494

    Konfigurowanie odbiorcy dla alarmu ........................................................ 495Utworzenie oczekującej intencji dostosowanej do alarmu ..................... 495Ustawianie alarmu ........................................................................................ 496Projekt testowy .............................................................................................. 497

    Analiza alternatywnych wersji menedżera alarmów ..................................... 503Konfigurowanie powtarzalnego alarmu .................................................... 503Anulowanie alarmu ...................................................................................... 506Praca z wieloma alarmami jednocześnie ................................................... 508Pierwszeństwo intencji w uruchamianiu alarmów .................................. 512

    Trwałość alarmów ........................................................................................ 515Twierdzenia dotyczące menedżera alarmów .................................................. 515Odnośniki ............................................................................................................ 516Podsumowanie .................................................................................................... 516

    Rozdział 16. Analiza animacji dwuwymiarowej ..................................................... 517

    Animacja poklatkowa ........................................................................................ 518Zaplanowanie animacji poklatkowej ......................................................... 518Utworzenie aktywności ............................................................................... 519

    Dodawanie animacji do aktywności .......................................................... 520Animacja układu graficznego ........................................................................... 523

    Podstawowe typy animacji klatek kluczowych ......................................... 524Zaplanowanie środowiska testowego animacji układu graficznego ...... 525

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    10/1174

    Spis treści 13

    Utworzenie aktywności oraz widoku ListView ........................................ 525Animowanie widoku ListView ................................................................... 528Stosowanie interpolatorów ......................................................................... 531

    Animacja widoku ................................................................................................ 533

    Animacja widoku ......................................................................................... 533Dodawanie animacji ..................................................................................... 536Zastosowanie klasy Camera do symulowania głębi w obrazie

    dwuwymiarowym ...................................................................................... 539Analiza interfejsu AnimationListener ....................................................... 541Kilka uwag na temat macierzy transformacji ........................................... 541

    Odnośniki ............................................................................................................ 542Podsumowanie .................................................................................................... 543

    Rozdział 17. Analiza usług wykorzystujących mapy i dane o lokalizacji ............. 545Pakiet do pracy z mapami ................................................................................. 546

    Uzyskanie klucza interfejsu API mapy od firmy Google ........................ 546Klasy MapView i MapActivity .................................................................... 548Dodawanie znaczników za pomocą nakładek .......................................... 553

    Pakiet do obsługi danych o położeniu geograficznym .................................. 559Geokodowanie w Androidzie ..................................................................... 559Geokodowanie za pomocą wątków przebiegających w tle ..................... 563Usługa LocationManager ............................................................................ 566

    Wyświetlanie informacji o położeniu za pomocą klasy MyLocationOverlay ................................................................................... 574

    Stosowanie alertów odległościowych ......................................................... 578Odnośniki ............................................................................................................ 583Podsumowanie .................................................................................................... 583

    Rozdział 18. Używanie interfejsów telefonii .............................................................. 585

    Praca z wiadomościami SMS ............................................................................ 585Wysyłanie wiadomości SMS ....................................................................... 585

    Monitorowanie przychodzących wiadomości tekstowych ..................... 589Praca z folderami wiadomości SMS ........................................................... 592Wysyłanie wiadomości e-mail .................................................................... 593

    Praca z menedżerem telefonii ........................................................................... 594Protokół inicjalizacji sesji (SIP) ........................................................................ 597Odnośniki ............................................................................................................ 600Podsumowanie .................................................................................................... 600

    Rozdział 19. Używanie szkieletu multimedialnego ............................................... 601

    Stosowanie interfejsów API multimediów ...................................................... 601Wykorzystywanie kart SD ........................................................................... 602

    Odtwarzanie multimediów ................................................................................ 606Odtwarzanie źródeł dźwiękowych ............................................................. 607Odtwarzanie plików wideo ......................................................................... 619

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    11/1174

    14  Spis treści

    Rejestrowanie multimediów ............................................................................. 621Analiza procesu rejestracji dźwięku za pomocą klasy MediaRecorder ...... 622Rejestracja dźwięków za pomocą klasy AudioRecord ............................. 626Analiza procesu rejestracji wideo ............................................................... 630

    Analiza klasy MediaStore ............................................................................ 640Rejestrowanie dźwięku za pomocą intencji .............................................. 641Dodawanie plików do magazynu multimediów ...................................... 644Podłączenie klasy MediaScanner do całej karty SD ................................. 647

    Odnośniki ............................................................................................................ 647Podsumowanie .................................................................................................... 648

    Rozdział 20. Programowanie grafiki trójwymiarowejza pomocą biblioteki OpenGL ............................................................ 649

    Historia i podstawy biblioteki OpenGL ........................................................... 650OpenGL ES .................................................................................................... 651Środowisko OpenGL ES a Java ME ............................................................ 652M3G — inny standard grafiki trójwymiarowej środowiska Java ........... 652

    Podstawy struktury OpenGL ............................................................................ 653Podstawy rysowania za pomocą biblioteki OpenGL ............................... 654Kamera i współrzędne ................................................................................. 659

    Tworzenie interfejsu pomiędzy standardem OpenGL ES a Androidem .... 663Stosowanie klasy GLSurfaceView i klas pokrewnych .............................. 664

    Implementacja klasy Renderer ................................................................... 664Zastosowanie klasy GLSurfaceView z poziomu aktywności .................. 667Zmiana ustawień kamery ............................................................................ 672Wykorzystanie indeksów do dodania kolejnego trójkąta ....................... 675Animowanie prostego trójkąta w bibliotece OpenGL ............................. 676

    Stawianie czoła bibliotece OpenGL — kształty i tekstury ............................. 678Rysowanie prostokąta .................................................................................. 679Praca z kształtami ......................................................................................... 680Praca z teksturami ........................................................................................ 694

    Rysowanie wielu figur geometrycznych .................................................... 699OpenGL ES 2.0 .................................................................................................... 703

    Powiązania środowiska Java z bibliotekami OpenGL ES 2.0 ................. 704Etapy renderowania ..................................................................................... 707Jednostki cieniujące ...................................................................................... 708Kompilowanie jednostek cieniujących w programie ............................... 709Uzyskiwanie dostępu do zmiennych jednostek cieniowania ................. 711Prosty trójkąt napisany w środowisku OpenGL ES 2.0 ........................... 711Dodatkowe źródła dotyczące środowiska OpenGL ES 2.0 ..................... 715

    Instrukcje związane z kompilowaniem kodu .................................................. 715Odnośniki ............................................................................................................ 715Podsumowanie .................................................................................................... 716

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    12/1174

    Spis treści 15

    Rozdział 21. Badanie aktywnych folderów ............................................................. 717

    Badanie aktywnych folderów ............................................................................ 717W jaki sposób użytkownik korzysta z aktywnych folderów ................... 718Tworzenie aktywnego folderu .................................................................... 722

    Instrukcje dotyczące kompilowania kodu ....................................................... 733Odnośniki ............................................................................................................ 733Podsumowanie .................................................................................................... 734

    Rozdział 22. Widżety ekranu startowego ................................................................ 735

    Architektura widżetów ekranu startowego ..................................................... 736Czym są widżety ekranu startowego? ........................................................ 736W jaki sposób użytkownik korzysta z widżetów ekranu startowego? ........ 736Cykl życia widżetu ........................................................................................ 740

    Przykładowy widżet ............................................................................................ 745Definiowanie dostawcy widżetu ................................................................. 747Definiowanie rozmiaru widżetu ................................................................. 748Pliki związane z układem graficznym widżetu ......................................... 749Implementacja dostawcy widżetu .............................................................. 751Implementacja modeli widżetów ............................................................... 753Implementacja aktywności konfiguracji widżetu .................................... 761

    Ograniczenia i rozszerzenia widżetów ............................................................. 764Odnośniki ............................................................................................................ 765

    Podsumowanie .................................................................................................... 766

    Rozdział 23. Wyszukiwanie w Androidzie ............................................................... 767

    Wyszukiwanie w Androidzie ............................................................................ 768Badanie procesu przeszukiwania globalnego w Androidzie .................. 768Włączanie dostawców propozycji do procesu wyszukiwania globalnego ..... 774

    Interakcja aktywności z przyciskiem wyszukiwania ...................................... 777Zachowanie przycisku wyszukiwania wobec standardowej

    aktywności ................................................................................................... 778

    Zachowanie aktywności wyłączającej wyszukiwanie .............................. 786Jawne wywoływanie wyszukiwania za pomocą menu ............................. 787Wyszukiwanie lokalne i pokrewne aktywności ........................................ 790Uruchomienie funkcji type-to-search ....................................................... 797

    Implementacja prostego dostawcy propozycji ............................................... 798Planowanie prostego dostawcy propozycji ............................................... 798Pliki implementacji prostego dostawcy propozycji ................................. 799Implementacja klasy SimpleSuggestionProvider ..................................... 799Aktywność wyszukiwania dostępna w prostym dostawcy propozycji ....... 803

    Aktywność wywołania wyszukiwania ........................................................ 808Użytkowanie prostego dostawcy propozycji ............................................ 810

    Implementacja niestandardowego dostawcy propozycji .............................. 813Implementacja niestandardowego dostawcy propozycji ........................ 814Pliki wymagane do implementacji projektu SuggestUrlProvider ......... 814

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    13/1174

    16  Spis treści

    Implementacja klasy SuggestUrlProvider ................................................. 815Implementacja aktywności wyszukiwania

    dla niestandardowego dostawcy propozycji ........................................... 824Plik manifest niestandardowego dostawcy propozycji ........................... 830

    Korzystanie z niestandardowego dostawcy propozycji ........................... 831Zastosowanie przycisków działania

    i danych wyszukiwania specyficznych dla aplikacji .................................... 835Wykorzystanie przycisków działania w procesie wyszukiwania ........... 835Praca ze specyficznym dla aplikacji kontekstem wyszukiwania ................ 838

    Odnośniki ............................................................................................................ 839Wyszukiwanie w tabletach ................................................................................ 840Podsumowanie .................................................................................................... 840

    Rozdział 24. Analiza interfejsu przetwarzania tekstu na mowę ............................. 841Podstawy technologii przetwarzania tekstu na mowę w Androidzie .......... 841Używanie wyrażeń do śledzenia toku wypowiedzi ........................................ 846Zastosowanie plików dźwiękowych do przetwarzania tekstu na mowę ......... 848Zaawansowane funkcje silnika TTS ................................................................. 854

    Konfiguracja strumieni audio ..................................................................... 855Stosowanie ikon akustycznych ................................................................... 855Odtwarzanie ciszy ......................................................................................... 856Wybór innych mechanizmów przetwarzania tekstu na mowę ................. 856

    Stosowanie metod językowych ................................................................... 857Odnośniki ............................................................................................................ 858Podsumowanie .................................................................................................... 859

    Rozdział 25. Ekrany dotykowe ................................................................................. 861

    Klasa MotionEvent ............................................................................................. 861Obiekt MotionEvent .................................................................................... 862Wielokrotne wykorzystywanie obiektów MotionEvent .......................... 873Stosowanie klasy VelocityTracker .............................................................. 874

    Analiza funkcji przeciągania ....................................................................... 876Wielodotykowość ............................................................................................... 879Funkcja wielodotykowości przed wersją 2.2 Androida ........................... 879Funkcja wielodotykowości w systemach poprzedzających wersję 2.2 ........ 887

    Obsługa map za pomocą dotyku ....................................................................... 888Gesty ..................................................................................................................... 891

    Gest ściskania ................................................................................................ 891Klasy GestureDetector i OnGestureListener ............................................ 895Niestandardowe gesty .................................................................................. 898

    Aplikacja Gestures Builder .......................................................................... 898Odnośniki ............................................................................................................ 905Podsumowanie .................................................................................................... 905

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    14/1174

    Spis treści 17

    Rozdział 26. Czujniki ................................................................................................. 907

    Czym jest czujnik? .............................................................................................. 907Wykrywanie czujników ............................................................................... 908Jakie informacje możemy uzyskać na temat czujnika? ........................... 909

    Pobieranie zdarzeń generowanych przez czujniki ......................................... 911Problemy pojawiające się podczas uzyskiwania danych z czujników ... 914

    Interpretowanie danych czujnika ..................................................................... 921Czujniki oświetlenia ..................................................................................... 921Czujniki zbliżeniowe .................................................................................... 922Termometry .................................................................................................. 922Czujniki ciśnienia ......................................................................................... 923Żyroskopy ...................................................................................................... 923Akcelerometry ............................................................................................... 924Magnetometry ............................................................................................... 930Współpraca akcelerometrów z magnetometrami .................................... 931Czujniki orientacji w przestrzeni ............................................................... 931Deklinacja magnetyczna i klasa GeomagneticField ................................. 938Czujniki grawitacji ....................................................................................... 939Czujniki przyśpieszenia liniowego ............................................................. 939Czujniki wektora obrotu ............................................................................. 939Czujniki komunikacji bliskiego pola ......................................................... 939

    Odnośniki ............................................................................................................ 950Podsumowanie .................................................................................................... 951

    Rozdział 27. Analiza interfejsu kontaktów ............................................................. 953

    Koncepcja konta ................................................................................................. 954Szybki przegląd ekranów związanych z kontami ..................................... 954Związek pomiędzy kontami a kontaktami ................................................ 957Wyliczanie kont ............................................................................................ 957

    Aplikacja Kontakty ............................................................................................. 958Wyświetlanie kontaktów ............................................................................. 958

    Wyświetlanie szczegółów kontaktu ........................................................... 959Edytowanie szczegółów kontaktu .............................................................. 960Umieszczanie zdjęcia powiązanego z kontaktem .................................... 962Eksportowanie kontaktów ........................................................................... 962Różne typy danych kontaktowych ............................................................. 964

    Analiza kontaktów .............................................................................................. 964Badanie treści bazy danych SQLite ............................................................ 965Nieprzetworzone kontakty .......................................................................... 965Tabela danych ............................................................................................... 967Kontakty zbiorcze ......................................................................................... 968

     view_contacts ................................................................................................ 971contact_entities_view ................................................................................... 971

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    15/1174

    18  Spis treści

    Praca z interfejsem kontaktów .......................................................................... 972Eksploracja kont ........................................................................................... 972Badanie kontaktów zbiorczych ................................................................... 980Badanie nieprzetworzonych kontaktów .................................................... 989

    Przeglądanie danych nieprzetworzonego kontaktu ................................. 994Dodawanie kontaktu oraz szczegółowych informacji o nim ................. 998

    Kontrola agregacji .............................................................................................1001Konsekwencje synchronizacji ......................................................................... 1002Odnośniki ..........................................................................................................1002Podsumowanie ..................................................................................................1003

    Rozdział 28. Wdrażanie aplikacji na rynek — Android Market i nie tylko ......... 1005

    Jak zostać wydawcą? ......................................................................................... 1006

    Postępowanie zgodnie z zasadami ........................................................... 1006Konsola programisty ..................................................................................1009

    Przygotowanie aplikacji do sprzedaży ........................................................... 1012Testowanie działania na różnych urządzeniach .....................................1012Obsługa różnych rozmiarów ekranu ....................................................... 1012Przygotowanie pliku AndroidManifest.xml

    do umieszczenia w sklepie Android Market ........................................ 1013Lokalizacja aplikacji ................................................................................... 1014Przygotowanie ikony aplikacji .................................................................. 1015

    Problemy związane z zarabianiem pieniędzy na aplikacjach ............... 1016Kierowanie użytkowników z powrotem do sklepu ................................ 1016Usługa licencyjna systemu Android ........................................................ 1017Przygotowanie pliku .apk do wysłania .................................................... 1018

    Wysyłanie aplikacji ........................................................................................... 1018Korzystanie ze sklepu Android Market ......................................................... 1022Alternatywy dla serwisu Android Market ..................................................... 1023Odnośniki ..........................................................................................................1024Podsumowanie ..................................................................................................1024

    Rozdział 29. Koncepcja fragmentów oraz inne pojęcia dotyczące tabletów ..... 1025

    Czym jest fragment? ......................................................................................... 1026Kiedy należy stosować fragmenty? ................................................................. 1027Struktura fragmentu ......................................................................................... 1027

    Cykl życia fragmentu ................................................................................. 1028Przykładowa aplikacja ukazująca cykl życia fragmentu ........................ 1033

    Klasy FragmentTransaction i drugoplanowy stos fragmentów ................. 1042Przejścia i animacje zachodzące podczas transakcji fragmentu ........... 1044

    Klasa FragmentManager .................................................................................. 1045Ostrzeżenie dotyczące stosowania odniesień do fragmentów ................. 1046Klasa ListFragment i węzeł .................................................. 1047Wywoływanie odrębnej aktywności w razie potrzeby .......................... 1051Trwałość fragmentów ................................................................................ 1054

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    16/1174

    Spis treści 19

    Fragmenty wyświetlające okna dialogowe .................................................... 1054Podstawowe informacje o klasie DialogFragment ................................. 1055Przykładowa aplikacja wykorzystująca klasę DialogFragment ................... 1060

    Inne formy komunikowania się z fragmentami ........................................... 1073

    Stosowanie metod startActivity() i setTargetFragment() ..................... 1074Tworzenie niestandardowych animacji

    za pomocą klasy ObjectAnimator ................................................................ 1075Odnośniki ..........................................................................................................1078Podsumowanie ..................................................................................................1078

    Rozdział 30. Analiza klasy ActionBar ..................................................................... 1079

    Anatomia klasy ActionBar .............................................................................. 1080Aktywność paska działania wyświetlającego zakładki ..................................... 1081

    Implementacja bazowych klas aktywności .................................................... 1082Wprowadzenie jednolitego zachowania klas ActionBar ....................... 1084Implementacja obiektu nasłuchującego zdarzeń z zakładek ................ 1087Implementacja aktywności przechowującej pasek zakładek ................ 1088Przewijalny układ graficzny zawierający widok debugowania ............ 1090Pasek działania a interakcja z menu ........................................................ 1091Plik manifest Androida .............................................................................. 1093Badanie aktywności przechowującej pasek zakładek ............................ 1093

    Aktywność paska działania w trybie wyświetlania listy .............................. 1094

    Utworzenie klasy SpinnerAdapter ........................................................... 1095Utworzenie obiektu nasłuchującego listy ................................................ 1095Konfigurowanie paska działania w trybie wyświetlania listy ............... 1096Zmiany w klasie BaseActionBarActivity ................................................. 1097Zmiany w pliku AndroidManifest.xml .................................................... 1097Badanie aktywności zawierającej pasek działania

    w trybie wyświetlania listy ......................................................................1098Aktywność przechowująca standardowy pasek działania ........................... 1099

    Aktywność przechowująca standardowy pasek działania .................... 1100

    Zmiany w klasie BaseActionBarActivity ................................................. 1101Zmiany w pliku AndroidManifest.xml .................................................... 1101Badanie aktywności przechowującej standardowy pasek działania .... 1102

    Odnośniki ..........................................................................................................1102Podsumowanie ..................................................................................................1104

    Rozdział 31. Dodatkowe zagadnienia związane z wersją 3.0 systemu .............. 1105

    Widżety ekranu startowego oparte na listach ............................................... 1105Nowe widoki zdalne w wersji 3.0 systemu .............................................. 1106

    Praca z listami stanowiącymi część widoku zdalnego ........................... 1107Działający przykład

    — testowy widżet ekranu startowego oparty na liście ........................ 1121Testowanie widżetu wyświetlającego listę ............................................... 1130

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    17/1174

    20  Spis treści

    Funkcja przeciągania ........................................................................................1131Podstawowe informacje

    o funkcji przeciągania w wersji 3.0 Androida ...................................... 1131Przykładowa aplikacja prezentująca funkcję przeciągania ................... 1133

    Testowanie przykładowej aplikacji wykorzystującej funkcjęprzeciągania .............................................................................................. 1145

    Odnośniki ..........................................................................................................1146Podsumowanie ..................................................................................................1147

    Skorowidz ........................................................................................... 1149

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    18/1174

    Przedmowa

    Wszystko już się kiedyś wydarzyło i wszystko wydarzy się ponownie w przyszłości. Teoriaemergencji (wyłaniania się) wyjaśnia, w jaki sposób z oddziaływań między prostszymi ele-mentami wyłaniają się złożone systemy i wzorce.

    Także my już tu kiedyś byliśmy.Gdy w 1985 roku rozpoczynałem przygodę z programowaniem, dostępnych było wiele różno-rodnych komputerów osobistych. Gdy zdobywałem pierwsze szlify w pracy z komputeremApple II C, moi znajomi korzystali z platform Commodore 128s, Tandy CoCo 3s lub Atari.Każdy z nas rozwijał się w tym samym środowisku, jednak rzadko kiedy mogliśmy dzielić sięwynikami pracy. Gdy zaczęły się pojawiać przystępne cenowo klony komputera firmy IBM,które obsługiwały system DOS firmy Microsoft, programiści dostrzegli potencjał tworzące-go się właśnie rynku i nastąpiła szybka ewolucja środowiska DOS. Ostatecznie firma Micro-soft zdobyła dominującą pozycję na rynku komputerów PC, którą cieszy się do dzisiaj.

    Gdy w 2003 roku zacząłem zajmować się programowaniem mobilnych aplikacji, sytuacja bardzoprzypominała tę z 1985 roku. Mogliśmy urzeczywistniać swoje pomysły za pomocą różnorod-nych środowisk, począwszy od .NET CF firmy Microsoft, poprzez Java Micro Edition, a skoń-czywszy na BREW. Jednak, podobnie jak w przypadku gier, które kiedyś tworzyliśmy z przyja-ciółmi, napisane aplikacje funkcjonowały tylko w określonym środowisku.

    Teraz, w 2011 roku, firma Google, dzięki polityce udostępniania systemu Android produ-centom sprzętu, zdaje się stawać Microsoftem w Świecie Urządzeń Mobilnych. Prawdopo-dobnie dlatego wybrałeś tę książkę i zacząłeś czytać przedmowę. Albo jesteś studentem hi-storii, albo — podobnie jak ja — masz szczęście w niej uczestniczyć.

    Jeśli tak — mam dla Ciebie dobre wieści! Pracowaliśmy bardzo ciężko, przygotowując nowewydanie tej książki, aby udostępnić Ci narzędzia umożliwiające implementację pomysłów krążą-cych Ci po głowie. Przeprowadzimy Cię przez podstawy, począwszy od konfigurowania środo-wiska, a skończywszy na wdrożeniu aplikacji w sklepie Android Marketplace. Oczywiście, jest tobardzo rozległa podróż, dlatego będziemy podróżować przede wszystkim najbardziej uczęszcza-nymi szlakami. Pokażemy Ci jednak mnóstwo zasobów, za pomocą których możesz zwiedzaćszeroki świat Androida na własną rękę.

    Powodzenia i szczęśliwej drogi!

    — Dylan Phillips

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    19/1174

    22 Android 3. Tworzenie aplikacji

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    20/1174

    Słowo wstępne 23

    O autorach

    Satya Komatineni  (www.satyakomatineni.com)  ma ponad dwudziestoletniedoświadczenie w programowaniu dla dużych i mniejszych przedsiębiorstw.Satya Komatineni opublikował ponad 30 artykułów dotyczących projektowa-

    nia stron WWW przy użyciu technologii Java, .NET oraz baz danych. Jest czę-stym prelegentem na konferencjach przemysłowych dotyczących innowa-cyjnych technologii oraz regularnie umieszcza wpisy na blogach w serwisie

     java.net. Jest także twórcą AspireWeb (www.activeintellect.com/aspire)  —uproszczonego narzędzia o jawnym kodzie źródłowym, służącego do projektowania stron WWWw języku Java, oraz Aspire Knowledge Central — sieciowego systemu operacyjnego o jawnymkodzie źródłowym, nastawionego na efektywność oraz możliwość publikowania przez poszcze-gólne osoby. Autor jest również członkiem wielu programów SBIR (ang. Small Business Innova-tion Research Program — program rozwoju innowacji w małych przedsiębiorstwach). Uzyskałstopień licencjata inżynierii elektrycznej na Uniwersytecie Andhra w Visakhapatnamie oraz tytuł

    magistra inżynierii elektrycznej w Indyjskim Instytucie Technologicznym w Nowym Delhi. Moż-na się z nim skontaktować, pisząc na adres [email protected] .

    Dave MacLean jest inżynierem i architektem oprogramowania. Obecnie mieszkai pracuje w Jacksonville na Florydzie. Od 1980 roku zajmuje się programowa-niem w wielu językach oraz projektowaniem — począwszy od systemów auto-matyzacji robotów, na systemach przechowywania danych skończywszy, odautomatycznie obsługiwanych aplikacji sieciowych do procesorów transakcjiEDI. Dave MacLean pracował dla takich firm, jak Sun Microsystems, IBM,Trimble Navigation, General Motors oraz kilku mniejszych przedsiębiorstw.

    Ukończył studia na Uniwersytecie Waterloo w Kanadzie, uzyskując tytuł inżyniera projektowaniasystemów. Prowadzi blog dostępny pod adresem http://davemac327.blogspot.com , natomiast jego adres kontaktowy to [email protected].

    Sayed Y. Hashimi urodził się w Afganistanie, obecnie zaś przebywa w Jack-sonville na Florydzie. Ma bogate doświadczenie w dziedzinie ochrony zdrowia,finansów, logistyki oraz architektury zorientowanej na usługi. Zawodowo autorprojektuje wielkoskalowe aplikacje rozproszone, wykorzystując różne języki orazplatformy, w tym C/C++, MFC, J2EE oraz .NET. Publikował artykuły w naj-większych czasopismach poświęconych oprogramowaniu oraz napisał kilka in-

    nych popularnych książek dla wydawnictwa Apress. Sayed Y. Hashimi posiadatytuł magistra inżynierii uzyskany na Uniwersytecie Floryda. Można się z nim skontaktowaćna stronie www.sayedhashimi.com.

    Zapraszamy na naszą stronę http://androidbook.com.

    http://www.satyakomatineni.com/http://www.satyakomatineni.com/http://www.activeintellect.com/aspirehttp://www.activeintellect.com/aspiremailto:[email protected]:[email protected]://davemac327.blogspot.com/http://davemac327.blogspot.com/mailto:[email protected]:[email protected]://www.sayedhashimi.com/http://www.sayedhashimi.com/http://androidbook.com/http://androidbook.com/http://androidbook.com/http://www.sayedhashimi.com/mailto:[email protected]://davemac327.blogspot.com/mailto:[email protected]://www.activeintellect.com/aspirehttp://www.satyakomatineni.com/

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    21/1174

    24 Android 3. Tworzenie aplikacji

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    22/1174

    Słowo wstępne 25

    Informacje o redaktorze

    technicznym

    Dylan Phillips jest inżynierem i architektem oprogramowania, pracującym

    w branży rozwiązań mobilnych już od 10 lat. Dzięki bogatemu doświadczeniu,rozciągającemu się od pracy w środowisku J2ME, poprzez .NET CompactFramework, aż do systemu Android, z radością dostrzegł potencjał w do-stosowywaniu urządzeń wykorzystujących Androida do różnorodnych za-potrzebowań konsumentów. Można się z nim skontaktować poprzez [email protected], @mykoan na Twitterze albo na obiedzie w jednej z licz-

    nych restauracji Pho House rozrzuconych po całych Stanach Zjednoczonych.

    mailto:[email protected]:[email protected]:[email protected]

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    23/1174

    26 Android 3. Tworzenie aplikacji

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    24/1174

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    25/1174

    28 Android 3. Tworzenie aplikacji

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    26/1174

    Słowo wstępne 29

    Słowo wstępne

    Czy kiedykolwiek chciałeś być Rodinem1? Siedzieć z dłutem w dłoni i ciosać skałę, formując ją na kształt własnej wizji? Większość programistów dążących najpopularniejszymi nurtamitrzymało się z daleka od mocno ograniczonych urządzeń mobilnych ze strachu przed nie-

    możnością wyrzeźbienia użytecznej aplikacji. Ale te czasy już minęły.System Android pozwala nam na pracę z nieprawdopodobną liczbą programowalnychurządzeń. W tej książce pragniemy potwierdzić podejrzenia, jakoby system Android zna-komicie nadawał się do pisania aplikacji. Jeśli programujesz w Javie, zyskujesz olbrzymiąszansę na korzyści płynące z tej ekscytującej, pełnej możliwości, wielozadaniowej platformy obliczeniowej. Cieszymy się z Androida, ponieważ stanowi on zaawansowaną platformę,wprowadzającą wiele nowych paradygmatów w kwestii projektowania szkieletów (pomimoograniczeń urządzeń mobilnych).

    Jest to nasza trzecia, dotychczas najlepsza, edycja książki poświęconej Androidowi. Pro Android 3

     jest rozległym przewodnikiem programistycznym. W tym wydaniu udoskonaliliśmy, prze-pracowaliśmy stylistycznie oraz poprawiliśmy wszystkie elementy książki Android 2. Tworzenieaplikacji w celu stworzenia gruntownie uaktualnionego przewodnika, służącego zarówno począt-kującym, jak i zaawansowanym programistom — będącego wynikiem trzech lat pracy. Omawiamy ponad 100 zagadnień podzielonych na 31 rozdziałów. Niniejsze wydanie książki obejmujewersje 2.3 oraz 3.0 systemu Android, które są zoptymalizowanymi wersjami dla, odpowiednio,telefonów i tabletów.

    W tym wydaniu poświęciliśmy więcej uwagi wewnętrznym mechanizmom Androida poprzezomówienie wątków, procesów, długoterminowych usług, odbiorców komunikatów oraz mene-

    dżerów alarmów. Omawiamy również o wiele więcej kontrolek interfejsu użytkownika. Zamieści-liśmy ponad 150 stron poświęconych wersji 3.0 systemu, gdzie omówiliśmy fragmenty, dialogifragmentów, klasę ActionBar, a także funkcję przeciągania. Znacznie rozwinęliśmy rozdziały poświęcone czujnikom i usługom. Rozdział omawiający środowisko OpenGL został zaktualizo-wany pod kątem obsługi wersji OpenGL ES 2.0.

    Zasadniczymi elementami tej książki są objaśnienia pojęć, listingi oraz samouczki. Wszystkierozdziały zostały podporządkowane tej filozofii. Każdy samodzielny samouczek został opatrzony komentarzem eksperta. Wszystkie projekty zawarte w książce są dostępne do pobrania i można

     je bez trudu zaimportować do środowiska Eclipse. Ciężko również pracowaliśmy nad tym, aby 

    każdy pokazany tu kod mógł zostać bezproblemowo skompilowany. Lista plików składających

    1  August François-René Rodin — francuski rzeźbiarz, ur. 12 listopada 1840 r. w Paryżu, zm. 17 listopada1917 r. w Meudon. W swoich pracach łączył elementy symbolizmu i impresjonizmu. Był prekursoremnowoczesnego rzeźbiarstwa — przyp. red.

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    27/1174

    30 Android 3. Tworzenie aplikacji

    się na każdy projekt w danym rozdziale została jasno przedstawiona, dzięki czemu własnoręczneutworzenie projektu staje się jeszcze prostsze.

    Tematyka książki obejmuje takie kluczowe pojęcia, jak zasoby, intencje, dostawcy treści, procesy,wątki, kontrolki interfejsu użytkownika, odbiorcy wiadomości, usługi oraz usługi długotermi-

    nowe. Osoby dopiero poznające środowisko OpenGL znajdą tu mnóstwo materiałów dotyczą-cych wersji OpenGL ES 1.0 oraz 2.0. Wiele miejsca poświęciliśmy funkcjom przetwarzania tekstuna mowę, czujnikom oraz wielodotykowości. Szeroko również omówiliśmy zagadnienia doty-czące wersji 3.0 Androida, wśród których można znaleźć informacje o fragmentach, dialogachfragmentów, klasie ActionBar i funkcji przeciągania.

    Na koniec warto wspomnieć, że wyszliśmy w tej książce poza podstawowe zagadnienia, że nakażdy temat zadawaliśmy trudne pytania oraz że udokumentowaliśmy wyniki (mnogość tematów zawartych w tej książce widać w szczegółowym spisie treści). Aktualizujemy również na bieżącopomocniczą stronę (www.androidbook.com), publikując najnowsze oraz przyszłościowe materiały 

    dotyczące zestawu Android SDK. W razie pojawienia się jakichkolwiek pytań w trakcie czytaniaksiążki od uzyskania szybkiej odpowiedzi dzieli Cię tylko jeden e-mail.

    http://www.androidbook.com/http://www.androidbook.com/

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    28/1174

    ROZDZIAŁ

    1Wprowadzeniedo platformy obliczeniowejAndroid

    Urządzenia komputerowe stają się coraz bardziej spersonalizowane i przystępne.Urządzenia przenośne w dużej mierze przekształciły się w platformy obliczeniowe.Telefony komórkowe nie służą już wyłącznie do rozmawiania — od pewnegoczasu posiadają możliwość przenoszenia danych oraz multimediów. Bez różnicy,

    czy mówimy o telefonie, czy tablecie, urządzenia przenośne mają olbrzymie możli-wości obliczeniowe, uprawniające je do uzyskania statusu komputera osobistego(ang. Personal Computer  — PC). Wielu znanych producentów, takich jak ASUS,HP czy Dell, produkuje różnorodne urządzenia działające pod kontrolą systemuAndroid. Konkurencja pomiędzy poszczególnymi systemami operacyjnymi, plat-formami obliczeniowymi, językami programowania oraz ramowymi modelami pro- jektowania przenosi się na urządzenia mobilne i coraz częściej właśnie ich dotyczy.

    Widać także zwiększenie się liczby programów tworzonych dla urządzeń przeno-śnych, jako że coraz więcej aplikacji użytkowych zaczyna mieć odpowiedniki dla

    urządzeń mobilnych. W tej książce zademonstrujemy sposoby zastosowania językaJava do pisania programów dla urządzeń obsługujących platformę Android firmy Google (http://developer.android.com/index.html ). Jest to środowisko o jawnymkodzie źródłowym, służące do tworzenia aplikacji dla urządzeń przenośnych.

    Android jest niezwykle interesujący, ponieważ wprowadza wiele nowych

    paradygmatów projektowania struktury aplikacji (pomimo ograniczeń

    platformy mobilnej).

    W tym rozdziale przedstawimy cechy Androida oraz narzędzia SDK Android.

    Krótko scharakteryzujemy jego najważniejsze elementy, w syntetyczny sposób za-prezentujemy tematykę poszczególnych rozdziałów, pokażemy, w jaki sposób ko-rzystać z kodu źródłowego Androida, oraz przedstawimy zalety projektowaniaaplikacji na tę platformę.

    http://developer.android.com/index.htmlhttp://developer.android.com/index.htmlhttp://developer.android.com/index.html

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    29/1174

    32 Android 3. Tworzenie aplikacji

    Nowa platformadla nowego typu komputera osobistego

    Wspaniałą wieścią dla programistów jest informacja, że wyspecjalizowane urządzenia, takie jak telefony komórkowe, mogą zostać obecnie zaliczone do grona platform obliczeniowychogólnego przeznaczenia (rysunek 1.1). Począwszy od wersji Android 3.0, do tej listy możemy oficjalnie dodać tablety. W ten sposób programowanie dla urządzeń przenośnych staje się do-stępne dla języków programowania ogólnego przeznaczenia, dzięki czemu powiększają się za-kres oraz udziały w rynku aplikacji przeznaczonych dla tych urządzeń.

    Rysunek 1.1. Handheld jest nowym rodzajem komputera osobistego

    Platforma Android umożliwia urzeczywistnienie tej idei uniwersalnych komputerów w przy-padku urządzeń typu handheld. Jest to wszechstronne środowisko z systemem operacyjnymopartym na Linuksie, który zarządza urządzeniami, pamięcią oraz procesami. Biblioteki JavaAndroida zapewniają obsługę funkcji telefonu, wideo, przetwarzania tekstu na mowę, grafiki,łączności, programowania interfejsu użytkownika oraz wielu innych aspektów urządzenia.

    Chociaż Android został zaprojektowany pod kątem urządzeń przenośnych oraz urządzeń

    typu tablet, posiada strukturę w pełni wyposażonego systemu operacyjnego. Firma

    Google udostępnia tę strukturę programistom języka Java poprzez zestaw SDK (ang. Software Development Kit  — zestaw do tworzenia oprogramowania) o nazwie

    Android SDK. Praca na tym zestawie sprawia, że wcale nie ma się wrażenia, iż tworzy się

    aplikację dla urządzenia przenośnego, ponieważ można korzystać z większości bibliotek 

    klas używanych na stacji roboczej lub serwerze — łącznie z relacyjnymi bazami danych.

    Zestaw Android SDK zapewnia obsługę znacznej części platformy Java Standard Edition (Java SE),z wyjątkiem narzędzia Abstract Window Toolkit (AWT) oraz Swing. Zamiast tych narzędziAndroid SDK został zaopatrzony we własny, obszerny, nowoczesny szkielet interfejsu użyt-kownika. Językiem programowania jest Java, zatem niezbędne jest środowisko JVM (ang. Java

    Virtual Machine — wirtualna maszyna Javy), w którym odbywa się interpretowanie urucho-mionego kodu bajtowego. Dzięki środowisku JVM uzyskujemy niezbędną optymalizację, po-zwalającą osiągnąć wydajność porównywalną do wydajności aplikacji skompilowanych w ta-kich językach, jak C oraz C++. Android zawiera własne, zoptymalizowane środowisko JVM,umożliwiające uruchomienie skompilowanych plików klasy Java w celu określenia takich ogra-

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    30/1174

    Rozdział 1 Wprowadzenie do platformy obliczeniowej Android 33

    niczeń urządzenia typu handheld, jak pojemność pamięci, szybkość procesora oraz moc. Tawirtualna maszyna, nazwana Dalvik VM, zostanie dokładniej omówiona w podrozdziale „Zapo-znanie się ze środowiskiem Dalvik VM”.

    Podobieństwo języka Java do jego wersji stosowanej w komputerach PC oraz jegoprostota w połączeniu z rozbudowaną biblioteką klas Androida sprawiają, że jest to

    bardzo atrakcyjna platforma programistyczna.

    Na rysunku 1.2 został ukazany stos programowy Androida (więcej informacji na ten tematmożna znaleźć w podrozdziale „Stos programowy Androida”).

    Rysunek 1.2. Wysokopoziomowy widok stosu programowego Androida

    Początki historii Androida

    Dla telefonów komórkowych stworzono wiele różnych systemów operacyjnych, takich jak 

    Symbian OS, Windows Mobile firmy Microsoft, Mobile Linux, iPhone OS (napisany na pod-stawie systemu Mac OS X), Moblin (firmy Intel) oraz wiele innych opatentowanych środowisk.Do tej pory żaden z tych systemów nie stał się formalnym standardem. Dostępne interfejsy APIoraz środowiska projektowania aplikacji dla urządzeń przenośnych są zbyt ograniczone i po-zostają w tyle w porównaniu z analogicznymi strukturami dostępnymi dla stacji roboczych.

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    31/1174

    34 Android 3. Tworzenie aplikacji

    W przeciwieństwie do pozostałych systemów operacyjnych, Android miał być otwarty, przy-stępny, o jawnym kodzie źródłowym oraz, co ważniejsze, miał zapewniać nowoczesny,scentralizowany i spójny szkielet projektowania.

    W 2005 roku firma Google wykupiła młode przedsiębiorstwo Android Inc., które rozpoczęło

    projektowanie platformy Android (rysunek 1.3). Wśród najważniejszych pracowników firmy Android Inc. byli w owym czasie Andy Rubin, Rich Miner, Nick Sears oraz Chris White.

    Rysunek 1.3. Początki historii Androida

    Pod koniec 2007 roku grupa czołowych przedsiębiorstw utworzyła wokół platformy Androidklaster przemysłowy Open Handset Alliance (http://www.openhandsetalliance.com). Niektórzy 

    członkowie tego to: Sprint Nextel,

    T-Mobile,

    Motorola,

    Samsung,

    Sony Ericsson,

    Toshiba,

    Vodafone,

    Google,

    Intel,

    Texas Instruments.

    Do 2011 roku liczba członków tej grupy znacznie się zwiększyła (jest ich obecnie ponad 80), comożna sprawdzić na stronie zrzeszenia Open Handset Alliance.

    Zgodnie z informacjami zawartymi w witrynie klastra jednym z jego celów jest szybkie wpro-wadzanie innowacji oraz lepsza odpowiedź na potrzeby konsumentów w przestrzeni mobilnej,a jednym z pierwszych ważnych osiągnięć był Android. Został on zaprojektowany w celu za-spokojenia potrzeb operatorów sieci komórkowych, producentów urządzeń oraz twórców apli-

    kacji. Członkowie zrzeszenia zobowiązali się udostępnić tę istotną własność intelektualną po-przez zastosowanie w stosunku do Androida warunków licencji Apache License 2.01.

    1  Apache License 2.0 jest licencją wolnego oprogramowania autorstwa Apache Software Foundation.Licencja ta dopuszcza użycie kodu źródłowego zarówno na potrzeby wolnego oprogramowania,

     jak i zamkniętego oprogramowania komercyjnego — przyp. red.

    http://www.openhandsetalliance.com/http://www.openhandsetalliance.com/http://www.openhandsetalliance.com/

  • 8/19/2019 Android 3. Tworzenie Aplikacji

    32/1174

    Rozdział 1 Wprowadzenie do platformy obliczeniowej Android 35

    Zestaw Android SDK został wydany jako „wczesna wersja” w listopadzie 2007 roku. We wrze-śniu 2008 roku firma T-Mobile zapowiedziała wydanie T-Mobile G1, pierwszego smartfonubazującego na platformie Android. Kilka dni później firma Google ogłosiła wydanie zestawuAndroid SDK Release Candidate 1.02. W październiku 2008 roku firma Google udostępniła kod

    źródłowy platformy Android w ramach licencji Apache. Pod koniec 2010 roku firma Googlewydała zestaw Android SDK w wersji 2.3 dla smartfonów. Zestawowi temu nadano nazwę ko-dową Gingerbread. W marcu 2011 roku został on zaktualizowany do wersji 2.3.3. Na początku2011 roku została wydana zoptymalizowana wersja Androida (w wersji 3.0) przeznaczona dlatabletów, nosząca nazwę kodową Honeycomb. Jednym z pierwszych tabletów działających podkontrolą tej wersji systemu operacyjnego jest Motorola XOOM.

    Jednym z najważniejszych celów twórców Androida było umożliwienie współpracy różnychaplikacji ze sobą, a także wielokrotnego wykorzystywania składników jednej aplikacji przez inną.Takie używanie fragmentów innych programów dotyczy nie tylko usług, lecz również danychoraz interfejsu UI (ang. User Interface — interfejs użytkownika). W efekcie Android posiada

    szereg funkcji konstrukcyjnych, dzięki którym stał się w rzeczywisty sposób otwarty.

    Android wcześnie przyciągnął wielu zwolenników. Utrzymał również zainteresowanie pro-gramistów, gdyż posiada w pełni rozwinięte narzędzia, dzięki którym można wykorzystywać— poprzez model przetwarzania w chmurze (ang. cloud computing ) — udostępnione zasoby sieciowe. Twórcy Androida usprawnili również funkcjonowanie lokalnych magazynów danychw samym urządzeniu przenośnym. Na ciepłe przyjęcie Androida wpłynęła również możliwośćobsługi relacyjnych baz danych przez urządzenia przenośne.

    Android w wersjach 1.0 oraz 1.1 (2008 rok) nie posiadał możliwości obsługi klawiatury pro-gramowej, więc urządzenia musiały być wyposażone w fizyczne przyciski. Funkcja ta została

    wprowadzona w zestawie Android SDK 1.5 w kwietniu 2009 roku wraz z innymi dodatkami,takimi jak zaawansowane możliwości nagrywania multimediów, widżety oraz aktywne foldery.

    We wrześniu 2009 roku pojawiła się wersja 1.6 systemu Android, a w przeciągu miesiąca zostaławydana wersja opatrzona numerem 2.0, dzięki czemu nastąpił przedświąteczny wysyp urzą-dzeń obsługujących ten system. W tej wersji zaprezentowano funkcje zaawansowanego wyszu-kiwania danych oraz przetwarzania tekstu na mowę.

    Dzięki obsłudze języka HTML 5 system Android 2.0 posiada interesujące możliwości wykorzy-stania stron WWW. Interfejs API kontaktów uległ znacznemu usprawnieniu. Dodano obsługęformatu Flash. Codziennie wydaje się coraz więcej aplikacji opartych na Androidzie, pojawiająsię również coraz nowsze rodzaje niezależnych sieciowych sklepów z aplikacjami. Można jużzakupić od dawna wyczekiwane komputery typu tablet, bazujące na systemie Android.

    W wersji 2.