tytuł oryginału: android cookbookpdf.helion.pl/andrec/andrec.pdf1.4. tworzenie aplikacji „witaj,...

42

Upload: others

Post on 20-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows
Page 2: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Tytuł oryginału: Android Cookbook

Tłumaczenie: Tomasz Walczak

ISBN: 978-83-246-6269-2

© 2013 Helion S.A.

Authorized Polish translation of the English edition of Android Cookbook, 1st Edition, ISBN 9781449388416 © 2012 O’Reilly Media Inc.

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletnei rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/andrecMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/andrec.zip

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

5

Spis tre�ci

Przedmowa ............................................................................................................................. 13

1. Podstawowe informacje .............................................................................................. 191.1. Wprowadzenie — podstawowe informacje 191.2. Nauka Javy 191.3. Tworzenie aplikacji „Witaj, �wiecie” z poziomu wiersza polece� 211.4. Tworzenie aplikacji „Witaj, �wiecie” w �rodowisku Eclipse 241.5. Konfigurowanie �rodowiska IDE w systemie Windows pod k�tem

programowania aplikacji na Android 291.6. Cykl �ycia w Androidzie 351.7. Instalowanie plików .apk w emulatorze za pomoc� narz�dzia ADB 361.8. Instalowanie aplikacji w emulatorze za pomoc� sklepu SlideME 381.9. Wspó�u�ytkowanie klas Javy z innym projektem �rodowiska Eclipse 39

1.10. Wskazywanie bibliotek z implementacj� funkcji zewn�trznych 411.11. Wykorzystanie przyk�adów z pakietu SDK do u�atwienia sobie pracy 431.12. Aktualizowanie pakietu SDK Androida 461.13. Wykonywanie zrzutów w emulatorze i urz�dzeniu z Androidem 521.14. Prosty przyk�adowy program do odliczania wstecznego 551.15. Program Tipster — kalkulator napiwków na Android 57

2. Projektowanie udanych aplikacji ................................................................................. 732.1. Wprowadzenie — projektowanie udanych aplikacji na Android 732.2. Obs�uga wyj�tków 762.3. Obiekt Application w Androidzie jako singleton 792.4. Zachowywanie danych po zmianie orientacji ekranu 812.5. Monitorowanie poziomu baterii w urz�dzeniach z Androidem 832.6. Tworzenie ekranów powitalnych w Androidzie 842.7. Projektowanie aplikacji na potrzeby konferencji, BarCampu,

hackathonu lub instytucji 882.8. Wykorzystanie narz�dzia Google Analytics w aplikacjach na Android 90

Page 4: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

6 � Spis tre�ci

2.9. Prosta latarka 922.10. Dostosowywanie aplikacji na telefony z Androidem do tabletów 942.11. Preferencje obowi�zuj�ce przy pierwszym uruchomieniu aplikacji 952.12. Formatowanie czasu i daty na potrzeby wy�wietlania 972.13. Kontrolowanie danych wej�ciowych za pomoc� odbiorników KeyListener 992.14. Tworzenie kopii zapasowej danych aplikacji na Android 1022.15. Stosowanie wskazówek zamiast okien podpowiedzi 108

3. Testy ............................................................................................................................. 1113.1. Wprowadzenie — testy 1113.2. Programowanie sterowane testami w Androidzie 1113.3. Konfigurowanie urz�dze� AVD na potrzeby testowania aplikacji 1123.4. Testowanie aplikacji w wielu urz�dzeniach za pomoc� chmury 1213.5. Tworzenie i stosowanie projektu testowego 1223.6. Rozwi�zywanie problemów z awariami aplikacji 1253.7. Debugowanie z wykorzystaniem instrukcji Log.d i okna LogCat 1283.8. Automatyczne otrzymywanie raportów o b��dach od u�ytkowników

za pomoc� mechanizmu BugSense 1293.9. Korzystanie z lokalnego dziennika czasu wykonania do analizowania

b��dów i innych sytuacji 1313.10. Odtwarzanie scenariuszy cyklu �ycia aktywno�ci na potrzeby testów 1343.11. Rozwijanie p�ynnie dzia�aj�cych aplikacji za pomoc� narz�dzia

StrictMode 1393.12. Korzystanie z programu Monkey 1403.13. Wysy�anie komunikatów tekstowych i przekazywanie wywo�a�

mi�dzy urz�dzeniami AVD 142

4. Komunikacja wewn�trz- i mi�dzyprocesowa .......................................................... 1454.1. Wprowadzenie — komunikacja wewn�trz- i mi�dzyprocesowa 1454.2. Obs�ugiwanie strony internetowej, numeru telefonu lub innych

elementów za pomoc� intencji 1464.3. Wysy�anie e-maili z poziomu widoku 1474.4. Wysy�anie e-maili z za��cznikami 1504.5. Przekazywanie �a�cuchów znaków za pomoc� instrukcji Intent.putExtra() 1514.6. Pobieranie danych z aktywno�ci podrz�dnej do aktywno�ci g�ównej 1524.7. Podtrzymywanie dzia�ania us�ugi w trakcie wy�wietlania innych aplikacji 1554.8. Wysy�anie i odbieranie komunikatów rozg�oszeniowych 1574.9. Uruchamianie us�ugi po ponownym uruchomieniu urz�dzenia 158

4.10. U�ywanie w�tków do tworzenia szybko reaguj�cych aplikacji 1594.11. Korzystanie z klasy AsyncTask do wykonywania operacji w tle 1604.12. Przesy�anie komunikatów mi�dzy w�tkami za pomoc� kolejki w�tków

aktywno�ci i komponentu obs�ugi 166

Page 5: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Spis tre�ci � 7

4.13. Tworzenie androidowej wersji kalendarza Epoch(napisanego w HTML-u i JavaScripcie) 168

5. Dostawcy tre�ci ............................................................................................................1755.1. Wprowadzenie — dostawcy tre�ci 1755.2. Pobieranie danych z dostawcy tre�ci 1755.3. Pisanie dostawcy tre�ci 1775.4. Pisanie zdalnej us�ugi na Android 179

6. Grafika ......................................................................................................................... 1856.1. Wprowadzenie — grafika 1856.2. Stosowanie niestandardowej czcionki 1856.3. Wy�wietlanie obracaj�cego si� sze�cianu za pomoc� specyfikacji

OpenGL ES 1876.4. Sterowanie obracaj�cym si� sze�cianem 1916.5. Odr�czne rysowanie p�ynnych linii 1946.6. Robienie zdj�� za pomoc� intencji 1986.7. Robienie zdj�� za pomoc� klasy android.media.Camera 2006.8. Skanowanie kodu kreskowego lub kodu QR za pomoc� programu

Google ZXing 2046.9. Wy�wietlanie diagramów i wykresów za pomoc� klasy AndroidPlot 207

6.10. Tworzenie ikony do androidowego launchera za pomoc� programuInkscape 208

6.11. atwe tworzenie ikon do launchera za pomoc� programu Paint.NETi grafik z serwisu OpenClipArt.org 215

6.12. Korzystanie z plików NinePatch 2216.13. Tworzenie wykresów na strony HTML5 za pomoc� biblioteki RGraph 2246.14. Dodawanie prostej animacji rastrowej 2286.15. Przybli�anie obrazu za pomoc� gestów dotykowych 230

7. Graficzny interfejs u�ytkownika ...............................................................................2357.1. Wprowadzenie — interfejs GUI 2357.2. Poznawanie i przestrzeganie wytycznych tworzenia

interfejsu u�ytkownika 2367.3. Obs�uga zmian konfiguracji przez oddzielenie widoku od modelu 2387.4. Tworzenie przycisku i odbiornika klikni�� 2417.5. Pi�� sposobów na do��czanie odbiornika zdarze� 2427.6. Stosowanie kontrolek CheckBox i RadioButton 2467.7. Wzbogacanie projektu interfejsu u�ytkownika za pomoc�

przycisków graficznych 2497.8. Udost�pnianie listy rozwijanej z opcjami za pomoc� klasy Spinner 2517.9. Obs�uga d�ugiego klikni�cia 253

7.10. Wy�wietlanie pól tekstowych TextView i EditText 254

Page 6: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

8 � Spis tre�ci

7.11. Ograniczanie warto�ci pola EditText za pomoc� atrybutóworaz interfejsu TextWatcher 255

7.12. Kontrolka AutoCompleteTextView 2577.13. Zape�nianie kontrolki AutoCompleteTextView za pomoc� zapyta�

do bazy SQLite 2597.14. Przekszta�canie pól tekstowych w pola na has�o 2607.15. Zmiana klawisza Enter na Next na klawiaturze programowej 2617.16. Obs�uga w aktywno�ci zdarze� zwi�zanych z klawiszami 2647.17. Poka� im gwiazdy — kontrolka RatingBar 2657.18. Drgaj�cy widok 2687.19. Wy�wietlanie dotykowych informacji zwrotnych 2707.20. Prze��czanie si� mi�dzy ró�nymi aktywno�ciami w widoku TabView 2737.21. Tworzenie niestandardowego paska tytu�u 2757.22. Formatowanie liczb 2777.23. Poprawne stosowanie liczby mnogiej 2817.24. Wy�wietlanie drugiego ekranu z poziomu pierwszego 2837.25. Tworzenie ekranu wczytywania, wy�wietlanego przy prze��czaniu

aktywno�ci 2917.26. Zakrywanie innych komponentów za pomoc� klasy SlidingDrawer 2927.27. Otwieranie komponentu SlidingDrawer od góry do do�u 2957.28. Dodawanie do uk�adu obramowania z zaokr�glonymi rogami 2967.29. Wykrywanie gestów w Androidzie 2997.30. Tworzenie interfejsu u�ytkownika w Androidzie 1.6 i nowszych

wersjach za pomoc� fragmentów z Androida 3.0 3057.31. Korzystanie z galerii zdj�� w Androidzie 3.0 3087.32. Tworzenie prostego wid�etu aplikacji 311

8. Alerty w interfejsach GUI — menu, okna dialogowe, komunikaty toasti powiadomienia ......................................................................................................... 315

8.1. Wprowadzenie — alerty w interfejsach GUI 3158.2. Tworzenie i wy�wietlanie menu 3168.3. Obs�uga wyboru opcji menu 3178.4. Tworzenie podmenu 3188.5. Tworzenie wyskakuj�cych okien dialogowych (okien z alertami) 3218.6. Kontrolka Timepicker 3228.7. Tworzenie obrotowego mechanizmu wybierania

(podobnego do tego z iPhone’ów) 3258.8. Tworzenie okna dialogowego z zak�adkami 3278.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

Page 7: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Spis tre�ci � 9

8.12. Modyfikowanie wygl�du komunikatów toast 3368.13. Tworzenie powiadomienia wy�wietlanego na pasku stanu 337

