Helion


Szczegóły ebooka

Android. Receptury

Android. Receptury


Sprawdzone rozwiązania dla programistów platformy Android!

Android jest obecnie najpopularniejszą platformą dla telefonów komórkowych i tabletów. Liczba aktywacji to setki tysięcy w ciągu jednego dnia. Skąd wzięła się ta popularność? Nie bez znaczenia są tu banalnie prosta integracja z serwisami społecznościowymi oraz ogromny wybór aplikacji i sprzętu, w którym można przebierać bez końca. Android jest również faworytem deweloperów oprogramowania. Dzięki temu, że platforma jest oparta o język Java, mogą oni błyskawicznie wykorzystać posiadaną wiedzę oraz znane narzędzia. Ta mieszanka jest skazana na sukces!

Książka, którą trzymasz w rękach, pomoże Ci odnieść sukces. Należy ona do ulubionej serii programistów - "Receptury". Znajdziesz tu najlepsze przepisy na rozwiązanie typowych problemów. W trakcie lektury nauczysz się błyskawicznie konfigurować środowisko pracy, tworzyć kopie zapasowe danych aplikacji oraz testować Twoje dzieło. Ponadto sprawdzisz, jak komunikować się między procesami, tworzyć zaawansowaną grafikę oraz wyświetlać materiały multimedialne. Przekonasz się również, jak łatwo uzyskać informacje z odbiornika GPS, sterować diodą LED w urządzeniu oraz przygotować aplikację do dystrybucji i sprzedaży. Książka ta powinna trafić w ręce wszystkich pasjonatów systemu Android!

Sięgnij po tę książkę i:

  • sprawdź, jak uzyskać informacje z odbiornika GPS
  • błyskawicznie przygotuj swoje środowisko pracy
  • twórz zaawansowane elementy graficzne
  • przygotuj aplikację do publikacji

Wypróbuj najlepsze przepisy dla Androida!

Przedmowa (13)

1. Podstawowe informacje (19)

  • 1.1. Wprowadzenie - podstawowe informacje (19)
  • 1.2. Nauka Javy (19)
  • 1.3. Tworzenie aplikacji "Witaj, świecie" z poziomu wiersza poleceń (21)
  • 1.4. Tworzenie aplikacji "Witaj, świecie" w środowisku Eclipse (24)
  • 1.5. Konfigurowanie środowiska IDE w systemie Windows pod kątem programowania aplikacji na Android (29)
  • 1.6. Cykl życia w Androidzie (35)
  • 1.7. Instalowanie plików .apk w emulatorze za pomocą narzędzia ADB (36)
  • 1.8. Instalowanie aplikacji w emulatorze za pomocą sklepu SlideME (38)
  • 1.9. Współużytkowanie klas Javy z innym projektem środowiska Eclipse (39)
  • 1.10. Wskazywanie bibliotek z implementacją funkcji zewnętrznych (41)
  • 1.11. Wykorzystanie przykładów z pakietu SDK do ułatwienia sobie pracy (43)
  • 1.12. Aktualizowanie pakietu SDK Androida (46)
  • 1.13. Wykonywanie zrzutów w emulatorze i urządzeniu z Androidem (52)
  • 1.14. Prosty przykładowy program do odliczania wstecznego (55)
  • 1.15. Program Tipster - kalkulator napiwków na Android (57)

2. Projektowanie udanych aplikacji (73)

  • 2.1. Wprowadzenie - projektowanie udanych aplikacji na Android (73)
  • 2.2. Obsługa wyjątków (76)
  • 2.3. Obiekt Application w Androidzie jako singleton (79)
  • 2.4. Zachowywanie danych po zmianie orientacji ekranu (81)
  • 2.5. Monitorowanie poziomu baterii w urządzeniach z Androidem (83)
  • 2.6. Tworzenie ekranów powitalnych w Androidzie (84)
  • 2.7. Projektowanie aplikacji na potrzeby konferencji, BarCampu, hackathonu lub instytucji (88)
  • 2.8. Wykorzystanie narzędzia Google Analytics w aplikacjach na Android (90)
  • 2.9. Prosta latarka (92)
  • 2.10. Dostosowywanie aplikacji na telefony z Androidem do tabletów (94)
  • 2.11. Preferencje obowiązujące przy pierwszym uruchomieniu aplikacji (95)
  • 2.12. Formatowanie czasu i daty na potrzeby wyświetlania (97)
  • 2.13. Kontrolowanie danych wejściowych za pomocą odbiorników KeyListener (99)
  • 2.14. Tworzenie kopii zapasowej danych aplikacji na Android (102)
  • 2.15. Stosowanie wskazówek zamiast okien podpowiedzi (108)

