Platforma Android
Nowe wyzwania
Android to lider wśród systemów operacyjnych dla telefonów i tabletów.
Spotkasz go w większości tego typu urządzeń. Ciągły rozwój Androida sprawił,
że jego obecne wersje zapewniają niesamowite możliwości, a przy tym są przyjazne dla
programistów. Jeżeli poznałeś już ten system i marzysz o stworzeniu bardziej
zaawansowanej aplikacji, to trafiłeś na doskonałą książkę.
W trakcie jej lektury wzbogacisz swoją wiedzę o cenne informacje. Dowiesz się, jak
skonfigurować środowisko programistyczne oraz efektywnie wykorzystać język Java do
tworzenia aplikacji. Po tym wstępie zaczniesz poznawać bardziej zaawansowane elementy
platformy. Nauczysz się korzystać z zasobów, projektować interfejs użytkownika,
tworzyć usługi i zadania pracujące w tle oraz odbierać komunikaty i dokonywać zmian w
konfiguracji. Ponadto Twoją ciekawość powinny przykuć rozdziały poświęcone testom
automatycznym, geolokalizacji oraz bezpieczeństwu tworzonych aplikacji. Na sam koniec
został gwóźdź programu — hakowanie platformy Android oraz wykorzystanie ukrytego
API. Brzmi intrygująco? I tak właśnie jest!
Tematy poruszane i rozwijane w książce:
Optymalizacja składników aplikacji w celu zapewnienia ich jak najpłynniejszego
działania
Tworzenie własnych widoków
Wykorzystanie wszystkich możliwości SDK Androida
Obsługa środowiska Android Studio i systemu Gradle
Optymalne wykorzystanie możliwości API dźwiękowego, graficznego i wideo
Implementacja funkcji czytania tekstu na głos i rozpoznawania mowy
Obsługa nowego API lokalizacji Androida
Wykorzystanie technologii łączności Androida w celu łączenia urządzeń
Przetwarzanie w tle
Posługiwanie się API kryptograficznymi Androida
Znajdowanie i bezpieczne używanie ukrytych API Androida
Przechowywanie danych aplikacji w chmurze dzięki usługom Google Play
Dystrybucja i sprzedaż aplikacji w sklepie Google Play
O autorze (13)
Wprowadzenie (15)
CZĘŚĆ I: SOLIDNE PODSTAWY (21)
Rozdział 1. Konfigurowanie środowiska programistycznego (23)
- Systemy operacyjne do programowania Androida (23)
- Zaawansowane narzędzia SDK Androida (24)
- Narzędzie adb (24)
- Testowanie przeciążeniowe interfejsu użytkownika przy użyciu Monkey (27)
- System kompilacji Gradle (28)
- Optymalizacja i zaciemnianie za pomocą ProGuard (30)
- Projekty bibliotek Android i biblioteki zewnętrzne (31)
- Skompilowane pliki JAR (31)
- Tworzenie projektu biblioteki (32)
- Kontrola wersji i zarządzanie kodem źródłowym (33)
- Środowisko programistyczne (35)
- Diagnozowanie aplikacji Android (35)
- Statyczna analiza kodu przy użyciu lint (37)
- Refaktoryzacja kodu (39)
- Opcje programistyczne w urządzeniach z Androidem (41)
- Ustawienia programistyczne (42)
- Podsumowanie (44)
- Dodatkowe źródła informacji (44)
- Książki (44)
- Strony internetowe (44)
Rozdział 2. Efektywne programowanie w Javie na Androidzie (45)
- Porównanie Javy Dalvik z Javą SE (45)
- Optymalizacja kodu Java dla Androida (47)
- Bezpieczne pod względem typów wyliczenia w Androidzie (48)
- Udoskonalona pętla for w Androidzie (49)
- Kolejki, synchronizacja i blokady (50)
- Zarządzanie pamięcią i alokacją (52)
- Ograniczanie liczby alokacji obiektów (52)
- Wielowątkowość w Androidzie (55)
- Klasa Thread (56)
- Klasa AsyncTask (57)
- Klasa Handler (58)
- Wykonywanie operacji w regularnych odstępach czasu (60)
- Używanie klasy MainLooper w połączeniu z Handler (61)
- Jak wybrać najlepsze rozwiązanie (62)
- Podsumowanie (63)
- Dodatkowe źródła informacji (63)
- Dokumentacja (63)
- Książki (63)
- Strony internetowe (63)
CZĘŚĆ II: EFEKTYWNE WYKORZYSTANIE SKŁADNIKÓW (65)
Rozdział 3. Składniki, manifesty i zasoby (67)
- Składniki Androida (67)
- Składnik Activity (68)
- Składnik Service (68)
- Składnik BroadcastReceiver (68)
- Składnik ContentProvider (69)
- Składnik Application (69)
- Architektura aplikacji (71)
- Manifest aplikacji Android (72)
- Element manifest (72)
- Filtry i uprawnienia Google Play (73)
- Element application (75)
- Elementy i atrybuty składników (76)
- Filtrowanie intencji (77)
- Zasoby i środki (78)
- Zaawansowane zasoby łańcuchowe (79)
- Lokalizacja (80)
- Kwalifikatory zasobów (80)
- Środki (82)
- Podsumowanie (83)
- Dodatkowe źródła informacji (83)
Rozdział 4. Interakcja z użytkownikiem i projektowanie interfejsów (85)
- Historyjki użytkowników (85)
- Użytkownicy i postaci (86)
- Projektowanie interfejsu użytkownika Androida (87)
- Nawigacja (87)
- Prototypowanie interfejsu użytkownika (88)
- Projektowanie interfejsu użytkownika w Android Studio (88)
- Elementy interfejsu użytkownika Androida (89)
- Tekst w aplikacjach na Androida (89)
- Krój pisma (89)
- Układ tekstu (90)
- Wymiary i rozmiary (90)
- Zalecane wymiary (91)
- Rozmiary ikon (91)
- Rozmiar tekstu (92)
- Kolory (92)
- Daltonizm (93)
- Obrazy i ikony (93)
- Perspektywa kanoniczna (94)
- Geony (94)
- Rozpoznawanie twarzy (95)
- Walory użytkowe (95)
- Nagradzanie użytkownika (96)
- Podsumowanie (97)
- Dodatkowe źródła informacji (98)
- Książki (98)
- Strony internetowe (98)
Rozdział 5. Interfejs użytkownika dla zaawansowanych (99)
- Aktywności i fragmenty (99)
- Używanie wielu ekranów (100)
- Projektowanie własnych widoków (102)
- Cykl życia widoku (103)
- Widżet o wyglądzie klawiatury fortepianowej (103)
- Wielodotyk (108)
- Współrzędne wskaźnika (110)
- Gest obrotu (111)
- OpenGL ES (112)
- Grafy sceny i silniki gier (113)
- Podsumowanie (113)
- Dodatkowe źródła informacji (114)
- Książki (114)
- Strony internetowe (114)
Rozdział 6. Usługi i zadania w tle (115)
- Jak i kiedy używać usług (115)
- Cykl życia usług (116)
- Tworzenie i niszczenie usług (116)
- Uruchamianie usług (117)
- Wiązanie usług (118)
- Utrzymywanie się przy życiu (120)
- Zatrzymywanie usług (121)
- Działanie w tle (123)
- Klasa IntentService (123)
- Równoległe wykonywanie (124)
- Komunikacja z usługami (126)
- Asynchroniczne wysyłanie powiadomień przy użyciu intencji (126)
- Lokalne wiązanie usług (127)
- Podsumowanie (130)
- Dodatkowe źródła informacji (131)
Rozdział 7. Komunikacja międzyprocesowa (133)
- Binder (134)
- Adres Bindera (134)
- Transakcje Bindera (135)
- Klasa Parcel (136)
- Łącze ze śmiercią (138)
- Projektowanie API (138)
- AIDL (139)
- Wywołania zwrotne przy użyciu AIDL (142)
- Klasa Messenger (143)
- Opakowywanie API w biblioteki (146)
- Zabezpieczanie zdalnych API (148)
- Podsumowanie (149)
- Dodatkowe źródła informacji (149)
Rozdział 8. Odbieranie komunikatów i zmiany konfiguracji (151)
- Klasa BroadcastReceiver (152)
- Lokalne odbiorniki powiadomień (153)
- Powiadomienia normalne i uporządkowane (154)
- Powiadomienia kleiste (155)
- Powiadomienia bezpośrednie (156)
- Włączanie i wyłączanie odbiorników (156)
- Intencje rozsyłane przez system (157)
- Zmienianie konfiguracji urządzenia (160)
- Podsumowanie (161)
- Dodatkowe źródła informacji (161)
Rozdział 9. Przechowywanie i serializacja danych (163)
- Techniki utrwalania danych w Androidzie (163)
- Przechowywanie danych w plikach preferencji (164)
- Opcje użytkownika i ustawienia interfejsu użytkownika (166)
- Dostawcy treści o wysokiej wydajności (168)
- Projektowanie bazy danych w Androidzie (168)
- Tworzenie i aktualizowanie baz danych (169)
- Implementacja metod zapytaniowych (171)
- Transakcje bazy danych (172)
- Zapisywanie danych binarnych w ContentProvider (174)
- Serializacja danych do utrwalania (175)
- JSON (175)
- Zaawansowana obsługa JSON przy użyciu Gson (177)
- Protocol Buffers Google (179)
- Robienie kopii zapasowej danych aplikacji (181)
- Podsumowanie (183)
- Dodatkowe źródła informacji (183)
- Dokumentacja (183)
- Strony internetowe (183)
Rozdział 10. Pisanie automatycznych testów (185)
- Zasady testowania w Androidzie (185)
- Co testować (186)
- Podstawowe testy jednostkowe (187)
- Testowanie aktywności (188)
- Testowanie usług (190)
- Testowanie dostawców treści (191)
- Wykonywanie testów (193)
- Ciągła integracja (194)
- Podsumowanie (195)
- Dodatkowe źródła informacji (195)
- Porady dotyczące testowania (195)
- Książki (195)
- Strony internetowe (195)
CZĘŚĆ III: PRZEKRACZANIE BARIER (197)
Rozdział 11. Zaawansowane aplikacje obsługujące audio, wideo oraz kamerę (199)
- Zaawansowane aplikacje dźwiękowe (199)
- Odtwarzanie dźwięków z krótkim opóźnieniem (200)
- OpenSL ES dla Androida (202)
- Czytanie tekstu na głos (205)
- Rozpoznawanie mowy (207)
- Przetwarzanie filmów przy użyciu OpenGL ES 2.0 (209)
- Przetwarzanie obrazu z kamery przy użyciu OpenGL ES 2.0 (212)
- Kodowanie mediów (213)
- Nagrywanie sceny OpenGL (214)
- Podsumowanie (218)
- Dodatkowe źródła informacji (218)
Rozdział 12. Bezpieczeństwo aplikacji na Androidzie (219)
- Pojęcia dotyczące bezpieczeństwa (219)
- Klucze i podpisy (219)
- Uprawnienia w Androidzie (220)
- Ochrona danych użytkownika (221)
- Weryfikowanie wywołujących aplikacji (222)
- Szyfrowanie danych u klienta (223)
- API crypto (223)
- Generowanie klucza (223)
- Szyfrowanie danych (223)
- Deszyfrowanie danych (224)
- Praca z zaszyfrowanymi danymi (225)
- Zarządzanie pękami kluczy (226)
- API zarządzania urządzeniem (229)
- Podsumowanie (232)
- Dodatkowe źródła informacji (232)
- Książki (232)
- Dokumentacja (232)
- Strony internetowe (232)
Rozdział 13. Mapy, lokalizacja i API aktywności (233)
- Scalony menedżer lokalizacji (233)
- Integracja API map Google (234)
- Korzystanie z map Google (236)
- Znaczniki na mapach (237)
- Rysowanie kółek (238)
- Rysowanie wielokątów (239)
- Przydatne narzędzia API lokalizacyjnego (240)
- Geokodowanie (240)
- Klasa LocationClient (241)
- Geofencing (242)
- Rozpoznawanie aktywności (244)
- Podsumowanie (246)
- Dodatkowe źródła informacji (246)
- Dokumentacja (246)
- Strony internetowe (246)
Rozdział 14. Kod macierzysty i JNI (247)
- Kilka uwag o architekturze CPU (247)
- Pisanie aplikacji na Androida w języku C (248)
- Skrypty kompilacji NDK (248)
- Macierzyste aktywności (249)
- Macierzysty interfejs Javy (250)
- Wywoływanie funkcji macierzystych w Javie (250)
- Wywoływanie metod Javy z kodu macierzystego (252)
- Macierzyste API Androida (255)
- Biblioteka C (256)
- Macierzyste funkcje obsługi dziennika (256)
- OpenGL ES 2.0 w kodzie macierzystym (256)
- OpenSL ES w kodzie macierzystym (256)
- Przenoszenie macierzystej biblioteki do Androida (257)
- Kompilowanie macierzystej biblioteki (257)
- Podsumowanie (262)
- Dodatkowe źródła informacji (263)
- Portal dla programistów Androida (263)
- Strony internetowe firmy Oracle (263)
Rozdział 15. Ukryte API Androida (265)
- API ukryte i oficjalne (265)
- Wyszukiwanie ukrytych API (266)
- Bezpieczne wywoływanie ukrytych API (267)
- Wydobywanie ukrytych API z urządzenia (268)
- Wywoływanie ukrytych API przy użyciu refleksji (270)
- Przykłady ukrytych API (271)
- Odbieranie i czytanie SMS-ów (271)
- Tethering Wi-Fi (272)
- Ukryte ustawienia (273)
- Podsumowanie (274)
- Dodatkowe źródła informacji (274)
Rozdział 16. Hakowanie platformy Android (275)
- Odblokowywanie urządzenia (276)
- Wgrywanie obrazów fabrycznych (277)
- Odblokowywanie urządzeń innych niż Google Nexus (277)
- Oprogramowanie układowe od grup programistów (278)
- Kod źródłowy Androida (278)
- Konfiguracja środowiska kompilacji (278)
- Kompilowanie i wgrywanie oprogramowania układowego (279)
- Pisanie aplikacji systemowych (280)
- Certyfikaty platformy (281)
- Podpisywanie aplikacji (282)
- Hakowanie platformy Android (283)
- Konfiguracje środowiska programistycznego (283)
- Projekty Android (284)
- Jądro Linuksa w Androidzie (285)
- Dodawanie usługi systemowej (285)
- Przyspieszanie prac nad platformą (288)
- Własny wkład w rozwój AOSP (289)
- Podsumowanie (289)
- Dodatkowe źródła informacji (291)
Rozdział 17. Praca w sieci, usługi sieciowe oraz zdalne API (293)
- Korzystanie z sieci w Androidzie (293)
- Klasa HttpUrlConnection (294)
- Volley (297)
- OkHttp i SPDY (299)
- Gniazda sieciowe (300)
- Integracja usług sieciowych (303)
- Static Maps v2 Google (303)
- Używanie OAuth2 w API Foursquare (305)
- SDK Facebooka dla Androida (308)
- Znajdowanie usług sieciowych i API (312)
- Korzystanie z sieci a zużycie energii (312)
- Ogólne wskazówki (313)
- Energooszczędne odpytywanie sieci (314)
- Powiadamianie przez serwer (314)
- Podsumowanie (317)
- Dodatkowe źródła informacji (317)
- Dokumentacja (317)
- Strony internetowe (317)
Rozdział 18. Komunikacja ze zdalnymi urządzeniami (319)
- Technologie łączności Androida (319)
- USB w Androidzie (320)
- Bluetooth LE (322)
- Wi-Fi w Androidzie (325)
- Wykrywanie usług sieciowych (325)
- Wi-Fi Direct (326)
- Usługi sieciowe na urządzeniach (329)
- Tworzenie usług typu RESTful przy użyciu Restlet (329)
- Serwer WebSocket (332)
- Podsumowanie (334)
- Dodatkowe źródła informacji (335)
Rozdział 19. Usługi Google Play (337)
- Uwierzytelnianie (337)
- Dane aplikacji z dysku Google (340)
- Zakończenia Google Cloud (343)
- Google Cloud Messaging (345)
- Usługi Google Play dla gier (349)
- Przesyłanie danych w powiadomieniach (351)
- Strategia przesyłania wiadomości (352)
- Podsumowanie (353)
- Dodatkowe źródła informacji (354)
Rozdział 20. Dystrybucja aplikacji w sklepie Google Play (355)
- Pobieranie opłat wewnątrz aplikacji (356)
- Konsumowanie produktów (358)
- Subskrypcje wewnątrz aplikacji (358)
- Reklamy w aplikacjach na Androida (359)
- Kierowanie reklam (360)
- Kolory reklam (361)
- Reklamy pełnoekranowe (361)
- Licencjonowanie aplikacji (362)
- Pliki rozszerzeń APK (363)
- Tworzenie plików rozszerzeń (363)
- Pobieranie plików rozszerzeń (363)
- Podsumowanie (365)
- Dodatkowe źródła informacji (365)
Skorowidz (367)
376 stron, Format: 16.5x23.5cm, oprawa miękka