9. GUI — kontrolka ListView ..........................................................................................3439.1. Wprowadzenie — kontrolka ListView 3439.2. U�ywanie kontrolki ListView do tworzenia aplikacji opartych na listach 3439.3. Tworzenie widoków „brak danych” dla kontrolek ListView 3479.4. Tworzenie zaawansowanych kontrolek ListView z rysunkami i tekstem 3499.5. Stosowanie nag�ówków sekcji w kontrolkach ListView 3529.6. Zachowywanie pozycji w kontrolce ListView 3569.7. Niestandardowy adapter listy 3579.8. Obs�uga zmian orientacji — od warto�ci z kontrolki ListView

po wykresy w orientacji poziomej 360

10. Multimedia .................................................................................................................. 36710.1. Wprowadzenie — multimedia 36710.2. Odtwarzanie filmów z serwisu YouTube 36710.3. U�ywanie obiektu Gallery wraz z kontrolk� ImageSwitcher 36810.4. Rejestrowanie filmów za pomoc� klasy MediaRecorder 37110.5. Jak wykorzysta� androidowy mechanizm wykrywania twarzy? 37310.6. Odtwarzanie muzyki z pliku 37610.7. Odtwarzanie dwi�ku bez interakcji z u�ytkownikiem 37810.8. Konwersja mowy na tekst 38010.9. Konwersja tekstu na mow� 381

11. Utrwalanie danych .....................................................................................................38311.1. Wprowadzenie — utrwalanie danych 38311.2. Pobieranie informacji o plikach 38311.3. Wczytywanie plików z aplikacji, a nie z systemu plików 38611.4. Wy�wietlanie zawarto�ci katalogu 38711.5. Okre�lanie ��cznej ilo�ci pami�ci oraz ilo�ci wolnego miejsca na karcie SD 39011.6. Prosty sposób tworzenia aktywno�ci do ustawiania preferencji

u�ytkownika 39011.7. Sprawdzanie poprawno�ci ustawie� 39411.8. Zaawansowane wyszukiwanie tekstu 39611.9. Tworzenie bazy SQLite w aplikacji na Android 401

11.10. Wstawianie danych do bazy SQLite 40211.11. Wczytywanie warto�ci z istniej�cej bazy SQLite 40211.12. Praca z datami w bazie SQLite 40311.13. Przetwarzanie danych w formacie JSON za pomoc� klasy JSONObject 40611.14. Przetwarzanie dokumentów XML za pomoc� interfejsu DOM API 40711.15. Przetwarzanie dokumentów w formacie XML z wykorzystaniem

interfejsu XmlPullParser 409

Page 8: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10 � Spis tre�ci

11.16. Dodawanie danych kontaktowych 41211.17. Wczytywanie danych kontaktowych 415

12. Aplikacje do obs�ugi po��cze� telefonicznych .......................................................... 41712.1. Wprowadzenie — aplikacje do obs�ugi po��cze� telefonicznych 41712.2. Wykonywanie operacji w momencie, gdy dzwoni telefon 41812.3. Przetwarzanie wychodz�cych po��cze� telefonicznych 42112.4. Wybieranie numeru telefonu 42412.5. Wysy�anie jedno- lub wielocz��ciowych wiadomo�ci SMS 42512.6. Odbieranie wiadomo�ci SMS w aplikacjach na Android 42812.7. Wysy�anie wiadomo�ci SMS do emulatora za pomoc� okna

Emulator Control 42912.8. Korzystanie z androidowej klasy TelephonyManager do pobierania

informacji o urz�dzeniu 430

13. Aplikacje sieciowe ...................................................................................................... 44113.1. Wprowadzenie — sie� 44113.2. Stosowanie us�ug sieciowych typu RESTful 44213.3. U�ywanie wyra�e� regularnych do wyodr�bniania informacji

z nieustrukturyzowanego tekstu 44413.4. Przetwarzanie danych z kana�ów RSS i Atom za pomoc� parsera ROME 44613.5. Korzystanie ze skrótów MD5 do przetwarzania zwyk�ego tekstu 45013.6. Przekszta�canie tekstu na odno�niki 45113.7. Dost�p do stron internetowych za pomoc� kontrolki WebView 45213.8. Modyfikowanie wygl�du kontrolki WebView 453

14. Gry i animacje .............................................................................................................45514.1. Wprowadzenie — gry i animacje 45514.2. Tworzenie gier na Android za pomoc� frameworku flixel-android 45614.3. Tworzenie gry na Android za pomoc� narz�dzia AndEngine

(Android-Engine) 45814.4. Przetwarzanie danych wej�ciowych wprowadzonych w okre�lonym czasie 464

15. Sieci spo�eczno�ciowe ................................................................................................46715.1. Wprowadzenie — sieci spo�eczno�ciowe 46715.2. Integrowanie aplikacji z sieciami spo�eczno�ciowymi za pomoc�

protoko�u HTTP 46715.3. Wczytywanie chronologicznych list tweetów za pomoc� formatu JSON 470

16. Lokalizacja i mapy .......................................................................................................47316.1. Wprowadzenie — aplikacje wykorzystuj�ce lokalizacj� 47316.2. Pobieranie danych o lokalizacji 47316.3. Dost�p do danych z GPS-a w aplikacjach 475

Page 9: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Spis tre�ci � 11

16.4. Podawanie fikcyjnych wspó�rz�dnych GPS w urz�dzeniu 47716.5. Geokodowanie i geokodowanie odwrotne 47916.6. Przygotowania do korzystania z map Google’a 48016.7. Wy�wietlanie aktualnej lokalizacji urz�dzenia na mapach Google’a 48616.8. Wy�wietlanie znacznika lokalizacji w widoku MapView 48716.9. Wy�wietlanie kilku znaczników w widoku MapView 490

16.10. Tworzenie warstw dla widoku MapView 49516.11. Zmienianie trybów widoku MapView 49616.12. Wy�wietlanie ikony na warstwie bez korzystania z obiektów Drawable 49716.13. Implementowanie wyszukiwania lokalizacji na mapach Google’a 50116.14. Wy�wietlanie widoku MapView w kontrolce TabView 50316.15. Obs�uga d�ugich klikni�� w widokach MapView 50516.16. Korzystanie z map OpenStreetMap 50916.17. Tworzenie warstw dla map OSM 51116.18. Stosowanie skali w mapach OSM 51316.19. Obs�uga dotkni�� warstwy mapy OSM 51416.20. Aktualizowanie lokalizacji na mapach OSM 516

17. Akcelerometr .............................................................................................................. 52117.1. Wprowadzenie — czujniki 52117.2. Wykrywanie obecno�ci lub braku czujnika 52117.3. Wykorzystywanie akcelerometru do wykrywania potrz�sania

urz�dzeniem 52217.4. U�ywanie akcelerometru do sprawdzania, czy ekran skierowany

jest w dó�, czy w gór� 52617.5. Okre�lanie u�o�enia telefonu z Androidem za pomoc� czujnika orientacji 52717.6. Odczyt wskaza� czujnika temperatury 528

18. Bluetooth .................................................................................................................... 53118.1. Wprowadzenie — Bluetooth 53118.2. W��czanie Bluetootha i umo�liwianie wykrywania urz�dzenia 53218.3. Pod��czanie urz�dzenia z Bluetoothem 53318.4. Oczekiwanie na ��dania po��czenia Bluetooth oraz ich akceptowanie 53618.5. Implementowanie wykrywania urz�dze� z Bluetoothem 537

19. Sterowanie systemem i urz�dzeniem ........................................................................53919.1. Wprowadzenie — sterowanie systemem i urz�dzeniem 53919.2. Dost�p do informacji o sieci i po��czeniu 53919.3. Pobieranie informacji z pliku manifestu 54019.4. Zmienianie trybu dzwonka telefonu na cichy, wibracje lub normalny 54119.5. Kopiowanie tekstu i pobieranie go ze schowka 54219.6. Powiadomienia oparte na diodach LED 544

Page 10: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

12 � Spis tre�ci

19.7. W��czanie wibracji w urz�dzeniu 54419.8. Uruchamianie polece� pow�oki z poziomu aplikacji 54519.9. Okre�lanie, czy dana aplikacja jest uruchomiona 546

20. Inne j�zyki programowania i frameworki .................................................................54920.1. Wprowadzenie — inne j�zyki programowania 54920.2. Uruchamianie zewn�trznych, natywnych instrukcji Uniksa i Linuksa 55020.3. Uruchamianie kodu natywnego w j�zyku C lub C++ za pomoc�

interfejsu JNI z pakietu NDK 55120.4. Wprowadzenie do aplikacji Scripting Layer for Android

(SL4A; wcze�niej Android Scripting Environment) 55620.5. Tworzenie alertów za pomoc� biblioteki SL4A 55820.6. Pobieranie dokumentów Google i wy�wietlanie ich w kontrolce

ListView za pomoc� biblioteki SL4A 56220.7. U�ywanie kodów QR do rozpowszechniania skryptów SL4A 56320.8. U�ywanie JavaScriptu do wykorzystania wbudowanych funkcji telefonu

poprzez kontrolk� WebView 56620.9. Tworzenie aplikacji niezale�nych od platformy za pomoc� frameworku

PhoneGap 568

21. �a�cuchy znaków i internacjonalizacja ......................................................................57121.1. Wprowadzenie — internacjonalizacja 57121.2. Internacjonalizacja tekstu aplikacji 57221.3. Wyszukiwanie i t�umaczenie �a�cuchów znaków 57521.4. Niuanse zwi�zane z plikami strings.xml 577

22. Tworzenie pakietów, instalowanie, dystrybucja i sprzeda� aplikacji .....................58322.1. Wprowadzenie — tworzenie pakietów, instalowanie i dystrybucja 58322.2. Tworzenie certyfikatu u�ywanego przy podpisywaniu 58322.3. Podpisywanie aplikacji 58622.4. Udost�pnianie aplikacji w sklepie Google Play (dawny Android Market) 58722.5. Integrowanie sieci AdMob z aplikacj� 58822.6. Zaciemnianie i optymalizowanie kodu za pomoc� ProGuarda 59222.7. Odno�niki do aplikacji ze sklepu Google Play 595

Skorowidz .............................................................................................................................599

Page 11: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

367

ROZDZIA� 10.

Multimedia

10.1. Wprowadzenie — multimediaIan Darwin

OmówienieAndroid to �rodowisko multimedialne. Standardowo obejmuje odtwarzacze muzyki i filmów,a wi�kszo�� komercyjnych urz�dze� obok domy�lnych narz�dzi obejmuje te� ich bardziejwymy�lne odpowiedniki, a tak�e odtwarzacze filmów z serwisu YouTube i inne podobneaplikacje. Z receptur z tego rozdzia�u dowiesz si�, jak sterowa� wybranymi aspektami �wiatamultimediów w Androidzie.

10.2. Odtwarzanie filmów z serwisu YouTubeMarco Dinacci

ProblemProgramista chce w urz�dzeniu umo�liwi� odtwarzanie filmów z serwisu YouTube.