3. Testy (111)

  • 3.1. Wprowadzenie - testy (111)
  • 3.2. Programowanie sterowane testami w Androidzie (111)
  • 3.3. Konfigurowanie urządzeń AVD na potrzeby testowania aplikacji (112)
  • 3.4. Testowanie aplikacji w wielu urządzeniach za pomocą chmury (121)
  • 3.5. Tworzenie i stosowanie projektu testowego (122)
  • 3.6. Rozwiązywanie problemów z awariami aplikacji (125)
  • 3.7. Debugowanie z wykorzystaniem instrukcji Log.d i okna LogCat (128)
  • 3.8. Automatyczne otrzymywanie raportów o błędach od użytkowników za pomocą mechanizmu BugSense (129)
  • 3.9. Korzystanie z lokalnego dziennika czasu wykonania do analizowania błędów i innych sytuacji (131)
  • 3.10. Odtwarzanie scenariuszy cyklu życia aktywności na potrzeby testów (134)
  • 3.11. Rozwijanie płynnie działających aplikacji za pomocą narzędzia StrictMode (139)
  • 3.12. Korzystanie z programu Monkey (140)
  • 3.13. Wysyłanie komunikatów tekstowych i przekazywanie wywołań między urządzeniami AVD (142)

4. Komunikacja wewnątrz- i międzyprocesowa (145)

  • 4.1. Wprowadzenie - komunikacja wewnątrz- i międzyprocesowa (145)
  • 4.2. Obsługiwanie strony internetowej, numeru telefonu lub innych elementów za pomocą intencji (146)
  • 4.3. Wysyłanie e-maili z poziomu widoku (147)
  • 4.4. Wysyłanie e-maili z załącznikami (150)
  • 4.5. Przekazywanie łańcuchów znaków za pomocą instrukcji Intent.putExtra() (151)
  • 4.6. Pobieranie danych z aktywności podrzędnej do aktywności głównej (152)
  • 4.7. Podtrzymywanie działania usługi w trakcie wyświetlania innych aplikacji (155)
  • 4.8. Wysyłanie i odbieranie komunikatów rozgłoszeniowych (157)
  • 4.9. Uruchamianie usługi po ponownym uruchomieniu urządzenia (158)
  • 4.10. Używanie wątków do tworzenia szybko reagujących aplikacji (159)
  • 4.11. Korzystanie z klasy AsyncTask do wykonywania operacji w tle (160)
  • 4.12. Przesyłanie komunikatów między wątkami za pomocą kolejki wątków aktywności i komponentu obsługi (166)
  • 4.13. Tworzenie androidowej wersji kalendarza Epoch (napisanego w HTML-u i JavaScripcie) (168)

5. Dostawcy treści (175)

  • 5.1. Wprowadzenie - dostawcy treści (175)
  • 5.2. Pobieranie danych z dostawcy treści (175)
  • 5.3. Pisanie dostawcy treści (177)
  • 5.4. Pisanie zdalnej usługi na Android (179)

6. Grafika (185)

  • 6.1. Wprowadzenie - grafika (185)
  • 6.2. Stosowanie niestandardowej czcionki (185)
  • 6.3. Wyświetlanie obracającego się sześcianu za pomocą specyfikacji OpenGL ES (187)
  • 6.4. Sterowanie obracającym się sześcianem (191)
  • 6.5. Odręczne rysowanie płynnych linii (194)
  • 6.6. Robienie zdjęć za pomocą intencji (198)
  • 6.7. Robienie zdjęć za pomocą klasy android.media.Camera (200)
  • 6.8. Skanowanie kodu kreskowego lub kodu QR za pomocą programu Google ZXing (204)
  • 6.9. Wyświetlanie diagramów i wykresów za pomocą klasy AndroidPlot (207)
  • 6.10. Tworzenie ikony do androidowego launchera za pomocą programu Inkscape (208)
  • 6.11. Łatwe tworzenie ikon do launchera za pomocą programu Paint.NET i grafik z serwisu OpenClipArt.org (215)
  • 6.12. Korzystanie z plików NinePatch (221)
  • 6.13. Tworzenie wykresów na strony HTML5 za pomocą biblioteki RGraph (224)
  • 6.14. Dodawanie prostej animacji rastrowej (228)
  • 6.15. Przybliżanie obrazu za pomocą gestów dotykowych (230)

7. Graficzny interfejs użytkownika (235)

  • 7.1. Wprowadzenie - interfejs GUI (235)
  • 7.2. Poznawanie i przestrzeganie wytycznych tworzenia interfejsu użytkownika (236)
  • 7.3. Obsługa zmian konfiguracji przez oddzielenie widoku od modelu (238)
  • 7.4. Tworzenie przycisku i odbiornika kliknięć (241)
  • 7.5. Pięć sposobów na dołączanie odbiornika zdarzeń (242)
  • 7.6. Stosowanie kontrolek CheckBox i RadioButton (246)
  • 7.7. Wzbogacanie projektu interfejsu użytkownika za pomocą przycisków graficznych (249)
  • 7.8. Udostępnianie listy rozwijanej z opcjami za pomocą klasy Spinner (251)
  • 7.9. Obsługa długiego kliknięcia (253)
  • 7.10. Wyświetlanie pól tekstowych TextView i EditText (254)
  • 7.11. Ograniczanie wartości pola EditText za pomocą atrybutów oraz interfejsu TextWatcher (255)
  • 7.12. Kontrolka AutoCompleteTextView (257)
  • 7.13. Zapełnianie kontrolki AutoCompleteTextView za pomocą zapytań do bazy SQLite (259)
  • 7.14. Przekształcanie pól tekstowych w pola na hasło (260)
  • 7.15. Zmiana klawisza Enter na Next na klawiaturze programowej (261)
  • 7.16. Obsługa w aktywności zdarzeń związanych z klawiszami (264)
  • 7.17. Pokaż im gwiazdy - kontrolka RatingBar (265)
  • 7.18. Drgający widok (268)
  • 7.19. Wyświetlanie dotykowych informacji zwrotnych (270)
  • 7.20. Przełączanie się między różnymi aktywnościami w widoku TabView (273)
  • 7.21. Tworzenie niestandardowego paska tytułu (275)
  • 7.22. Formatowanie liczb (277)
  • 7.23. Poprawne stosowanie liczby mnogiej (281)
  • 7.24. Wyświetlanie drugiego ekranu z poziomu pierwszego (283)
  • 7.25. Tworzenie ekranu wczytywania, wyświetlanego przy przełączaniu aktywności (291)
  • 7.26. Zakrywanie innych komponentów za pomocą klasy SlidingDrawer (292)
  • 7.27. Otwieranie komponentu SlidingDrawer od góry do dołu (295)
  • 7.28. Dodawanie do układu obramowania z zaokrąglonymi rogami (296)
  • 7.29. Wykrywanie gestów w Androidzie (299)
  • 7.30. Tworzenie interfejsu użytkownika w Androidzie 1.6 i nowszych wersjach za pomocą fragmentów z Androida 3.0 (305)
  • 7.31. Korzystanie z galerii zdjęć w Androidzie 3.0 (308)
  • 7.32. Tworzenie prostego widżetu aplikacji (311)