Rozwi�zanieNa podstawie identyfikatora URI filmu nale�y utworzy� obiekt Intent z akcj� ACTION_VIEWi uruchomi� now� aktywno��.

OmówienieNa listingu 10.1 pokazano kod potrzebny do uruchomienia filmu z serwisu YouTube za po-moc� intencji.

Page 12: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

368 � Rozdzia� 10. Multimedia

Aby kod z tej receptury zadzia�a�, w urz�dzeniu u�ytkownika musi by� zainstalowa-na standardowa aplikacja YouTube.

Listing 10.1. Uruchamianie filmu z serwisu YouTube za pomoc� intencji

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

String video_path = "http://www.youtube.com/watch?v=opZ69P-0Jbc"; Uri uri = Uri.parse(video_path);

// Ten wiersz powoduje natychmiastowe uruchomienie aplikacji YouTube (je�li jest // zainstalowana). Je�eli usuniesz ten wiersz, u�ytkownik zobaczy list� aplikacji // do wyboru. uri = Uri.parse("vnd.youtube:" + uri.getQueryParameter("v"));

Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);}

W przyk�adzie podano standardowy adres URL filmu z serwisu YouTube.com. Cz�on uri.getQueryParameter("v") s�u�y do okre�lania identyfikatora filmu na podstawie identyfikatora URI.W przyk�adzie identyfikator filmu to opZ69P-0Jbc.

10.3. U�ywanie obiektu Gallery wraz z kontrolk�ImageSwitcherNidhin Jose Davis

ProblemProgramista chce utworzy� interfejs u�ytkownika do przegl�dania kolekcji rysunków.

Rozwi�zaniePo��dany efekt mo�na uzyska� dzi�ki zastosowaniu obiektu Gallery wraz z kontrolk� ImageSwitcher.

OmówienieMo�na wykorzysta� obiekt Gallery (android.widget.Gallery) i kontrolk� ImageSwitcher (android.widget.ImageSwitcher) do utworzenia eleganckiej przegl�darki rysunków. Na listingu 10.2 po-kazano uk�ad dla obiektu Gallery.

Listing 10.2. Uk�ad dla obiektu Gallery

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

Page 13: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.3. U�ywanie obiektu Gallery wraz z kontrolk� ImageSwitcher � 369

android:layout_width="fill_parent" android:layout_height="fill_parent" >

<ImageSwitcher android:id="@+id/switcher" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" />

<Gallery android:id="@+id/gallery" android:background="#55000000" android:layout_width="fill_parent" android:layout_height="60dip" android:spacing="16px" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center_vertical" />

</RelativeLayout>

Na listingu 10.3 pokazano, jak wykorzysta� ten uk�ad.

Listing 10.3. G�ówna aktywno�� ImageBrowser z przyk�adu z galeri�

public class ImageBrowser extends Activity implements AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory { private ImageSwitcher mISwitcher; private ArrayList<Drawable> allimages = new ArrayList<Drawable>();

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Usuwanie paska tytu�u requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main);

getImages();

mISwitcher = (ImageSwitcher)findViewById(R.id.switcher); mISwitcher.setFactory(this); // Animacja przy prze��czaniu rysunków mISwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); mISwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));

Gallery gallery = (Gallery) findViewById(R.id.gallery); gallery.setAdapter(new ImageAdapter(this)); gallery.setOnItemSelectedListener(this); }

private void getImages() { allimages.add(this.getResources().getDrawable(R.drawable.image1)); allimages.add(this.getResources().getDrawable(R.drawable.image2)); allimages.add(this.getResources().getDrawable(R.drawable.image3)); allimages.add(this.getResources().getDrawable(R.drawable.image4)); allimages.add(this.getResources().getDrawable(R.drawable.image5));

Page 14: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

370 � Rozdzia� 10. Multimedia

allimages.add(this.getResources().getDrawable(R.drawable.image6)); allimages.add(this.getResources().getDrawable(R.drawable.image7)); allimages.add(this.getResources().getDrawable(R.drawable.image8)); allimages.add(this.getResources().getDrawable(R.drawable.image9));

}

@Override public void onItemSelected(AdapterView<?> arg0, View v, int position, long id) { try{ mISwitcher.setImageDrawable(allimages.get(position)); }catch(Exception e){} }

@Override public void onNothingSelected(AdapterView<?> arg0) { // Pusta }

@Override public View makeView() { ImageView i = new ImageView(this); i.setBackgroundColor(0xFF000000); i.setScaleType(ImageView.ScaleType.FIT_CENTER); i.setLayoutParams(new ImageSwitcher.LayoutParams( ImageSwitcher.LayoutParams.FILL_PARENT, ImageSwitcher.LayoutParams.FILL_PARENT)); return i; }

public class ImageAdapter extends BaseAdapter { private Context mContext;

public ImageAdapter(Context c) { mContext = c; }

public int getCount() { return allimages.size(); }

public Object getItem(int position) { return position; }

public long getItemId(int position) { return position; }

public View getView(int position, View convertView, ViewGroup parent) { ImageView galleryview = new ImageView(mContext); galleryview.setImageDrawable(allimages.get(position)); galleryview.setAdjustViewBounds(true); galleryview.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); galleryview.setPadding(5, 0, 5, 0); galleryview.setBackgroundResource(android.R.drawable.picture_frame); return galleryview; } }}

Page 15: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.4. Rejestrowanie filmów za pomoc� klasy MediaRecorder � 371

10.4. Rejestrowanie filmów za pomoc� klasyMediaRecorderMarco Dinacci

ProblemProgramista chce za pomoc� wbudowanej kamery rejestrowa� filmy i zapisywa� je na dysku.

Rozwi�zanieNale�y zarejestrowa� film i zapisa� go w telefonie za pomoc� klasy MediaRecorder z framewor-ku Androida.

OmówienieDo nagrywania dwi�ku i filmów s�u�y klasa MediaRecorder. Klasa ta ma prosty interfejs API,poniewa� jednak oparta jest na prostej maszynie stanowej, metody trzeba wywo�ywa� w okre-�lonej kolejno�ci, tak aby unikn�� wyst�pienia wyj�tku IllegalStateException.

Utwórz now� aktywno�� i przes�o� metod� onCreate za pomoc� kodu z listingu 10.4.

Listing 10.4. Metoda onCreate() z g�ównej aktywno�ci

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.media_recorder_recipe);

// Film nale�y nagrywa� w orientacji poziomej setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView); mHolder = mSurfaceView.getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

mToggleButton = (ToggleButton) findViewById(R.id.toggleRecordingButton); mToggleButton.setOnClickListener(new OnClickListener() { @Override // Rozpoczynanie i wstrzymywanie nagrywania filmu public void onClick(View v) { if (((ToggleButton)v).isChecked()) mMediaRecorder.start(); else { mMediaRecorder.stop(); mMediaRecorder.reset(); try { initRecorder(mHolder.getSurface()); } catch (IOException e) { e.printStackTrace(); } } } }); }

Page 16: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

372 � Rozdzia� 10. Multimedia

Klatki z podgl�dem filmu s� wy�wietlane w widoku SurfaceView. Do sterowania nagrywaniems�u�y przycisk, który pozwala rozpocz�� i wstrzyma� rejestrowanie. Po zako�czeniu nagrywa-nia nale�y zatrzyma� prac� obiektu MediaRecorder. Poniewa� metoda stop resetuje stan wszyst-kich zmiennych maszyny stanowej, wi�c aby móc rozpocz�� rejestrowanie nast�pnego filmu,nale�y zresetowa� maszyn� stanow� i jeszcze raz wywo�a� metod� initRecorder.

W metodzie initRecorder aplikacja konfiguruje obiekt MediaRecorder oraz aparat, co pokazanona listingu 10.5.

Listing 10.5. Konfigurowanie obiektu MediaRecorder

/* Inicjowanie obiektu MediaRecorder. Aby obiekt dzia�a� poprawnie, metody * trzeba wywo�ywa� w odpowiedniej kolejno�ci */ private void initRecorder(Surface surface) throws IOException { // Bardzo wa�ne jest, aby przed wywo�aniem metody setCamera odblokowa� aparat. // W przeciwnym razie podgl�d b�dzie niewidoczny if(mCamera == null) { mCamera = Camera.open(); mCamera.unlock(); }

if(mMediaRecorder == null) mMediaRecorder = new MediaRecorder();

mMediaRecorder.setPreviewDisplay(surface); mMediaRecorder.setCamera(mCamera);

mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); File file = createFile();

mMediaRecorder.setOutputFile(file.getAbsolutePath());

// Bez ogranicze�. Nie zapomnij sprawdzi�, ile wolnej pami�ci jest na dysku mMediaRecorder.setMaxDuration(-1); mMediaRecorder.setVideoFrameRate(15);

mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

try { mMediaRecorder.prepare(); } catch (IllegalStateException e) { // Zg�aszany, je�li poprzednie metody nie zosta�y wywo�ane w odpowiedniej // kolejno�ci e.printStackTrace(); }

mInitSuccesful = true; }

Wa�ne jest, aby przed utworzeniem obiektu MediaRecorder utworzy� i odblokowa� obiekt Camera.Metody setPreviewDisplay i setCamera trzeba wywo�a� natychmiast po utworzeniu obiektuMediaRecorder. Koniecznie trzeba okre�li� format i plik wyj�ciowy. Inne opcje (je�li wyst�puj�)nale�y ustawia� w kolejno�ci przedstawionej na listingu 10.5.

Obiekt MediaRecorder najlepiej jest inicjowa� po utworzeniu powierzchni. Aby otrzymywa� po-wiadomienia o tym, �e powierzchnia jest gotowa, aktywno�� jest rejestrowana jako odbiornikSurfaceHolder.Callback. Ponadto w kodzie przes�oni�to metod� surfaceCreated. Aplikacja wy-wo�uje w niej kod do inicjowania procesu nagrywania.

Page 17: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.5. Jak wykorzysta androidowy mechanizm wykrywania twarzy? � 373

@Override public void surfaceCreated(SurfaceHolder holder) { try { if(!mInitSuccessful) initRecorder(mHolder.getSurface()); } catch (IOException e) { e.printStackTrace(); // Zastosowa� lepsz� obs�ug� b��dów? } }

Po zako�czeniu korzystania z powierzchni nale�y pami�ta� o zwolnieniu zasobów, poniewa�Camera to obiekt wspó�u�ytkowany i inne aplikacje tak�e mog� z niego korzysta�:

private void shutdown() { // Zwalnianie obiektów MediaRecorder i — przede wszystkim — Camera, // poniewa� ten drugi jest wspó�u�ytkowany i mog� go potrzebowa� inne programy mMediaRecorder.reset(); mMediaRecorder.release(); mCamera.release();

// Po zwolnieniu obiektów nie mo�na ich ponownie wykorzysta� mMediaRecorder = null; mCamera = null; }

Aby przedstawiony wcze�niej kod by� wywo�ywany automatycznie po zako�czeniu korzy-stania z aktywno�ci przez u�ytkownika, nale�y przes�oni� metod� surfaceDestroyed:

@Override public void surfaceDestroyed(SurfaceHolder holder) { shutdown(); }

10.5. Jak wykorzysta androidowy mechanizmwykrywania twarzy?Wagied Davids

ProblemProgramista chce, aby aplikacja wykrywa�a, czy na danym zdj�ciu znajduj� si� ludzkie twarze,a je�li tak, to gdzie.

Rozwi�zanieNale�y zastosowa� wbudowany androidowy mechanizm wykrywania twarzy.

Wykrywanie twarzy to atrakcyjna i ciekawa ukryta funkcja interfejsu API Androida. Jest do-st�pna od Androida 1.5. Wykrywanie twarzy polega na wskazywaniu na zdj�ciach fragmen-tów, które przypominaj� ludzk� twarz. Rozpoznawanie obiektów na podstawie zbioru cech tojedno z zagadnie� z obszaru uczenia maszynowego. Warto zauwa�y�, �e nie chodzi tu o funk-cj� rozpoznawania twarzy. Omawiany tu mechanizm jedynie wykrywa fragmenty wygl�daj�cejak twarz, natomiast nie okre�la, do kogo ona nale�y. Dopiero w wersji Ice Cream Sandwich

Page 18: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

374 � Rozdzia� 10. Multimedia

(Android 4.0) wprowadzono funkcj� rozpoznawania twarzy, któr� mo�na wykorzysta� doodblokowywania telefonu.

OmówienieG�ówna aktywno�� (przedstawiona na listingu 10.6) tworzy obiekt FaceDetectionView. W przy-k�adowej aplikacji sprawdzany plik zapisano na sta�e, jednak w produkcyjnej wersji programuzdj�cia powinny pochodzi� z aparatu lub galerii.

Listing 10.6. G�ówna aktywno��

import android.app.Activity;import android.os.Bundle;

public class Main extends Activity{/** Wywo�ywana, gdy aktywno�� tworzona jest po raz pierwszy */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(new FaceDetectionView(this, "face5.JPG"));}}

FaceDetectionView to niestandardowa klasa, s�u��ca do zarz�dzania wykrywaniem twarzyz wykorzystaniem klasy android.media.FaceDetector. Metoda init() okre�la grafik� u�ywan�do oznaczania twarzy. W przyk�adzie wiadomo, gdzie znajduj� si� twarze, a Android powi-nien je znale�. G�ówne operacje wykonywane s� w metodzie detectFaces(). Wywo�uje onametod� findFaces klasy FaceDetector. Do tej ostatniej metody nale�y przekaza� zdj�cie i tablic�na wyniki. Nast�pnie mo�na przej�� po znalezionych twarzach. Potrzebny kod pokazano nalistingu 10.7, a na rysunku 10.1 widoczny jest efekt dzia�ania aplikacji.

Rysunek 10.1. Wykrywanie twarzy w praktyce

Page 19: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.5. Jak wykorzysta androidowy mechanizm wykrywania twarzy? � 375

Listing 10.7. Plik FaceDetectionView.java

...import android.media.FaceDetector;

public class FaceDetectionView extends View { private static final String tag = FaceDetectionView.class.getName(); private static final int NUM_FACES = 10; private FaceDetector arrayFaces; private final FaceDetector.Face getAllFaces[] = new FaceDetector.Face[NUM_FACES]; private FaceDetector.Face getFace = null;

private final PointF eyesMidPts[] = new PointF[NUM_FACES]; private final float eyesDistance[] = new float[NUM_FACES];

private Bitmap sourceImage;

private final Paint tmpPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint pOuterBullsEye = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint pInnerBullsEye = new Paint(Paint.ANTI_ALIAS_FLAG);

private int picWidth, picHeight; private float xRatio, yRatio; private ImageLoader mImageLoader = null;

public FaceDetectionView(Context context, String imagePath) { super(context); init(); mImageLoader = ImageLoader.getInstance(context); sourceImage = mImageLoader.loadFromFile(imagePath); detectFaces(); }

private void init() { Log.d(tag, "Init()..."); pInnerBullsEye.setStyle(Paint.Style.FILL); pInnerBullsEye.setColor(Color.RED); pOuterBullsEye.setStyle(Paint.Style.STROKE); pOuterBullsEye.setColor(Color.RED); tmpPaint.setStyle(Paint.Style.STROKE); tmpPaint.setTextAlign(Paint.Align.CENTER); BitmapFactory.Options bfo = new BitmapFactory.Options(); bfo.inPreferredConfig = Bitmap.Config.RGB_565; }

private void loadImage(String imagePath) { sourceImage = mImageLoader.loadFromFile(imagePath); }

@Override protected void onDraw(Canvas canvas) { Log.d(tag, "onDraw()...");

xRatio = getWidth() * 1.0f / picWidth; yRatio = getHeight() * 1.0f / picHeight; canvas.drawBitmap( sourceImage, null, new Rect(0, 0, getWidth(), getHeight()), tmpPaint); for (int i = 0; i < eyesMidPts.length; i++) { if (eyesMidPts[i] != null) { pOuterBullsEye.setStrokeWidth(eyesDistance[i] / 6); canvas.drawCircle(eyesMidPts[i].x * xRatio, eyesMidPts[i].y * yRatio, eyesDistance[i] / 2, pOuterBullsEye);

Page 20: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

376 � Rozdzia� 10. Multimedia

canvas.drawCircle(eyesMidPts[i].x * xRatio, eyesMidPts[i].y * yRatio, eyesDistance[i] / 6, pInnerBullsEye); } } }

private void detectFaces() { Log.d(tag, "detectFaces()...");

picWidth = sourceImage.getWidth(); picHeight = sourceImage.getHeight();

arrayFaces = new FaceDetector(picWidth, picHeight, NUM_FACES); arrayFaces.findFaces(sourceImage, getAllFaces);

for (int i = 0; i < getAllFaces.length; i++) { getFace = getAllFaces[i]; try { PointF eyesMP = new PointF(); getFace.getMidPoint(eyesMP); eyesDistance[i] = getFace.eyesDistance(); eyesMidPts[i] = eyesMP;

Log.i("Twarz", i + " " + getFace.confidence() + " " + getFace.eyesDistance() + " " + "Ustawienie: (" + getFace.pose(FaceDetector.Face.EULER_X) + "," + getFace.pose(FaceDetector.Face.EULER_Y) + "," + getFace.pose(FaceDetector.Face.EULER_Z) + ")" + "Punkt na wysoko�ci oczu: (" + eyesMidPts[i].x + "," + eyesMidPts[i].y + ")"); } catch (Exception e) { Log.e("Twarz", i + " – brak twarzy"); } } }}

10.6. Odtwarzanie muzyki z plikuMarco Dinacci

ProblemProgramista chce odtwarza� pliki dwi�kowe przechowywane w urz�dzeniu.

Rozwi�zanieNale�y utworzy� i odpowiednio skonfigurowa� obiekty MediaPlayer oraz MediaController, a na-st�pnie poda� �cie�k� do pliku. Potem mo�na rozkoszowa� si� muzyk�.

OmówienieOdtwarzanie plików muzycznych jest proste — wystarczy skonfigurowa� obiekty MediaPlayeri MediaController.

Page 21: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.6. Odtwarzanie muzyki z pliku � 377

Najpierw nale�y utworzy� aktywno�� z implementacj� interfejsu MediaPlayerControl (listing 10.8).

Listing 10.8. Pocz�tek klasy z implementacj� interfejsu MediaPlayerControl

public class PlayAudioActivity extends Activity implements MediaPlayerControl { private MediaController mMediaController; private MediaPlayer mMediaPlayer; private Handler mHandler = new Handler();

W metodzie onCreate trzeba utworzy� i skonfigurowa� obiekty MediaPlayer i MediaControler.Pierwszy z tych obiektów wykonuje standardowe operacje na plikach muzycznych — odtwarzaje, wstrzymuje i przechodzi do wskazanego miejsca w pliku. Drugi obiekt to widok z przyci-skami uruchamiaj�cymi wspomniane operacje za pomoc� metod interfejsu MediaPlayerControl.

Kod metody onCreate przedstawiono na listingu 10.9.

Listing 10.9. Metoda onCreate() odtwarzacza

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

mMediaPlayer = new MediaPlayer(); mMediaController = new MediaController(this); mMediaController.setMediaPlayer(PlayAudioActivity.this); mMediaController.setAnchorView(findViewById(R.id.audioView));

String audioFile = "" ; try { mMediaPlayer.setDataSource(audioFile); mMediaPlayer.prepare(); } catch (IOException e) { Log.e("PlayAudioDemo", "Nie mo�na odtworzy� pliku " + audioFile + ".", e); }

mMediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mHandler.post(new Runnable() { public void run() { mMediaController.show(10000); mMediaPlayer.start(); } }); } }); }

Oprócz skonfigurowania obiektów MediaController i MediaPlayer w aplikacji trzeba utworzy�anonimowy odbiornik OnPreparedListener, aby uruchamia� odtwarzacz tylko wtedy, gdy plikród�owy jest gotowy do odtworzenia.

Nale�y te� pami�ta� o zwolnieniu zasobów obiektu MediaPlayer w momencie usuwania aktyw-no�ci (listing 10.10).

Listing 10.10. Porz�dkowanie zasobów odtwarzacza

@Override protected void onDestroy() {

Page 22: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

378 � Rozdzia� 10. Multimedia

super.onDestroy(); mMediaPlayer.stop(); mMediaPlayer.release(); }

Trzeba te� zaimplementowa� interfejs MediaPlayerControl. Kod implementacji jest bardzo pro-sty, co pokazano na listingu 10.11.

Listing 10.11. Implementacja interfejsu MediaPlayerControl

@Override public boolean canPause() { return true; }

@Override public boolean canSeekBackward() { return false; }

@Override public boolean canSeekForward() { return false; }

@Override public int getBufferPercentage() { return (mMediaPlayer.getCurrentPosition() * 100) / mMediaPlayer.getDuration(); }

// Pozosta�e metody tylko kieruj� wywo�ania do obiektu MediaPlayer}

Na zako�czenie nale�y przes�oni� metod� onTouchEvent, aby wy�wietla� przyciski z obiektuMediaController po dotkni�ciu ekranu przez u�ytkownika.

Poniewa� obiekt MediaController tworzony jest programowo, uk�ad aktywno�ci jest bardzoprosty:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/audioView" ></LinearLayout>

10.7. Odtwarzanie d�wi�ku bez interakcjiz u�ytkownikiemIan Darwin

ProblemProgramista chce, aby aplikacja odtwarza�a pliki dwi�kowe bez interakcji z u�ytkownikiem.

Page 23: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.7. Odtwarzanie d�wi�ku bez interakcji z u�ytkownikiem � 379

Rozwi�zanieAby odtwarza� pliki dwi�kowe bez interakcji z u�ytkownikiem (bez kontrolek do zmianyg�o�no�ci, wstrzymywania odtwarzania itd.), wystarczy utworzy� obiekt MediaPlayer dla da-nego pliku i wywo�a� metod� start().

OmówienieJest to najprostsza technika odtwarzania plików dwi�kowych. W porównaniu z aplikacj�z receptury 10.6 ten program nie udost�pnia u�ytkownikom kontrolek do sterowania odtwa-rzaniem. Dlatego zwykle nale�y udost�pni� przynajmniej przycisk Stop lub Anuluj — zw�asz-cza je�li plik jest d�ugi. Je�eli jednak w aplikacji chcesz tylko odtwarza� krótkie efekty dwi�-kowe, nie musisz udost�pnia� takich kontrolek.

Dla pliku trzeba utworzy� obiekt MediaPlayer. Plik dwi�kowy mo�e znajdowa� si� na karcieSD lub w katalogu res/raw aplikacji. Je�li plik dwi�kowy jest elementem programu, nale�yumie�ci� go we wspomnianym katalogu. Tu u�ywany jest plik res/raw/alarm_sound.3gp. Refe-rencja do niego to R.raw.alarm_sound, a do odtwarzania pliku s�u�y nast�puj�cy kod:

MediaPlayer player = MediaPlayer.create(this, R.raw.alarm_sound);player.start();

Je�li plik znajduje si� na karcie SD, mo�na odtworzy� go w nast�puj�cy sposób:MediaPlayer player = new MediaPlayer();player.setDataSource(fileName);player.prepare();player.start();

Istnieje te� metoda pomocnicza, MediaPlayer.create(Context, URI). Metoda ta automatyczniewywo�uje metod� prepare().

Aby sterowa� odtwarzaczem w aplikacji, mo�na wywo�ywa� odpowiednie metody, np. player.stop(), player.pause() itd. Je�li chcesz ponownie uruchomi� odtwarzacz po jego zatrzymaniu,wywo�aj znów metod� prepare().

Do odbierania powiadomie� o zako�czeniu odtwarzania s�u�y odbiornik OnCompletionListener:player.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Toast.makeText(Main.this, "Zakoczono odtwarzanie", Toast.LENGTH_SHORT).show(); }});