8. Alerty w interfejsach GUI - menu, okna dialogowe, komunikaty toast i powiadomienia (315)

  • 8.1. Wprowadzenie - alerty w interfejsach GUI (315)
  • 8.2. Tworzenie i wyświetlanie menu (316)
  • 8.3. Obsługa wyboru opcji menu (317)
  • 8.4. Tworzenie podmenu (318)
  • 8.5. Tworzenie wyskakujących okien dialogowych (okien z alertami) (321)
  • 8.6. Kontrolka Timepicker (322)
  • 8.7. Tworzenie obrotowego mechanizmu wybierania (podobnego do tego z iPhone'ów) (325)
  • 8.8. Tworzenie okna dialogowego z zakładkami (327)
  • 8.9. Tworzenie okna ProgressDialog (330)
  • 8.10. Tworzenie niestandardowego okna dialogowego z przyciskami, rysunkami i tekstem (331)
  • 8.11. Klasa AboutBox do wielokrotnego użytku (333)
  • 8.12. Modyfikowanie wyglądu komunikatów toast (336)
  • 8.13. Tworzenie powiadomienia wyświetlanego na pasku stanu (337)

9. GUI - kontrolka ListView (343)

  • 9.1. Wprowadzenie - kontrolka ListView (343)
  • 9.2. Używanie kontrolki ListView do tworzenia aplikacji opartych na listach (343)
  • 9.3. Tworzenie widoków "brak danych" dla kontrolek ListView (347)
  • 9.4. Tworzenie zaawansowanych kontrolek ListView z rysunkami i tekstem (349)
  • 9.5. Stosowanie nagłówków sekcji w kontrolkach ListView (352)
  • 9.6. Zachowywanie pozycji w kontrolce ListView (356)
  • 9.7. Niestandardowy adapter listy (357)
  • 9.8. Obsługa zmian orientacji - od wartości z kontrolki ListView po wykresy w orientacji poziomej (360)

10. Multimedia (367)

  • 10.1. Wprowadzenie - multimedia (367)
  • 10.2. Odtwarzanie filmów z serwisu YouTube (367)
  • 10.3. Używanie obiektu Gallery wraz z kontrolką ImageSwitcher (368)
  • 10.4. Rejestrowanie filmów za pomocą klasy MediaRecorder (371)
  • 10.5. Jak wykorzystać androidowy mechanizm wykrywania twarzy? (373)
  • 10.6. Odtwarzanie muzyki z pliku (376)
  • 10.7. Odtwarzanie dźwięku bez interakcji z użytkownikiem (378)
  • 10.8. Konwersja mowy na tekst (380)
  • 10.9. Konwersja tekstu na mowę (381)

11. Utrwalanie danych (383)

  • 11.1. Wprowadzenie - utrwalanie danych (383)
  • 11.2. Pobieranie informacji o plikach (383)
  • 11.3. Wczytywanie plików z aplikacji, a nie z systemu plików (386)
  • 11.4. Wyświetlanie zawartości katalogu (387)
  • 11.5. Określanie łącznej ilości pamięci oraz ilości wolnego miejsca na karcie SD (390)
  • 11.6. Prosty sposób tworzenia aktywności do ustawiania preferencji użytkownika (390)
  • 11.7. Sprawdzanie poprawności ustawień (394)
  • 11.8. Zaawansowane wyszukiwanie tekstu (396)
  • 11.9. Tworzenie bazy SQLite w aplikacji na Android (401)
  • 11.10. Wstawianie danych do bazy SQLite (402)
  • 11.11. Wczytywanie wartości z istniejącej bazy SQLite (402)
  • 11.12. Praca z datami w bazie SQLite (403)
  • 11.13. Przetwarzanie danych w formacie JSON za pomocą klasy JSONObject (406)
  • 11.14. Przetwarzanie dokumentów XML za pomocą interfejsu DOM API (407)
  • 11.15. Przetwarzanie dokumentów w formacie XML z wykorzystaniem interfejsu XmlPullParser (409)
  • 11.16. Dodawanie danych kontaktowych (412)
  • 11.17. Wczytywanie danych kontaktowych (415)

12. Aplikacje do obsługi połączeń telefonicznych (417)

  • 12.1. Wprowadzenie - aplikacje do obsługi połączeń telefonicznych (417)
  • 12.2. Wykonywanie operacji w momencie, gdy dzwoni telefon (418)
  • 12.3. Przetwarzanie wychodzących połączeń telefonicznych (421)
  • 12.4. Wybieranie numeru telefonu (424)
  • 12.5. Wysyłanie jedno- lub wieloczęściowych wiadomości SMS (425)
  • 12.6. Odbieranie wiadomości SMS w aplikacjach na Android (428)
  • 12.7. Wysyłanie wiadomości SMS do emulatora za pomocą okna Emulator Control (429)
  • 12.8. Korzystanie z androidowej klasy TelephonyManager do pobierania informacji o urządzeniu (430)

13. Aplikacje sieciowe (441)

  • 13.1. Wprowadzenie - sieć (441)
  • 13.2. Stosowanie usług sieciowych typu RESTful (442)
  • 13.3. Używanie wyrażeń regularnych do wyodrębniania informacji z nieustrukturyzowanego tekstu (444)
  • 13.4. Przetwarzanie danych z kanałów RSS i Atom za pomocą parsera ROME (446)
  • 13.5. Korzystanie ze skrótów MD5 do przetwarzania zwykłego tekstu (450)
  • 13.6. Przekształcanie tekstu na odnośniki (451)
  • 13.7. Dostęp do stron internetowych za pomocą kontrolki WebView (452)
  • 13.8. Modyfikowanie wyglądu kontrolki WebView (453)

14. Gry i animacje (455)

  • 14.1. Wprowadzenie - gry i animacje (455)
  • 14.2. Tworzenie gier na Android za pomocą frameworku flixel-android (456)
  • 14.3. Tworzenie gry na Android za pomocą narzędzia AndEngine (Android-Engine) (458)
  • 14.4. Przetwarzanie danych wejściowych wprowadzonych w określonym czasie (464)

15. Sieci społecznościowe (467)

  • 15.1. Wprowadzenie - sieci społecznościowe (467)
  • 15.2. Integrowanie aplikacji z sieciami społecznościowymi za pomocą protokołu HTTP (467)
  • 15.3. Wczytywanie chronologicznych list tweetów za pomocą formatu JSON (470)

16. Lokalizacja i mapy (473)

  • 16.1. Wprowadzenie - aplikacje wykorzystujące lokalizację (473)
  • 16.2. Pobieranie danych o lokalizacji (473)
  • 16.3. Dostęp do danych z GPS-a w aplikacjach (475)
  • 16.4. Podawanie fikcyjnych współrzędnych GPS w urządzeniu (477)
  • 16.5. Geokodowanie i geokodowanie odwrotne (479)
  • 16.6. Przygotowania do korzystania z map Google'a (480)
  • 16.7. Wyświetlanie aktualnej lokalizacji urządzenia na mapach Google'a (486)
  • 16.8. Wyświetlanie znacznika lokalizacji w widoku MapView (487)
  • 16.9. Wyświetlanie kilku znaczników w widoku MapView (490)
  • 16.10. Tworzenie warstw dla widoku MapView (495)
  • 16.11. Zmienianie trybów widoku MapView (496)
  • 16.12. Wyświetlanie ikony na warstwie bez korzystania z obiektów Drawable (497)
  • 16.13. Implementowanie wyszukiwania lokalizacji na mapach Google'a (501)
  • 16.14. Wyświetlanie widoku MapView w kontrolce TabView (503)
  • 16.15. Obsługa długich kliknięć w widokach MapView (505)
  • 16.16. Korzystanie z map OpenStreetMap (509)
  • 16.17. Tworzenie warstw dla map OSM (511)
  • 16.18. Stosowanie skali w mapach OSM (513)
  • 16.19. Obsługa dotknięć warstwy mapy OSM (514)
  • 16.20. Aktualizowanie lokalizacji na mapach OSM (516)

17. Akcelerometr (521)

  • 17.1. Wprowadzenie - czujniki (521)
  • 17.2. Wykrywanie obecności lub braku czujnika (521)
  • 17.3. Wykorzystywanie akcelerometru do wykrywania potrząsania urządzeniem (522)
  • 17.4. Używanie akcelerometru do sprawdzania, czy ekran skierowany jest w dół, czy w górę (526)
  • 17.5. Określanie ułożenia telefonu z Androidem za pomocą czujnika orientacji (527)
  • 17.6. Odczyt wskazań czujnika temperatury (528)

18. Bluetooth (531)

  • 18.1. Wprowadzenie - Bluetooth (531)
  • 18.2. Włączanie Bluetootha i umożliwianie wykrywania urządzenia (532)
  • 18.3. Podłączanie urządzenia z Bluetoothem (533)
  • 18.4. Oczekiwanie na żądania połączenia Bluetooth oraz ich akceptowanie (536)
  • 18.5. Implementowanie wykrywania urządzeń z Bluetoothem (537)

19. Sterowanie systemem i urządzeniem (539)

  • 19.1. Wprowadzenie - sterowanie systemem i urządzeniem (539)
  • 19.2. Dostęp do informacji o sieci i połączeniu (539)
  • 19.3. Pobieranie informacji z pliku manifestu (540)
  • 19.4. Zmienianie trybu dzwonka telefonu na cichy, wibracje lub normalny (541)
  • 19.5. Kopiowanie tekstu i pobieranie go ze schowka (542)
  • 19.6. Powiadomienia oparte na diodach LED (544)
  • 19.7. Włączanie wibracji w urządzeniu (544)
  • 19.8. Uruchamianie poleceń powłoki z poziomu aplikacji (545)
  • 19.9. Określanie, czy dana aplikacja jest uruchomiona (546)

20. Inne języki programowania i frameworki (549)

  • 20.1. Wprowadzenie - inne języki programowania (549)
  • 20.2. Uruchamianie zewnętrznych, natywnych instrukcji Uniksa i Linuksa (550)
  • 20.3. Uruchamianie kodu natywnego w języku C lub C++ za pomocą interfejsu JNI z pakietu NDK (551)
  • 20.4. Wprowadzenie do aplikacji Scripting Layer for Android (SL4A; wcześniej Android Scripting Environment) (556)
  • 20.5. Tworzenie alertów za pomocą biblioteki SL4A (558)
  • 20.6. Pobieranie dokumentów Google i wyświetlanie ich w kontrolce ListView za pomocą biblioteki SL4A (562)
  • 20.7. Używanie kodów QR do rozpowszechniania skryptów SL4A (563)
  • 20.8. Używanie JavaScriptu do wykorzystania wbudowanych funkcji telefonu poprzez kontrolkę WebView (566)
  • 20.9. Tworzenie aplikacji niezależnych od platformy za pomocą frameworku PhoneGap (568)

21. Łańcuchy znaków i internacjonalizacja (571)

  • 21.1. Wprowadzenie - internacjonalizacja (571)
  • 21.2. Internacjonalizacja tekstu aplikacji (572)
  • 21.3. Wyszukiwanie i tłumaczenie łańcuchów znaków (575)
  • 21.4. Niuanse związane z plikami strings.xml (577)

22. Tworzenie pakietów, instalowanie, dystrybucja i sprzedaż aplikacji (583)

  • 22.1. Wprowadzenie - tworzenie pakietów, instalowanie i dystrybucja (583)
  • 22.2. Tworzenie certyfikatu używanego przy podpisywaniu (583)
  • 22.3. Podpisywanie aplikacji (586)
  • 22.4. Udostępnianie aplikacji w sklepie Google Play (dawny Android Market) (587)
  • 22.5. Integrowanie sieci AdMob z aplikacją (588)
  • 22.6. Zaciemnianie i optymalizowanie kodu za pomocą ProGuarda (592)
  • 22.7. Odnośniki do aplikacji ze sklepu Google Play (595)

Skorowidz (599)