Po ostatecznym zako�czeniu korzystania z obiektu MediaPlayer nale�y wywo�a� metod�release() tego obiektu, aby zwolni� pami��. Je�li aplikacja tworzy du�o obiektów MediaPlayeri nie zwalnia pami�ci, mo�e nast�pi� wyczerpanie zasobów.

Zobacz tak�eAby wykorzysta� wszystkie mo�liwo�ci obiektu MediaPlayer, nale�y pozna� jego ró�ne stanyi przej�cia mi�dzy nimi. Pomaga to zrozumie�, które metody mo�na wywo�ywa�. Na stroniehttp://developer.android.com/reference/android/media/MediaPlayer.html znajdziesz kompletny dia-gram stanów obiektu MediaPlayer.

Page 24: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

380 � Rozdzia� 10. Multimedia

10.8. Konwersja mowy na tekstCorey Sunwold

ProblemProgramista chce, aby aplikacja rejestrowa�a mow� i przetwarza�a j� jako tekst.

Rozwi�zanieJedn� z wyj�tkowych cech Androida jest wbudowane przetwarzanie mowy na tekst. Zapew-nia to alternatyw� dla wprowadzania tekstu. Jest to przydatne, poniewa� u�ytkownicy maj�czasem zaj�te r�ce i nie mog� wpisywa� informacji.

OmówienieAndroid udost�pnia wygodny interfejs API do korzystania z wbudowanej funkcji rozpozna-wania mowy. Interfejs ten oparty jest na intencji RecognizerIntent.

Przyk�adowy uk�ad jest bardzo prosty (przedstawiono go na listingu 10.12). W uk�adzie znaj-duje si� tylko kontrolka TextView o nazwie speechText i kontrolka Button o nazwie getSpeechButton.Ta ostatnia kontrolka s�u�y do uruchamiania mechanizmu rozpoznawania mowy, a zwracanewyniki pojawiaj� si� w kontrolce TextView.

Listing 10.12. Program ilustruj�cy rozpoznawanie mowy

public class Main extends Activity {

private static final int RECOGNIZER_RESULT = 1234;

/** Wywo�ywana, gdy aktywno�� tworzona jest po raz pierwszy */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

Button startSpeech = (Button)findViewById(R.id.getSpeechButton); startSpeech.setOnClickListener(new OnClickListener() {

@Override public void onClick(View v) { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Mowa na tekst"); startActivityForResult(intent, RECOGNIZER_RESULT); }

}); }

/** * Obs�uga wyników zwróconych przez aktywno�� przetwarzaj�c� mow�

Page 25: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

10.9. Konwersja tekstu na mow� � 381

*/ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOGNIZER_RESULT && resultCode == RESULT_OK) { ArrayList<String> matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS);

TextView speechText = (TextView)findViewById(R.id.speechText); speechText.setText(matches.get(0).toString()); }

super.onActivityResult(requestCode, resultCode, data); }}

Zobacz tak�ehttp://developer.android.com/reference/android/speech/RecognizerIntent.html.

10.9. Konwersja tekstu na mow�Ian Darwin

ProblemProgramista chce, aby aplikacja „wypowiada�a” napisane s�owa, tak aby u�ytkownik móg� si�z nimi zapozna� bez spogl�dania na ekran (np. w trakcie prowadzenia samochodu).

Rozwi�zanieNale�y zastosowa� interfejs API TextToSpeech.

OmówienieInterfejs API TextToSpeech wbudowany jest w Android, cho� w niektórych wersjach platfor-my trzeba doinstalowa� pliki dwi�kowe.

Aby rozpocz�� korzystanie z omawianego mechanizmu, potrzebny jest tylko obiekt TextToSpeech. Teoretycznie wystarczy napisa� poni�szy kod:

private TextToSpeech myTTS = new TextToSpeech(this, this);myTTS.setLanguage(Locale.US);myTTS.speak(textToBeSpoken, TextToSpeech.QUEUE_FLUSH, null);myTTS.shutdown();

Aby jednak zapewni� poprawne dzia�anie aplikacji, trzeba zastosowa� kilka intencji. Jednapowinna sprawdza�, czy dane mechanizmu TTS s� dost�pne (i instalowa� je, je�li jest inaczej).Druga jest potrzebna do uruchamiania mechanizmu TTS. Dlatego w praktyce kod powinienwygl�da� tak jak na listingu 10.13. Ta ciekawa prosta aplikacja po ka�dym wci�ni�ciu przyci-sku Mów wyg�asza jedno z kilku banalnych zda�.

Page 26: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

382 � Rozdzia� 10. Multimedia

Listing 10.13. Program ilustruj�cy konwersj� tekstu na mow�

public class Main extends Activity implements OnInitListener {

private TextToSpeech myTTS; private List<String> phrases = new ArrayList<String>();

public void onCreate(Bundle savedInstanceState) {

phrases.add("Hello Android, Goodbye iPhone"); phrases.add("The quick brown fox jumped over the lazy dog"); phrases.add("What is your mother's maiden name?"); phrases.add("Etaoin Shrdlu for Prime Minister"); phrases.add("The letter 'Q' does not appear in 'antidisestablishmentarianism')"); super.onCreate(savedInstanceState); setContentView(R.layout.main);

Button startButton = (Button) findViewById(R.id.start_button); startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, 1); } }); }

protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) {

if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { myTTS = new TextToSpeech(this, this); � myTTS.setLanguage(Locale.US); } else { // Brak danych mechanizmu TTS. Aplikacja próbuje je zainstalowa� Intent ttsLoadIntent = new Intent(); ttsLoadIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(ttsLoadIntent); } } }

public void onInit(int status) { if (status == TextToSpeech.SUCCESS) {

int n = (int)(Math.random() * phrases.size()); myTTS.speak(phrases.get(n), TextToSpeech.QUEUE_FLUSH, null); } else if (status == TextToSpeech.ERROR) { myTTS.shutdown(); } }

� Pierwszy argument to kontekst (aktywno��), a drugi — odbiornik OnInitListener, tu tak�ezaimplementowany w g�ównej aktywno�ci. Po zainicjowaniu obiektu TextToSpeech wywo-�ywany jest wspomniany odbiornik. Metoda onInit() tego odbiornika ma powiadamia�o tym, �e mechanizm TTS jest gotowy. Przedstawiona tu prosta aplikacja Speaker tylkogeneruje s�owa. W bardziej rozbudowanym programie warto uruchomi� w�tek lub us�ug�do obs�ugi mowy.

Page 27: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

599

Skorowidz

AADB, 37AdMob, 589akcelerometr, 521

czujniki, 521dost�pno�� czujnika, 522executeShakeAction(), 525getSensorList(), 522isAccelerationChanged(), 525onAccuracyChanged(), 527onSensorChanged(), 523, 526, 527orientacji, 527SensorManager, 522temperatury, 528wykorzystywanie danych, 524

alerty, 315komunikaty toast, 336powiadomienia, 337

dwi�k, 339reakcja na klikni�cie, 342powiadomienie, 341w��czanie diody LED, 340wy�wietlanie, 338

przetwarzanie w tle, 330Python, 558Service, 338wyskakuj�ce okna dialogowe, 321

AlertDialog, 321, 532AndEngine, 458Android, 13

akcelerometr, 521czujniki, 521

animacje, 455aplikacje, 35

awarie, 125Backup Manager, 102cykl �ycia, 35dostosowywanie do tabletów, 94

formatowanie czasu i daty, 97Google Analytics, 90kontrolowanie danych wej�ciowych, 99latarka, 92lokalizacja, 473mapy, 473menu kontekstowe, 75menu opcji, 75monitorowanie poziomu baterii, 83mo�liwe stany, 35obs�uga po��cze� telefonicznych, 417obs�uga wyj�tków, 76projektowanie, 73sieciowe, 441singleton, 79stoper z odliczaniem wstecznym, 55stosowanie wskazówek, 108Tipster, 57tworzenie ekranów powitalnych, 84tworzenie kopii zapasowej, 102wspó�u�ytkowanie danych, 80wymagania, 73zmiana orientacji ekranu, 81zrzutu ekranu, 54

biblioteki, 41AndroidPlot, 41, 207HttpClient, 442, 443OpenStreetMap, 41RGraph, 224

Bluetooth, 531pod��czanie innego urz�dzenia, 533w��czanie, 532wykrywanie urz�dze�, 537��dania po��cze�, 536

cykl �ycia, 35diagram stanów, 36

ekran powitalny, 86formatowanie liczb, 277

Double.toString(), 277kody formatuj�ce, 278

Page 28: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

600 � Skorowidz

Androidformatowanie liczb

liczba mnoga, 281metody formatuj�ce, 278

fragment, 305g�sto�� ekranu, 74grafika, 185

animacja rastrowa, 228animacje, 455niestandardowa czcionka, 185, 188OpenGL ES, 185, 188paleta kolorów, 216przybli�anie obrazu, 230rysowanie p�ynnych linii, 194skanowanie kodów, 204t�o domy�lnego widoku, 221trójwymiarowa, 188tworzenie ikony, 208, 215tworzenie wykresów, 224wy�wietlanie danych, 207zdj�cia, 198, 200

gry, 455frameworki, 455

GUI, 58, 235alerty, 315animacja, 269czas, 322ekran wczytywania, 291komponenty, 58kontrolka ListView, 343lista rozwijana, 251menu, 316niestandardowe okno dialogowe, 328obrotowy mechanizm wybierania, 325obs�uga d�ugiego klikni�cia, 253obs�uga zmian konfiguracji, 238odbiornik zdarze�, 242otwieranie nowego ekranu, 283pole wyboru, 247przekszta�canie pól tekstowych, 260przycisk wysy�ania, 262przyciski graficzne, 249przyciski opcji, 247tworzenie przycisku, 241wid�et, 236wid�et aplikacji, 236wykrywanie gestów, 299wy�wietlanie pól tekstowych, 254zakrywanie innych komponentów, 292

internacjonalizacja, 571�a�cuchy znaków, 575tekst aplikacji, 572

Java, 19pakiet JDK, 29

pomijane interfejsy API, 20RGraph, 224�rodowisko IDE Eclipse, 29

kana�y danych, 76komunikacja, 145

AsyncTask, 145dostawcy tre�ci, 175, 178e-mail, 147intencje, 145IPC, 179komponenty obs�ugi, 145komunikaty rozg�oszeniowe, 157odbiorniki rozg�oszeniowe, 145podtrzymywanie dzia�ania us�ugi, 155przekazywanie �a�cuchów znaków, 151u�ywanie w�tków, 159

kontrolki, 59rozmieszczanie, 59

mechanizmy wprowadzania danych, 75multimedia, 367

Gallery, 368mechanizm wykrywania twarzy, 373odtwarzanie plików muzycznych, 377rejestrowanie filmów, 371YouTube, 367

NinePatch, 221pakiet ADK, 21pakiet SDK, 24

aktualizacja, 46przyk�adowe programy, 44wtyczka ADT, 29

sterowanie, 539kopiowanie tekstu, 542mened�er aktywno�ci, 547polecenia pow�oki, 545po��czenie z sieci�, 539tryb dzwonka, 541ustawienia projektu, 540w��czanie wibracji, 544wy�wietlanie powiadomie�, 544

�rodowisko Eclipse, 24parametry nowego projektu, 25tworzenie nowego projektu, 45uruchamianie projektu, 27

testy, 111awarie, 125BugSense, 129chmura, 121cykl �ycia, 134debugowanie kodu, 128konfigurowanie urz�dze� AVD, 112lokalny dziennik czasu wykonania, 131projekt testowy, 122sterowanie programowaniem, 111

Page 29: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 601

urz�dzenia AVD, 23konfigurowanie, 112

utrwalanie danych, 383baza SQLite, 401, 402, 403dodawanie danych kontaktowych, 412pobieranie informacji o plikach, 383ustawianie preferencji, 390wczytywanie danych kontaktowych, 415wczytywanie plików z aplikacji, 386wyszukiwanie tekstu, 396wy�wietlanie zawarto�ci katalogu, 387

wielko�� ekranu, 74Windows, 29

�rodowisko IDE Eclipse, 29wtyczka ADT, 24wy�wietlanie czasu i daty, 97

DateFormat, 97DateUtils, 99Formatter, 99java.util.Date, 98TextView, 97Time, 99

zachowywanie danych, 81getLastNonConfigurationInstance(), 81onCreate(), 82onRetainNonConfigurationInstance(), 81onSaveInstanceState(), 81

zdalna us�uga, 179bindService(), 181invokeService(), 182onBind(), 179onCreate(), 180onDestroy(), 180releaseService(), 182startService(), 181stopService(), 182

zrzut ekranu, 52Device Screen Capture, 53

Android Compatibility, 305Android Localizer, 575aplikacje, 35

akcelerometrczujnik orientacji, 527dost�pno��, 522pobieranie danych, 523wykorzystywanie danych, 524

awarie, 125adb logcat, 125NPE, 126

Backup Manager, 102implementacja, 102polecenie bmgr, 107

Bluetoothakceptowanie po��cze�, 536pobieranie adresu MAC, 532pobieranie nazwy urz�dzenia, 532tworzenie serwera, 536wymiana danych z urz�dzeniem, 534

certyfikat, 583generowanie, 584korzy�ci, 584

cykl �yciarejestrowanie zdarze�, 135

dostawca tre�ci, 178dostosowywanie do tabletów, 94Google Analytics, 90Java

kod natywny, 552j�zyk C

kod natywny, 553kontrolka ListView, 343

nag�ówki sekcji, 352obs�uga zmian orientacji, 360wy�wietlanie listy wierszy, 344zachowywanie pozycji, 356

kontrolowanie danych wej�ciowych, 99KeyListener, 99typy odbiorników, 102

konwersja tekstu na mow�, 382kopia zapasowa, 102

Backup Manager, 102latarka, 92

etapy rozwijania, 92lokalizacja, 473

aktualizowanie lokalizacji, 474fikcyjne wspó�rz�dne GPS, 477geokodowanie, 479geokodowanie odwrotne, 480OpenStreetMap, 473pobieranie danych o lokalizacji, 474podawanie fikcyjnej lokalizacji, 478urz�dzenia GPS, 473

mapy, 473mapy Google’a, 480

AddressOverlay, 495ItemizedOverlay, 491MapTest, 481MyOverlay, 488obs�uga d�ugich klikni��, 506wyszukiwanie lokalizacji, 502wy�wietlanie ikony, 499wy�wietlanie warstwy, 495

menu kontekstowe, 75menu opcji, 75

Page 30: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

602 � Skorowidz

aplikacjeobs�uga po��cze� telefonicznych, 417

pobieranie danych, 430po��czenia przychodz�ce, 418, 420po��czenia wychodz�ce, 421wiadomo�ci SMS, 425wybieranie numeru telefonu, 424

odbiornik dotyku, 231odno�niki, 595OpenStreetMap, 509

aktualizowanie lokalizacji, 517obs�uga dotkni�� warstwy, 515

optymalizowanie kodu, 593pobieranie dokumentów Google, 562podpisywanie, 586projektowanie, 73

ekrany powitalne, 84formatowanie czasu i daty, 97funkcje urz�dzenia, 75kana�y danych, 76kontrolowanie danych wej�ciowych, 99latarka, 92mechanizmy wprowadzania danych, 75obs�uga wyj�tków, 76odbiornik rozg�oszeniowy, 83wielko�� i g�sto�� ekranu, 74

przekszta�canie wyj�tków, 78rozpoznawanie mowy, 380sieciowe, 441

parser danych, 446przekszta�canie tekstu, 450, 451RESTful, 442wyra�enia regularne, 444wy�wietlanie stron internetowych, 452

skanowanie kodów, 204SCAN_FORMATS, 206SCAN_MODE, 206

SL4A, 556�ledzenie korzystania, 90, 91

Google Analytics, 90udost�pnianie, 587

przesy�anie, 587rejestrowanie, 587

wspó�u�ytkowanie danych, 80wykrywanie gestów, 299wymagania, 73wy�wietlanie danych, 207wy�wietlanie reklam, 588zaciemnianie kodu, 593

aplikacje sieciowe, 441parser danych, 446

getRSS(), 447przekszta�canie tekstu, 450

kontrolka TextView, 451MD5, 450na odno�niki, 451na posta� nieczyteln�, 450

stosowanie RESTful, 442converse(), 442HTTP GET, 442HTTP POST, 442klient us�ugi, 443URL, 442URLConnection, 442

wyra�enia regularne, 444BookRank, 445

wy�wietlanie stron internetowych, 452kontrolka WebView, 452

BBluetooth, 531

pod��czanie innego urz�dzenia, 533wymiana danych z urz�dzeniem, 534

w��czanie, 532AlertDialog, 532isEnabled(), 532konfigurowanie, 533onActivityResult(), 532pobieranie adresu MAC, 532pobieranie nazwy, 532

wykrywanie urz�dze�, 537tryb parowania, 537

��dania po��cze�, 536akceptowanie po��cze�, 536listenUsingRfcommWithServiceRecord(), 536start(), 536tworzenie serwera, 536

BugSense, 129

Ccykl �ycia, 35

android.Activity, 35diagram stanów, 36rejestrowanie zdarze�, 135

Ddane, 383

baza SQLite, 401data i czas, 403insert(), 402moveToFirst(), 403moveToNext(), 403

Page 31: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 603

danebaza SQLite

onCreate(), 401pobieranie danych, 402query(), 403SQLiteOpenHelper, 401strftime(), 403tworzenie, 401zapisywanie danych, 402

informacje o plikach, 383File, 384metody zwracaj�ce informacje, 384

JSON, 406generowanie danych, 406przetwarzanie �a�cucha znaków, 407

kontaktowe, 412addContact(), 413dodawanie danych, 412pobieranie danych, 415

parser danych, 446pobieranie, 430

akcelerometr, 523baza SQLite, 402dane kontaktowe, 415,dostawcy tre�ci, 175lokalizacja, 574po��czenia telefoniczne, 430TelephonyManager, 430

pojemno�� karty SD, 390ustawianie preferencji, 390

domy�lne, 394getBoolean(), 393getDefaultSharedPreferences(), 393getString(), 393onCreate(), 392onSharedPreferenceChanged(), 394PreferenceActivity, 394PreferenceCategory, 391PreferenceScreen, 391, 392

wczytywanie plików z aplikacji, 386openRawResource(), 387

wyszukiwanie tekstu, 396DbAdapter, 396

wy�wietlanie zawarto�ci katalogu, 387accept(), 389FilenameFilter, 389kontrolka ListView, 388listFiles(), 388

XML, 407interfejs DOM API, 407interfejs XmlPullParser, 409newInstance(), 410newPullParser(), 410

przetwarzanie kodu, 408require(), 411statyczne zasoby, 411

dokumenty Google, 562lista dokumentów, 564pobieranie, 562

dostawcy tre�ci, 175, 178MyContantProvider, 177pobieranie danych, 175

getContentResolver(), 177onActivityResult(), 176query(), 177

D-pad, 192Droid, 185, 186

EEDGE, 441

FFacebook, 467fragment, 305frameworki, 455, 549

AndEngine, 458AppCelerator Titanium, 549Flixel, 456PhoneGap, 549, 568

GGallery, 368geokodowanie, 479gesty dotykowe, 230

odbiornik dotyku, 231Google Analytics, 90Google Play, 587GPRS, 441graficzny interfejs u�ytkownika, Patrz GUIgrafika, 185

animacja rastrowa, 228onWindowFocusChanged(), 229start(), 229

niestandardowa czcionka, 185, 188Iceberg, 186OTF, 186TTF, 186Typeface.create(), 186ustawianie, 187

OpenGL ES, 185przybli�anie obrazu, 230

odbiornik dotyku, 231

Page 32: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

604 � Skorowidz

grafikarysowanie p�ynnych linii, 194

expandDirtyRect(), 195getHistoricalX(int), 195getHistoricalY(int), 195getHistorySize(), 194invalidate(), 195TouchEvent, 194

skanowanie kodów, 204SCAN_FORMATS, 206SCAN_MODE, 206

t�o domy�lnego widoku, 221kontrolka EditText, 222

trójwymiarowa, 188buffer.position(0), 191D-pad, 192obracanie sze�cianu, 192onDrawFrame(), 190onSurfaceChanged(), 190requestFocus(), 194setFocusableInTouchMode(), 194wy�wietlanie sze�cianu, 190

tworzenie ikony, 208, 215formaty ikon, 220obramowanie, 217paleta kolorów, 216PNG, 209SVG, 210wielko��, 210wymiary grafiki, 217wymiary ikon, 217

tworzenie wykresów, 224RGraph, 224

wy�wietlanie danych, 207AndroidPlot, 207

zdj�cia, 198, 200android.media.Camera, 200configure(), 202onActivityResult(), 199surfaceChanged(), 202

gry, 455frameworki, 455

AndEngine, 458Flixel, 456

GUI, 235, 238alerty, 315

AlertDialog, 321komunikaty toast, 336powiadomienia, 337przetwarzanie w tle, 330wyskakuj�ce okna dialogowe, 321

animacja, 269getCurrentFocus(), 269kod animacji, 269onClick(), 269

autouzupe�nianie tekstu, 257, 258AutoCompleteTextView, 257onTextChanged(), 258

czas, 322kontrolka Timepicker, 323ustawianie czasu, 324

do��czanie odbiornika zdarze�, 242anonimowa klasa wewn�trzna, 244implementacja aktywno�ci, 244interfejs jako typ, 243klasa sk�adowa, 243klasa wewn�trzna, 242new OnClickListener(){...}, 243

dotykowe informacje zwrotne, 270oparte na wibracjach, 271zdarzenia generuj�ce, 272

dzia�anie widoków, 249ekran wczytywania, 291

LoadingScreen, 292fragment, 305IDE Eclipse, 235

SWT, 235Java ME, 235Java SE, 235

Swing, 235kontrolka ListView, 343

brak danych, 347nag�ówki sekcji, 352obs�uga zmian orientacji, 360pusta lista, 348stronicowanie, 344wy�wietlanie listy wierszy, 344zachowywanie pozycji, 356

lista rozwijana, 251Adapter, 251getSelectedItem(), 252kontrolka Spinner, 251toString(), 252

menu, 316addSubMenu(), 319definicja, 316niestandardowe menu, 317obs�uga wyboru opcji, 317onCreateOptionsMenu(), 316, 319onOptionsItemSelected(), 317, 320pocz�tkowe menu, 320podmenu, 318, 321tworzenie, 316wy�wietlanie, 316

niestandardowe okno dialogowe, 328Dialog, 328okno O programie, 333, 336okno ProgressDialog, 330

Page 33: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 605

run(), 330z zak�adkami, 331

niestandardowy pasek tytu�u, 275, 277obramowanie, 296

kolor, 297kszta�t, 297z zaokr�glonymi rogami, 298

obrotowy mechanizm wybierania, 325dzia�anie, 325kontrolki Android-Wheel, 325

obs�uga d�ugiego klikni�cia, 253setLongClickable(), 253setOnLongClickListener(), 253

obs�uga zmian konfiguracji, 238refreshUI(), 240zachowywanie stanu aplikacji, 240

otwieranie nowego ekranu, 283kontrolka Button, 287kontrolka TextView, 286nast�pne okno aplikacji, 290pierwszy ekran, 290warunki, 285wid�et aplikacji, 284

pole wyboru, 247przechwytywanie klawiszy, 264

onKeyDown, 264przekszta�canie pól tekstowych, 260prze��czanie aktywno�ci, 273przyciski

graficzne, 249opcji, 247tworzenie, 241wysy�ania, 262

stosowanie kontrolek, 246RadioGroup, 247Spinner, 246ViewGroup, 247

TableLayout, 63tworzenie przycisku, 241

onCreate(), 241setOnClickListener(), 241

wid�et, 236wid�et aplikacji, 236, 311wykrywanie gestów, 299

GestureDetector, 299onTouchEvent, 299

wy�wietlanie pól tekstowych, 254addTextChangedListener(), 256afterTextChanged(), 256beforeTextChanged(), 256EditText, 254, 255onCreate(), 256onTextChanged(), 256TextView, 254

zakrywanie innych komponentów, 292DrawerButton, 294SlidingDrawer, 293, 295

zaznaczanie grup, 265kontrolka RatingBar, 265onRatingChanged, 266RatingBar, 265

IIDE Eclipse, 29, 235

SWT, 235Inkscape, 209, 228

Document Properties, 212Export Bitmap, 211, 213, 229SVG, 210

instrukcjeadb logcat, 125create project, 21

generowane elementy, 22lista argumentów, 22

Intent.createChooser, 151Intent.putExtra(), 151

intencjaintencja rozg�oszeniowa, 428intencje, 146

e-mailz poziomu widoku, 147z za��cznikami, 150

Intent, 146robienie zdj��, 198w��czenie Bluetootha, 532wybieranie numeru telefonu, 424

internacjonalizacja, 571Locale, 571�a�cuchy znaków, 572

wyszukiwanie, 575tekst aplikacji, 572

wersje regionalne, 574

JJava, 19

bibliotekiRGraph, 224

definiowanie nowej klasy, 288HTML5, 566

kod mostu, 567interfejsy API, 20kod natywny, 552metody formatuj�ce, 278obs�uga wyj�tków, 76

Exception, 77IOException, 77

Page 34: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

606 � Skorowidz

Javaobs�uga wyj�tków

kontrolowane, 76niekontrolowane, 76przekszta�canie wyj�tków, 77RuntimeException, 77Throwable, 77VMError, 77

pakiet JDK, 29parser ROME, 446�rodowisko IDE Eclipse, 29

j�zyki programowania, 549C, 549

kod natywny, 551, 553Clojure, 549Erlang, 549F#, 549Groovy, 549HTML5, 566Scala, 549Scheme, 549skryptowe, 556

aplikacja SL4A, 556BeanShell, 556JavaScript, 557JRuby, 557Lua, 556Perl, 556Python, 556Tcl, 557

JSON, 406

Kkeytool, 584klasy

AboutBox, 333, 334ActivityInstrumentationTestCase2, 124Adapter, 251, 350AddressOverlay, 495AlertDialog, 71, 321android.Activity, 35android.app.Activity, 64android.app.Application, 79android.media.Camera, 200AndroidPlot, 207ArrayAdapter, 350AsyncTask, 145, 161, 164BaseAdapter, 358BookRank, 445BugSenseHandler, 130ChoiceFormat, 282CountDownTimer, 55

Cube, 190CustomDialog, 331DateFormat, 97DateUtils, 99DbAdapter, 396DemoCharts, 363Dialog, 328EditText, 254Exception, 77FaceDetectionView, 374File, 384

metody zwracaj�ce informacje, 384FileSaver, 82Formatter, 99FragmentTestActivity, 306Geocoder, 479GestureDetector, 299Handler, 167IncomingCallInterceptor, 419Intent, 146IOException, 77ItemizedOverlay, 490java.util.Date, 98KeyListener, 99ListActivity, 349LoadingScreen, 292Locale, 571MapTest, 481MapView, 481MD5, 450MediaRecorder, 371MetarItem, 498MyContantProvider, 177MyLocationListener, 475MyLocationOverlay, 486MyOverlay, 488OutgoingCallInterceptor, 421PackageInfo, 333ProgressDialog, 164RatingBar, 265

w�a�ciwo�ci, 265Runnable, 159Runtime, 545RuntimeException, 77RuntimeLog, 131

kod, 132ScaleBarOverlay, 513SensorManager, 522Service, 155ServiceManager, 158sk�adowa, 243SlidingDrawer, 292SmsManager, 426

Page 35: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 607

SQLiteOpenHelper, 401StatFs, 390TelephonyManager, 430TestFragment, 307TextView, 254Thorwable, 77

hierarchia, 77Thread, 159Throwable, 77TicTacToeActivity, 239TicTacToeGame, 240Time, 99TouchEvent, 194TrackService, 156URL, 442URLConnection, 442View, 64, 194WebSettings, 453wewn�trzna, 242

anonimowa, 244komponenty obs�ugi, 145komunikacja, 145

dostawcy tre�ci, 175, 178pobieranie danych, 175

e-mail, 147Intent.createChooser, 151z poziomu widoku, 147z za��cznikami, 150

intencje, 146e-mail, 147, 150Intent, 146

IPC, 179zdalne us�ugi, 179

komponenty obs�ugi, 145, 167komunikaty rozg�oszeniowe, 157

kod klasy odbiornika, 158publikowanie rozg�aszanych zdarze�, 157rejestrowanie odbiornika, 157ServiceManager, 158tworzenie odbiornika, 157

odbiorniki rozg�oszeniowe, 145operacje w tle, 160

AsyncTask, 161, 164doInBackground(), 162execute(), 163onClickListener(), 163onCreate(), 162onCreateDialog(), 164onItemClick(), 162pobieranie receptur, 166ProgressDialog, 164setCancelable(), 164

pobieranie danych, 152

finish(), 154getIntent().getExtras().getString(), 151setResult(), 154z aktywno�ci podrz�dnej, 154

podtrzymywanie dzia�ania us�ugi, 155onBind(), 156onCreate, 155onStartCommand(), 156Service, 155TrackService, 156

przesy�anie danych, 151Intent.getExtras(), 153Intent.putExtra(), 151MySubActivity.finish(), 153onActivityResult(), 153z aktywno�ci, 153

u�ywanie w�tków, 159AsyncTask, 161Handler, 167kolejka w�tków, 167onCreate(), 159, 162onItemClick(), 162przesy�anie komunikatów, 166run(), 159Runnable, 159start(), 159Thread, 159

komunikat rozg�oszeniowy, 420komunikaty toast, 315, 336kontrolki, 59

Android-Wheel, 325AutoCompleteTextView, 257

zape�nianie, 259Button, 287CheckBox, 246EditText, 63, 64, 254, 255, 501

z has�em, 261GridView, 238ImageSwitcher, 368ListView, 293, 343, 388

brak danych, 347DemoCharts, 363dostosowanie zawarto�ci, 357getCount(), 347getItem(), 347getTag(), 345getView(), 358konfigurowanie, 345ListActivity, 349nag�ówki sekcji, 352notifyDataSetChanged(), 360obs�uga zmian orientacji, 360onConfigure(), 363

Page 36: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

608 � Skorowidz

kontrolkiListView

pusta lista, 348setListAdapter(), 345stronicowanie, 344wy�wietlanie listy wierszy, 344z ikonami, 349zachowywanie pozycji, 356

RadioButton, 246RadioGroup, 247RatingBar, 265rozmieszczanie, 59ScrollWheel, 326Spinner, 246, 251TableRaw, 60TabView, 503TabWidget, 503TextView, 26, 64, 97, 238, 254, 286, 451Timepicker, 322ViewGroup, 247WebView, 452

modyfikacja wygl�du, 453WheelView, 325

Lliczby, 277

formatowanie, 277kody formatuj�ce, 278metody formatuj�ce, 278

LinkedInem, 468Linuks, 550

polecenia, 550lokalizacja, 473, 571

geokodowanie, 479Geocoder, 479odwrotne, 480

okre�lanie po�o�enia u�ytkownika, 473aktualizowanie lokalizacji, 474fikcyjne wspó�rz�dne GPS, 477informacje z GPS-a, 475MyLocationListener, 475onLocationChanged(), 475pobieranie danych o lokalizacji, 474podawanie fikcyjnej lokalizacji, 478setMockLocation(), 477tryb COARSE, 474tryb FINE, 474

Mmapy, 473

Google’a, 480AddressOverlay, 495aktualna lokalizacja, 486createItem(), 491disableMyLocation(), 486draw(), 490drawCircle(), 500getCenter(), 493invalidate(), 489isRouteDisplayed(), 481ItemizedOverlay, 490ItemizedOverlayXXXdraw(), 497kilka znaczników, 493klikni�cie znacznika, 494konfigurowanie urz�dzenia AVD, 480kontrolka TabView, 503lista kontrolna, 484MapTest, 481MapView, 481MapView.onTouchEvent(), 506MetarItem, 498MetarItem::draw(), 498MyLocationOverlay, 486MyOverlay, 488obs�uga d�ugich klikni��, 505onCreate(), 492populate(), 492rejestrowanie klucza, 483size(), 491TabSpec.setContent(), 503tworzenie nowego projektu, 481tworzenie warstwy, 495wyszukiwanie lokalizacji, 501, 502wy�wietlanie ikony, 499wy�wietlanie warstwy, 495zmiany trybu mapy, 496znacznik lokalizacji, 487znacznik zast�pczy, 493

OpenStreetMap, 509aktualizowanie lokalizacji, 516obs�uga dotkni�� warstwy, 514przesuwanie mapy, 518ScaleBarOverlay, 513skala, 513tworzenie warstw, 511zmiana lokalizacji, 519

Monkey, 140MOTODEV Studio, 576

Page 37: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 609

multimedia, 367konwersja mowy na tekst, 380konwersja tekstu na mow�, 381mechanizm wykrywania twarzy, 373

detectFaces(), 374FaceDetectionView, 374init(), 374

odtwarzanie filmów, 367YouTube, 368

odtwarzanie plików muzycznych, 377bez interakcji z u�ytkownikiem, 379MediaControler, 377MediaPlayer, 377onCreate(), 377onTouchEvent(), 378porz�dkowanie zasobów odtwarzacza, 378

rejestrowanie filmów, 371initRecorder(), 372MediaRecorder, 371onCreate(), 371surfaceCreated(), 373

Nnag�ówki sekcji, 352narz�dzia

ADB, 37AndEngine, 458android, 21Android Localizer, 575Google Analytics, 90keytool, 584Monkey, 140MOTODEV Studio, 576ProGuard, 592StrictMode, 139

NinePatch, 221

Oobs�uga po��cze� telefonicznych, 417

pobieranie danych, 430okre�lanie stanu telefonu, 431TelephonyManager, 430

przechwytywanie po��cze� przychodz�cych,418, 420IncomingCallInterceptor, 419kod manifestu aplikacji, 419kod przechwytuj�cy, 418odbiornik rozg�oszeniowy, 418

przechwytywanie po��cze� wychodz�cych, 421abortBroadcast(), 423getResultData(), 424

klasa przechwytuj�ca, 421OutgoingCallInterceptor, 421przechwycone po��czenie, 423setResultData(),421, 423

wiadomo�ci SMS, 425kod do wysy�ania, 426odbieranie, 428odebrana wiadomo��, 426onReceive(), 428sendMultipartTextMessage(), 426sendTextMessage(), 426SmsManager, 426wysy�anie, 425, 429

wybieranie numeru, 424odbiorniki rozg�oszeniowe, 83, 145, 418odzyskiwanie, 345OpenGL ES, 185, 187, 455

grafika trójwymiarowa, 188buffer.position(0), 191D-pad, 192obracanie sze�cianu, 192onDrawFrame, 190onSurfaceChanged, 190requestFocus(), 194setFocusableInTouchMode(true), 194wy�wietlanie sze�cianu, 190

OpenMoko, 521OpenStreetMap, 473, 509optymalizowanie kodu, 593OSM, Patrz OpenStreetMapOTF, 186

PPaint.NET, 218

Canvas Dialog, 218Colors, 218

pakiet ADK, 21android, 21

create project, 21pakiet JDK, 29pakiet SDK, 29

aktualizacja, 46mo�liwe b��dy, 49

instalacja, 31przyk�adowe programy, 44SDK Manager, 32, 47

okno komunikatów, 48wtyczka ADT, 29

parser danych, 446parser ROME, 446PNG, 209pojemno�� karty SD, 390

Page 38: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

610 � Skorowidz

polecenia pow�oki, 545powiadomienia, 338ProGuard, 592protokó� HTTP, 441protokó� SPP, 531przycisk graficzny, 249

RRESTful, 441rozg�aszanie uporz�dkowane, 420

Ssieci spo�eczno�ciowe, 467

Facebook, 467LinkedInem, 468protokó� HTTP, 467

obs�uga klikni�cia, 468pobieranie logo, 468tworzenie przycisków graficznych, 468

Twitter, 467, 470getTwitterTimeline(), 470wczytywanie chronologicznej listy tweetów,

470sieci, 441

3G, 441EDGE, 441GPRS, 441protokó� HTTP, 441protokó� HTTPS, 441protokó� SPP, 531RESTful, 441, 442spo�eczno�ciowe, 467

Facebook, 467LinkedInem, 468protokó� HTTP, 467Twitter, 467, 470

standard HDP, 531XML/SOAP, 441

singleton, 79, 240standard HDP, 531standardowe rozg�aszanie, 420sterowanie, 539

kopiowanie tekstu, 543getText(), 543setText(), 543

mened�er aktywno�ci, 547polecenia pow�oki, 545

exec(), 545process.waitFor(), 545Runtime, 545uruchamianie, 546

po��czenie z sieci�, 539informacje o sieci, 540

tryb dzwonka, 541ustawianie, 541, 542

ustawienia projektu, 540w��czanie wibracji, 544wy�wietlanie powiadomie�, 544

ledARGB(), 544notify(), 544

stoper z odliczaniem wstecznym, 55CountDownTimer, 55onFinish(), 55onTick(), 55

StrictMode, 139stronicowanie, 344SVG, 210

�rodowisko Eclipse, 24

parametry nowego projektu, 25projekt testowy, 124TextView, 26tworzenie nowego projektu, 45tworzenie projektu powi�zanego, 39

�rodowisko IDE Eclipse, 29

Ttesty, 111

awarie, 125adb logcat, 125findViewById(), 127NPE, 126

BugSense, 129BugSenseHandler, 130setContentView(), 130

chmura, 121cykl �ycia, 134

onDestroy(), 138onPause(), 138onRestart(), 138onStop(), 138rejestrowanie zdarze�, 135scenariusze, 138uruchamianie aktywno�ci, 135, 136wstrzymywanie aktywno�ci, 135, 137

debugowanie kodu, 128dane wyj�ciowe, 128Log.d(), 128

lokalny dziennik czasu wykonaniaRuntimeLog, 131

lokalny dziennik czasu wykonania, 131

Page 39: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

Skorowidz � 611

Monkey, 140stosowanie, 141

projekt testowy, 122ActivityInstrumentationTestCase2, 124konfiguracja, 122tworzenie, 122w �rodowisku Eclipse, 124w �rodowisku IntelliJ IDEA, 123

sterowanie programowaniem, 111StrictMode, 139urz�dzenia AVD, 113

definiowanie, 115konfigurowanie, 114tworzenie nowego urz�dzenia, 115uruchamianie nowego urz�dzenia, 117w�a�ciwo�ci urz�dze�, 118

Tipster, 57AlertDialog, 71android.app.Activity, 64calculate(), 68EditText, 63findViewById(), 64getCheckedRadioButtonId(), 71OnCheckedChangeListener(), 66OnKeyListener(), 67requestFocus(), 65reset(), 69setEnabled(), 65showErrorAlert(), 69, 71TableLayout, 60,TableRaw, 60View, 64

TTF, 186Twittera, 467tworzenie

bazy SQLite, 401ekranów powitalnych, 84ikony, 208, 215kopii zapasowej, 102menu, 316nowego urz�dzenia AVD, 115odbiornika rozg�oszeniowego, 157projektu testowego, 122przycisku, 241, 468serwera, 536warstw mapy, 495, 511wykresów, 224

Uurz�dzenia AVD, 23, 113

definiowanie, 115konfigurowanie, 112, 114, 480

opcje uruchomieniowe, 116, 119testy, 113tworzenie nowego urz�dzenia, 115uruchamianie nowego urz�dzenia, 117w�a�ciwo�ci urz�dze�, 118

urz�dzenia GPS, 473

Wwiadomo�ci SMS, 426

odbieranie, 428get(), 428intencja rozg�oszeniowa, 428onReceive(), 428

SmsManager, 426wysy�anie, 425, 429

kod, 426okno Emulator Control, 430sendMultipartTextMessage(), 426sendTextMessage(), 426

wid�et, 236wid�et aplikacji, 236, 284, 311wtyczka ADT, 24, 29

instalacja, 33wyra�enia regularne, 444

wy�wietlanieczasu i daty, 97danych, 207ikony, 499listy wierszy, 344menu, 316powiadomie�, 338, 544pól tekstowych, 254reklam, 588stron internetowych, 452warstwy, 495zawarto�ci katalogu, 387

XXML/SOAP, 441

YYouTube, 367

Zzaciemnianie kodu, 593

Page 40: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows

612 � Skorowidz

Page 42: Tytuł oryginału: Android Cookbookpdf.helion.pl/andrec/andrec.pdf1.4. Tworzenie aplikacji „Witaj, wiecie” w rodowisku Eclipse 24 1.5. Konfigurowanie rodowiska IDE w systemie Windows