Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00455 006748 14291169 na godz. na dobę w sumie
Platforma Android. Nowe wyzwania - ebook/pdf
Platforma Android. Nowe wyzwania - ebook/pdf
Autor: Liczba stron: 376
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-9528-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie mobilne >> android
Porównaj ceny (książka, ebook (-20%), audiobook).

Profesjonalne programowanie w systemie Android!

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:

Twoja przepustka do zaawansowanego świata Androida!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Android Programming: Pushing the Limits Tłumaczenie: Łukasz Piwko ISBN: 978-83-246-9525-6 © 2014 Erik Hellman All Rights Reserved. Authorised translation from the English language edition published by John Wiley Sons Limited. Responsibility for the accuracy of the translation rests solely with Helion S.A. and is not the responsibility of John Wiley Sons Limited. No part of this book may be reproduced in any form without the written permission of the original copyright holder, John Wiley Sons Limited. Translation copyright © 2014 by Helion S.A. Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley and Sons, Inc. and/or its affiliates in the United States and/or other countries, and may not be used without written permission. Android is a trademark of Google, Inc. All other trademarks are the property of their respective owners. John Wiley Sons, Ltd. is not associated with any product or vendor mentioned in the book. 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. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i 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 HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/plandr.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/plandr Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci O autorze ........................................................................................................ 13 Wprowadzenie ................................................................................................. 15 Cz(cid:218)(cid:258)(cid:202) I: Solidne podstawy .................................................................21 Rozdzia(cid:239) 1. Konfigurowanie (cid:258)rodowiska programistycznego .................................. 23 Systemy operacyjne do programowania Androida ......................................................... 23 Zaawansowane narz(cid:218)dzia SDK Androida ..................................................................... 24 Narz(cid:218)dzie adb ...................................................................................................... 24 Testowanie przeci(cid:200)(cid:285)eniowe interfejsu u(cid:285)ytkownika przy u(cid:285)yciu Monkey ....................... 27 System kompilacji Gradle ...................................................................................... 28 Optymalizacja i zaciemnianie za pomoc(cid:200) ProGuard ................................................... 30 Projekty bibliotek Android i biblioteki zewn(cid:218)trzne ......................................................... 31 Skompilowane pliki JAR ........................................................................................ 31 Tworzenie projektu biblioteki ................................................................................. 32 Kontrola wersji i zarz(cid:200)dzanie kodem (cid:283)ród(cid:239)owym ........................................................... 33 (cid:165)rodowisko programistyczne ...................................................................................... 35 Diagnozowanie aplikacji Android ............................................................................ 35 Statyczna analiza kodu przy u(cid:285)yciu lint ................................................................... 37 Refaktoryzacja kodu ............................................................................................. 39 Opcje programistyczne w urz(cid:200)dzeniach z Androidem .................................................... 41 Ustawienia programistyczne .................................................................................. 42 Podsumowanie ......................................................................................................... 44 Dodatkowe (cid:283)ród(cid:239)a informacji ...................................................................................... 44 Ksi(cid:200)(cid:285)ki ................................................................................................................ 44 Strony internetowe ............................................................................................... 44 Rozdzia(cid:239) 2. Efektywne programowanie w Javie na Androidzie ............................... 45 Porównanie Javy Dalvik z Jav(cid:200) SE .............................................................................. 45 Optymalizacja kodu Java dla Androida ........................................................................ 47 Bezpieczne pod wzgl(cid:218)dem typów wyliczenia w Androidzie ......................................... 48 Udoskonalona p(cid:218)tla for w Androidzie ...................................................................... 49 Kolejki, synchronizacja i blokady ............................................................................ 50 Zarz(cid:200)dzanie pami(cid:218)ci(cid:200) i alokacj(cid:200) ................................................................................. 52 Ograniczanie liczby alokacji obiektów ...................................................................... 52 Kup książkęPoleć książkę 6 Spis tre(cid:286)ci Wielow(cid:200)tkowo(cid:258)(cid:202) w Androidzie .................................................................................... 55 Klasa Thread ....................................................................................................... 56 Klasa AsyncTask .................................................................................................. 57 Klasa Handler ...................................................................................................... 58 Wykonywanie operacji w regularnych odst(cid:218)pach czasu .............................................. 60 U(cid:285)ywanie klasy MainLooper w po(cid:239)(cid:200)czeniu z Handler ................................................. 61 Jak wybra(cid:202) najlepsze rozwi(cid:200)zanie ............................................................................... 62 Podsumowanie ......................................................................................................... 63 Dodatkowe (cid:283)ród(cid:239)a informacji ...................................................................................... 63 Dokumentacja ..................................................................................................... 63 Ksi(cid:200)(cid:285)ki ................................................................................................................ 63 Strony internetowe ............................................................................................... 63 Cz(cid:218)(cid:258)(cid:202) II: Efektywne wykorzystanie sk(cid:239)adników ....................................65 Rozdzia(cid:239) 3. Sk(cid:239)adniki, manifesty i zasoby ........................................................... 67 Sk(cid:239)adniki Androida .................................................................................................... 67 Sk(cid:239)adnik Activity .................................................................................................. 68 Sk(cid:239)adnik Service ................................................................................................... 68 Sk(cid:239)adnik BroadcastReceiver ................................................................................... 68 Sk(cid:239)adnik ContentProvider ...................................................................................... 69 Sk(cid:239)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(cid:239)adników .............................................................................. 76 Filtrowanie intencji ............................................................................................... 77 Zasoby i (cid:258)rodki .......................................................................................................... 78 Zaawansowane zasoby (cid:239)a(cid:241)cuchowe ........................................................................ 79 Lokalizacja .......................................................................................................... 80 Kwalifikatory zasobów .......................................................................................... 80 (cid:165)rodki ................................................................................................................. 82 Podsumowanie ......................................................................................................... 83 Dodatkowe (cid:283)ród(cid:239)a informacji ...................................................................................... 83 Dokumentacja ..................................................................................................... 83 Rozdzia(cid:239) 4. Interakcja z u(cid:285)ytkownikiem i projektowanie interfejsów ...................... 85 Historyjki u(cid:285)ytkowników ............................................................................................ 85 U(cid:285)ytkownicy i postaci ........................................................................................... 86 Projektowanie interfejsu u(cid:285)ytkownika Androida ............................................................ 87 Nawigacja ........................................................................................................... 87 Prototypowanie interfejsu u(cid:285)ytkownika .................................................................... 88 Projektowanie interfejsu u(cid:285)ytkownika w Android Studio ............................................. 88 Elementy interfejsu u(cid:285)ytkownika Androida ................................................................... 89 Tekst w aplikacjach na Androida ................................................................................ 89 Krój pisma .......................................................................................................... 89 Uk(cid:239)ad tekstu ........................................................................................................ 90 Kup książkęPoleć książkę Spis tre(cid:286)ci 7 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(cid:285)ytkowe ....................................................................................................... 95 Wskazówki wizualne ............................................................................................. 95 Nagradzanie u(cid:285)ytkownika .......................................................................................... 96 Grywalizacja ........................................................................................................ 96 Podsumowanie ......................................................................................................... 97 Dodatkowe (cid:283)ród(cid:239)a informacji ...................................................................................... 98 Ksi(cid:200)(cid:285)ki ................................................................................................................ 98 Strony internetowe ............................................................................................... 98 Rozdzia(cid:239) 5. Interfejs u(cid:285)ytkownika dla zaawansowanych ....................................... 99 Aktywno(cid:258)ci i fragmenty .............................................................................................. 99 U(cid:285)ywanie wielu ekranów .......................................................................................... 100 Projektowanie w(cid:239)asnych widoków ............................................................................. 102 Cykl (cid:285)ycia widoku ............................................................................................... 103 Wid(cid:285)et o wygl(cid:200)dzie klawiatury fortepianowej .......................................................... 103 Wielodotyk ............................................................................................................. 108 Wspó(cid:239)rz(cid:218)dne wska(cid:283)nika ...................................................................................... 110 Gest obrotu ....................................................................................................... 111 OpenGL ES ............................................................................................................. 112 Grafy sceny i silniki gier ...................................................................................... 113 Podsumowanie ....................................................................................................... 113 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 114 Ksi(cid:200)(cid:285)ki .............................................................................................................. 114 Strony internetowe ............................................................................................. 114 Rozdzia(cid:239) 6. Us(cid:239)ugi i zadania w tle .................................................................... 115 Jak i kiedy u(cid:285)ywa(cid:202) us(cid:239)ug .......................................................................................... 115 Typy us(cid:239)ug ........................................................................................................ 116 Cykl (cid:285)ycia us(cid:239)ug ...................................................................................................... 116 Tworzenie i niszczenie us(cid:239)ug ................................................................................ 116 Uruchamianie us(cid:239)ug ........................................................................................... 117 Wi(cid:200)zanie us(cid:239)ug .................................................................................................. 118 Utrzymywanie si(cid:218) przy (cid:285)yciu ................................................................................ 120 Zatrzymywanie us(cid:239)ug .......................................................................................... 121 Dzia(cid:239)anie w tle ........................................................................................................ 123 Klasa IntentService ............................................................................................. 123 Równoleg(cid:239)e wykonywanie .................................................................................... 124 Komunikacja z us(cid:239)ugami .......................................................................................... 126 Asynchroniczne wysy(cid:239)anie powiadomie(cid:241) przy u(cid:285)yciu intencji .................................... 126 Lokalne wi(cid:200)zanie us(cid:239)ug ....................................................................................... 127 Kup książkęPoleć książkę 8 Spis tre(cid:286)ci Podsumowanie ....................................................................................................... 130 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 131 Blogi ................................................................................................................ 131 Rozdzia(cid:239) 7. Komunikacja mi(cid:218)dzyprocesowa ...................................................... 133 Binder .................................................................................................................... 134 Adres Bindera .................................................................................................... 134 Transakcje Bindera ............................................................................................. 135 Klasa Parcel ...................................................................................................... 136 (cid:146)(cid:200)cze ze (cid:258)mierci(cid:200) ............................................................................................... 138 Projektowanie API ................................................................................................... 138 AIDL ................................................................................................................. 139 Wywo(cid:239)ania zwrotne przy u(cid:285)yciu AIDL .................................................................... 142 Klasa Messenger ................................................................................................ 143 Opakowywanie API w biblioteki ........................................................................... 146 Zabezpieczanie zdalnych API ............................................................................... 148 Podsumowanie ....................................................................................................... 149 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 149 Strony internetowe ............................................................................................. 149 Rozdzia(cid:239) 8. Odbieranie komunikatów i zmiany konfiguracji ................................. 151 Klasa BroadcastReceiver .......................................................................................... 152 Lokalne odbiorniki powiadomie(cid:241) .......................................................................... 153 Powiadomienia normalne i uporz(cid:200)dkowane ........................................................... 154 Powiadomienia kleiste ........................................................................................ 155 Powiadomienia bezpo(cid:258)rednie ............................................................................... 156 W(cid:239)(cid:200)czanie i wy(cid:239)(cid:200)czanie odbiorników ..................................................................... 156 Intencje rozsy(cid:239)ane przez system ........................................................................... 157 Zmienianie konfiguracji urz(cid:200)dzenia ........................................................................... 160 Podsumowanie ....................................................................................................... 161 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 161 Dokumentacja ................................................................................................... 161 Rozdzia(cid:239) 9. Przechowywanie i serializacja danych ............................................. 163 Techniki utrwalania danych w Androidzie .................................................................. 163 Przechowywanie danych w plikach preferencji ........................................................... 164 Opcje u(cid:285)ytkownika i ustawienia interfejsu u(cid:285)ytkownika ............................................... 166 Dostawcy tre(cid:258)ci o wysokiej wydajno(cid:258)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(cid:239)uga JSON przy u(cid:285)yciu Gson ..................................................... 177 Protocol Buffers Google ....................................................................................... 179 Robienie kopii zapasowej danych aplikacji ................................................................. 181 Podsumowanie ....................................................................................................... 183 Kup książkęPoleć książkę Spis tre(cid:286)ci 9 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 183 Dokumentacja ................................................................................................... 183 Strony internetowe ............................................................................................. 183 Rozdzia(cid:239) 10. Pisanie automatycznych testów .................................................... 185 Zasady testowania w Androidzie ............................................................................... 185 Co testowa(cid:202) ...................................................................................................... 186 Podstawowe testy jednostkowe ............................................................................ 187 Testowanie aktywno(cid:258)ci ....................................................................................... 188 Testowanie us(cid:239)ug ............................................................................................... 190 Testowanie dostawców tre(cid:258)ci ............................................................................... 191 Wykonywanie testów .......................................................................................... 193 Ci(cid:200)g(cid:239)a integracja ..................................................................................................... 194 Podsumowanie ....................................................................................................... 195 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 195 Porady dotycz(cid:200)ce testowania ............................................................................... 195 Ksi(cid:200)(cid:285)ki .............................................................................................................. 195 Strony internetowe ............................................................................................. 195 Cz(cid:218)(cid:258)(cid:202) III: Przekraczanie barier ........................................................197 Rozdzia(cid:239) 11. Zaawansowane aplikacje obs(cid:239)uguj(cid:200)ce audio, wideo oraz kamer(cid:218) ...... 199 Zaawansowane aplikacje d(cid:283)wi(cid:218)kowe ......................................................................... 199 Odtwarzanie d(cid:283)wi(cid:218)ków z krótkim opó(cid:283)nieniem ....................................................... 200 OpenSL ES dla Androida ..................................................................................... 202 Czytanie tekstu na g(cid:239)os ....................................................................................... 205 Rozpoznawanie mowy ........................................................................................ 207 Przetwarzanie filmów przy u(cid:285)yciu OpenGL ES 2.0 ...................................................... 209 Przetwarzanie obrazu z kamery przy u(cid:285)yciu OpenGL ES 2.0 ........................................ 212 Kodowanie mediów ................................................................................................. 213 Nagrywanie sceny OpenGL .................................................................................. 214 Podsumowanie ....................................................................................................... 218 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 218 Dokumentacja ................................................................................................... 218 Rozdzia(cid:239) 12. Bezpiecze(cid:241)stwo aplikacji na Androidzie ......................................... 219 Poj(cid:218)cia dotycz(cid:200)ce bezpiecze(cid:241)stwa ............................................................................ 219 Klucze i podpisy ................................................................................................. 219 Uprawnienia w Androidzie ................................................................................... 220 Ochrona danych u(cid:285)ytkownika .............................................................................. 221 Weryfikowanie wywo(cid:239)uj(cid:200)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(cid:200)dzanie p(cid:218)kami kluczy ....................................................................................... 226 API zarz(cid:200)dzania urz(cid:200)dzeniem ................................................................................... 229 Podsumowanie ....................................................................................................... 232 Kup książkęPoleć książkę 10 Spis tre(cid:286)ci Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 232 Ksi(cid:200)(cid:285)ki .............................................................................................................. 232 Dokumentacja ................................................................................................... 232 Strony internetowe ............................................................................................. 232 Rozdzia(cid:239) 13. Mapy, lokalizacja i API aktywno(cid:258)ci ............................................... 233 Scalony mened(cid:285)er lokalizacji .................................................................................... 233 Integracja API map Google ....................................................................................... 234 Korzystanie z map Google ........................................................................................ 236 Znaczniki na mapach .......................................................................................... 237 Rysowanie kó(cid:239)ek ................................................................................................ 238 Rysowanie wielok(cid:200)tów ........................................................................................ 239 Przydatne narz(cid:218)dzia API lokalizacyjnego ................................................................ 240 Geokodowanie ................................................................................................... 240 Klasa LocationClient ................................................................................................ 241 Geofencing ............................................................................................................. 242 Rozpoznawanie aktywno(cid:258)ci ...................................................................................... 244 Podsumowanie ....................................................................................................... 246 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 246 Dokumentacja ................................................................................................... 246 Strony internetowe ............................................................................................. 246 Rozdzia(cid:239) 14. Kod macierzysty i JNI .................................................................. 247 Kilka uwag o architekturze CPU ............................................................................... 247 Pisanie aplikacji na Androida w j(cid:218)zyku C ................................................................... 248 Skrypty kompilacji NDK ...................................................................................... 248 Macierzyste aktywno(cid:258)ci ....................................................................................... 249 Macierzysty interfejs Javy ........................................................................................ 250 Wywo(cid:239)ywanie funkcji macierzystych w Javie .......................................................... 250 Wywo(cid:239)ywanie metod Javy z kodu macierzystego ..................................................... 252 Macierzyste API Androida ........................................................................................ 255 Biblioteka C ....................................................................................................... 256 Macierzyste funkcje obs(cid:239)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 (cid:283)ród(cid:239)a informacji .................................................................................... 263 Portal dla programistów Androida ......................................................................... 263 Strony internetowe firmy Oracle ........................................................................... 263 Rozdzia(cid:239) 15. Ukryte API Androida ................................................................... 265 API ukryte i oficjalne ............................................................................................... 265 Wyszukiwanie ukrytych API ..................................................................................... 266 Bezpieczne wywo(cid:239)ywanie ukrytych API ..................................................................... 267 Wydobywanie ukrytych API z urz(cid:200)dzenia ............................................................... 268 Wywo(cid:239)ywanie ukrytych API przy u(cid:285)yciu refleksji ..................................................... 270 Kup książkęPoleć książkę Spis tre(cid:286)ci 11 Przyk(cid:239)ady ukrytych API ............................................................................................ 271 Odbieranie i czytanie SMS-ów .............................................................................. 271 Tethering Wi-Fi .................................................................................................. 272 Ukryte ustawienia .............................................................................................. 273 Podsumowanie ....................................................................................................... 274 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 274 Strony internetowe ............................................................................................. 274 Rozdzia(cid:239) 16. Hakowanie platformy Android ...................................................... 275 Odblokowywanie urz(cid:200)dzenia .................................................................................... 276 Wgrywanie obrazów fabrycznych .......................................................................... 277 Odblokowywanie urz(cid:200)dze(cid:241) innych ni(cid:285) Google Nexus ............................................... 277 Oprogramowanie uk(cid:239)adowe od grup programistów .................................................. 278 Kod (cid:283)ród(cid:239)owy Androida ............................................................................................ 278 Konfiguracja (cid:258)rodowiska kompilacji ...................................................................... 278 Kompilowanie i wgrywanie oprogramowania uk(cid:239)adowego ........................................ 279 Pisanie aplikacji systemowych .................................................................................. 280 Certyfikaty platformy ........................................................................................... 281 Podpisywanie aplikacji ........................................................................................ 282 Hakowanie platformy Android ................................................................................... 283 Konfiguracje (cid:258)rodowiska programistycznego ........................................................... 283 Projekty Android ................................................................................................ 284 J(cid:200)dro Linuksa w Androidzie ................................................................................. 285 Dodawanie us(cid:239)ugi systemowej ............................................................................. 285 Przyspieszanie prac nad platform(cid:200) ........................................................................ 288 W(cid:239)asny wk(cid:239)ad w rozwój AOSP .................................................................................. 289 Podsumowanie ....................................................................................................... 289 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 291 Strony internetowe ............................................................................................. 291 Rozdzia(cid:239) 17. Praca w sieci, us(cid:239)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(cid:239)ug sieciowych ...................................................................................... 303 Static Maps v2 Google ........................................................................................ 303 U(cid:285)ywanie OAuth2 w API Foursquare .................................................................... 305 SDK Facebooka dla Androida ............................................................................... 308 Znajdowanie us(cid:239)ug sieciowych i API ..................................................................... 312 Korzystanie z sieci a zu(cid:285)ycie energii .......................................................................... 312 Ogólne wskazówki .............................................................................................. 313 Energooszcz(cid:218)dne odpytywanie sieci ...................................................................... 314 Powiadamianie przez serwer ................................................................................ 314 Podsumowanie ....................................................................................................... 317 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 317 Dokumentacja ................................................................................................... 317 Strony internetowe ............................................................................................. 317 Kup książkęPoleć książkę 12 Spis tre(cid:286)ci Rozdzia(cid:239) 18. Komunikacja ze zdalnymi urz(cid:200)dzeniami ........................................ 319 Technologie (cid:239)(cid:200)czno(cid:258)ci Androida ................................................................................ 319 USB w Androidzie ................................................................................................... 320 Bluetooth LE .......................................................................................................... 322 Wi-Fi w Androidzie .................................................................................................. 325 Wykrywanie us(cid:239)ug sieciowych .............................................................................. 325 Wi-Fi Direct ....................................................................................................... 326 Us(cid:239)ugi sieciowe na urz(cid:200)dzeniach ............................................................................... 329 Tworzenie us(cid:239)ug typu RESTful przy u(cid:285)yciu Restlet .................................................. 329 Serwer WebSocket ............................................................................................. 332 Podsumowanie ....................................................................................................... 334 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 335 Strony internetowe ............................................................................................. 335 Rozdzia(cid:239) 19. Us(cid:239)ugi Google Play ...................................................................... 337 Uwierzytelnianie ..................................................................................................... 337 Dane aplikacji z dysku Google .................................................................................. 340 Zako(cid:241)czenia Google Cloud ....................................................................................... 343 Google Cloud Messaging .......................................................................................... 345 Klient GCM ....................................................................................................... 346 Us(cid:239)ugi Google Play dla gier ....................................................................................... 349 Przesy(cid:239)anie danych w powiadomieniach ................................................................ 351 Strategia przesy(cid:239)ania wiadomo(cid:258)ci ......................................................................... 352 Podsumowanie ....................................................................................................... 353 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 354 Strony internetowe ............................................................................................. 354 Rozdzia(cid:239) 20. Dystrybucja aplikacji w sklepie Google Play ................................... 355 Pobieranie op(cid:239)at wewn(cid:200)trz aplikacji .......................................................................... 356 Konsumowanie produktów .................................................................................. 358 Subskrypcje wewn(cid:200)trz aplikacji ............................................................................ 358 Reklamy w aplikacjach na Androida .......................................................................... 359 Kierowanie reklam .............................................................................................. 360 Kolory reklam .................................................................................................... 361 Reklamy pe(cid:239)noekranowe ..................................................................................... 361 Licencjonowanie aplikacji ........................................................................................ 362 Pliki rozszerze(cid:241) APK ............................................................................................... 363 Tworzenie plików rozszerze(cid:241) ................................................................................ 363 Pobieranie plików rozszerze(cid:241) ............................................................................... 363 Podsumowanie ....................................................................................................... 365 Dodatkowe (cid:283)ród(cid:239)a informacji .................................................................................... 365 Strony internetowe ............................................................................................. 365 Skorowidz ..................................................................................................... 367 Kup książkęPoleć książkę Rozdzia(cid:225) 11. Zaawansowane aplikacje obs(cid:225)uguj(cid:261)ce audio, wideo oraz kamer(cid:266) 199 Rozdzia(cid:239) 11. Zaawansowane aplikacje obs(cid:239)uguj(cid:200)ce audio, wideo oraz kamer(cid:218) Podczas gdy do pracy z d(cid:283)wi(cid:218)kiem, filmami i kamer(cid:200) wystarcz(cid:200) podstawowe API, w zaawansowanych aplikacjach cz(cid:218)sto potrzebne s(cid:200) dodatkowe funkcje. Do zwyk(cid:239)ego nagrywania i odtwarzania mediów wy- starcz(cid:200) dost(cid:218)pne w Androidzie API Javy. Niestety, opó(cid:283)nienia powodowane przez te wysokopoziomowe API mog(cid:200) by(cid:202) czasami nie do przyj(cid:218)cia. Poza tym mo(cid:285)na mie(cid:202) trudno(cid:258)ci w czasie pracy z aplikacjami wykorzystuj(cid:200)cymi kamer(cid:218), takimi jak aplikacje rozszerzonej rzeczywisto(cid:258)ci i inne, w których potrzebne jest reagowanie programu na bie(cid:285)(cid:200)co. W tym rozdziale dowiesz, si(cid:218) jak maksymalnie wykorzysta(cid:202) ró(cid:285)ne w(cid:239)a(cid:258)ciwo(cid:258)ci mediów w Androidzie. W systemie tym mo(cid:285)na u(cid:285)ywa(cid:202) zarówno wysokowydajnych, jak i niskopoziomowych API, takich jak OpenGL ES do grafiki czy OpenSL ES do d(cid:283)wi(cid:218)ku. Nauczysz si(cid:218) u(cid:285)ywa(cid:202) tych API w kombinacji i poznasz kilka przypadków u(cid:285)ycia zaawansowanych funkcji d(cid:283)wi(cid:218)kowych, wideo i kamery. Niektóre przedstawione w tym rozdziale przyk(cid:227)ady (m.in. ten odnosz(cid:270)cy si(cid:275) do OpenSL ES) zawie- raj(cid:270) kod w j(cid:275)zyku C. Je(cid:295)li nie wiesz, jak si(cid:275) u(cid:307)ywa NDK Androida do budowy aplikacji przy u(cid:307)yciu rodzimego kodu C, mo(cid:307)esz przed tym rozdzia(cid:227)em przeczyta(cid:260) rozdzia(cid:227) 14. Zaawansowane aplikacje d(cid:283)wi(cid:218)kowe Pierwszymi aplikacjami d(cid:283)wi(cid:218)kowymi w Androidzie by(cid:239)y odtwarzacze muzyki. Mo(cid:285)na by(cid:239)o w(cid:239)(cid:200)czy(cid:202) stru- mieniowe odtwarzanie piosenek z internetu albo odtworzy(cid:202) utwory posiadane w pami(cid:218)ci urz(cid:200)dzenia. Jed- nak w miar(cid:218) jak platforma Android si(cid:218) rozwija(cid:239)a, zacz(cid:218)(cid:239)y by(cid:202) potrzebne bardziej zaawansowane API do obs(cid:239)ugi d(cid:283)wi(cid:218)ku. Dlatego firma Google postanowi(cid:239)a doda(cid:202) API umo(cid:285)liwiaj(cid:200)ce strumieniowanie i nagry- wanie d(cid:283)wi(cid:218)ku z ma(cid:239)ym opó(cid:283)nieniem. Obecnie dost(cid:218)pne w Androidzie API d(cid:283)wi(cid:218)kowe obs(cid:239)uguj(cid:200) zaawansowane funkcje, których mo(cid:285)na u(cid:285)y- wa(cid:202) w aplikacjach. Teraz ju(cid:285) nie jest trudne zaimplementowanie aplikacji VoIP (ang. voice over internet protocol), zbudowanie w(cid:239)asnego strumieniowego klienta muzycznego czy zaimplementowanie nieopó(cid:283)- nionych odg(cid:239)osów w grach. Ponadto dost(cid:218)pne s(cid:200) API umo(cid:285)liwiaj(cid:200)ce korzystanie z funkcji czytania tek- stu na g(cid:239)os i rozpoznawania mowy, dzi(cid:218)ki którym u(cid:285)ytkownicy mog(cid:200) obs(cid:239)ugiwa(cid:202) aplikacje za pomoc(cid:200) d(cid:283)wi(cid:218)ków zamiast wizualnego interfejsu u(cid:285)ytkownika lub technologii dotykowych. Kup książkęPoleć książkę 200 Cz(cid:266)(cid:286)(cid:252) III: Przekraczanie barier W tym podrozdziale obja(cid:258)ni(cid:218), jak u(cid:285)ywa(cid:202) tych funkcji, oraz przedstawi(cid:218) przyk(cid:239)ady kodu, dzi(cid:218)ki którym (cid:239)atwiej Ci b(cid:218)dzie rozpocz(cid:200)(cid:202) prac(cid:218) z nimi. Odtwarzanie d(cid:283)wi(cid:218)ków z krótkim opó(cid:283)nieniem System Android zawiera cztery API do odtwarzania d(cid:283)wi(cid:218)ków (a nawet pi(cid:218)(cid:202), je(cid:258)li doliczy si(cid:218) MIDI) i trzy do ich nagrywania. W kolejnych kilku sekcjach znajduje si(cid:218) przegl(cid:200)d tych API wraz z przyk(cid:239)adami kodu ilustruj(cid:200)cymi sposób u(cid:285)ycia bardziej zaawansowanych funkcji. API do odtwarzania d(cid:283)wi(cid:218)ku Domy(cid:258)ln(cid:200) klas(cid:200) do obs(cid:239)ugi odtwarzania d(cid:283)wi(cid:218)ku jest MediaPlayer. Klasa ta zawiera podstawowe funkcje dotycz(cid:200)ce odtwarzania d(cid:283)wi(cid:218)ku odpowiednie do u(cid:285)ycia w odtwarzaczach muzyki (lub filmów) i udost(cid:218)p- nia wygodne API do odtwarzania d(cid:283)wi(cid:218)ków zarówno ze (cid:283)róde(cid:239) strumieniowych (np. radia internetowe- go), jak i z lokalnych plików. Z klas(cid:200) MediaPlayer zwi(cid:200)zana jest zaawansowana maszyna stanów, któr(cid:200) musi (cid:258)ledzi(cid:202) aplikacja. Przy u(cid:285)yciu tego API mo(cid:285)na doda(cid:202) do aplikacji odtwarzacz muzyki lub filmów i nie martwi(cid:202) si(cid:218) o dodatkowe przetwarzanie ani opó(cid:283)nienia. Inn(cid:200) mo(cid:285)liwo(cid:258)ci(cid:200) w kwestii odtwarzania d(cid:283)wi(cid:218)ków jest klasa SoundPool, która charakteryzuje si(cid:218) odtwa- rzaniem d(cid:283)wi(cid:218)ku z bardzo ma(cid:239)ym opó(cid:283)nieniem, a wi(cid:218)c jest odpowiednia do odtwarzania odg(cid:239)osów i in- nych krótkich d(cid:283)wi(cid:218)ków. API tego u(cid:285)ywa si(cid:218) np. do w(cid:239)(cid:200)czania odg(cid:239)osów w grach. Brak w nim jednak obs(cid:239)ugi strumieniowania d(cid:283)wi(cid:218)ku, wi(cid:218)c nie nadaje si(cid:218) do u(cid:285)ycia w aplikacjach odtwarzaj(cid:200)cych strumie- nie d(cid:283)wi(cid:218)kowe, takich jak VoIP. Trzeci(cid:200) mo(cid:285)liwo(cid:258)(cid:202) odtwarzania d(cid:283)wi(cid:218)ku reprezentuje klasa AudioTrack, która umo(cid:285)liwia przekazanie do sprz(cid:218)tu pojedynczego strumienia d(cid:283)wi(cid:218)kowego w postaci surowych buforów PCM. Rozwi(cid:200)zanie to za- pewnia niskie opó(cid:283)nienia nawet przy strumieniowaniu. Klasa AudioTrack jest tak efektywna, (cid:285)e mo(cid:285)e by(cid:202) z powodzeniem u(cid:285)ywana w VoIP i podobnych technologiach. Poni(cid:285)ej znajduje si(cid:218) przyk(cid:239)ad u(cid:285)ycia klasy AudioTrack w typowej aplikacji VoIP: public class AudioTrackDemo { private final AudioTrack mAudioTrack; private final int mMinBufferSize; public AudioTrackDemo() { mMinBufferSize = AudioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); mAudioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, mMinBufferSize * 2, AudioTrack.MODE_STREAM); } public void playPcmPacket(byte[] pcmData) { if(mAudioTrack != null mAudioTrack.getState() == AudioTrack.STATE_INITIALIZED) { if(mAudioTrack.getPlaybackRate() != AudioTrack.PLAYSTATE_PLAYING) { mAudioTrack.play(); Kup książkęPoleć książkę Rozdzia(cid:225) 11. Zaawansowane aplikacje obs(cid:225)uguj(cid:261)ce audio, wideo oraz kamer(cid:266) 201 } mAudioTrack.write(pcmData, 0, pcmData.length); } } public void stopPlayback() { if(mAudioTrack != null) { mAudioTrack.stop(); mAudioTrack.release(); } } } Najpierw okre(cid:258)li(cid:239)em minimalny rozmiar bufora dla strumienia audio. Aby to zrobi(cid:202), trzeba zna(cid:202) cz(cid:218)stotli- wo(cid:258)(cid:202) próbkowania, wiedzie(cid:202), czy sygna(cid:239) jest mono-, czy stereofoniczny oraz czy b(cid:218)dzie u(cid:285)ywane 8-, czy 16-bitowe kodowanie PCM. Cz(cid:218)stotliwo(cid:258)(cid:202) próbkowania i rozmiar próbki s(cid:200) parametrami metody Audio- Track.getMinBufferSize(), która zwraca minimalny rozmiar bufora w bajtach dla danego egzemplarza klasy AudioTrack. Egzemplarz klasy AudioTrack tworzy si(cid:218) przy u(cid:285)yciu parametrów dostosowanych do potrzeb programisty. Pierwszy parametr dostosowuje si(cid:218) do typu u(cid:285)ywanego sygna(cid:239)u d(cid:283)wi(cid:218)kowego. W przypadku aplikacji VoIP nale(cid:285)y u(cid:285)y(cid:202) STREAM_VOICE_CALL, a do strumieniowania muzyki — STREAM_MUSIC. Drugi, trzeci i czwarty parametr zmieniaj(cid:200) si(cid:218) w zale(cid:285)no(cid:258)ci od sytuacji. S(cid:239)u(cid:285)(cid:200) one odpowiednio do okre- (cid:258)lania cz(cid:218)stotliwo(cid:258)ci próbkowania, czy sygna(cid:239) jest stereo, czy mono, oraz rozmiaru próbkowania. W apli- kacji VoIP mo(cid:285)na by by(cid:239)o zastosowa(cid:202) 16 kHz przy 16 bitach mono, natomiast w odtwarzaczu muzyki lepsze by(cid:239)oby ustawienie 44,1 kHz przy 16 bitach stereo. Wy(cid:285)sza cz(cid:218)stotliwo(cid:258)(cid:202) próbkowania przy 16 bitach stereo wymaga zastosowania wi(cid:218)kszego bufora oraz sprawniejszego przesy(cid:239)ania danych, ale po- zwala uzyska(cid:202) lepsz(cid:200) jako(cid:258)(cid:202). Wszystkie urz(cid:200)dzenia z Androidem obs(cid:239)uguj(cid:200) odtwarzanie sygna(cid:239)u PCM o cz(cid:218)stotliwo(cid:258)ci próbkowania 8, 16 i 44,1 kHz, z rozmiarem próbki 8 i 16 bitów stereo. Warto(cid:258)(cid:202) parametru okre(cid:258)laj(cid:200)cego rozmiar bufora AudioTrack powinna by(cid:202) wielokrotno(cid:258)ci(cid:200) minimalnego rozmiaru bufora. Wybór konkretnej warto(cid:258)ci zale(cid:285)y od potrzeb, a tak(cid:285)e od opó(cid:283)nie(cid:241) sieciowych i innych czynników. Nigdy nie dopuszczaj, aby bufor by(cid:227) pusty, bo spowoduje to powstanie zak(cid:227)óce(cid:285) podczas odtwa- rzania d(cid:305)wi(cid:275)ku. Ostatni parametr konstruktora okre(cid:258)la, czy dane akustyczne maj(cid:200) zosta(cid:202) wys(cid:239)ane raz (MODE_STATIC), czy jako ci(cid:200)g(cid:239)y strumie(cid:241) (MODE_STREAM). W pierwszym przypadku konieczne jest przes(cid:239)anie ca(cid:239)o(cid:258)ci. Natomiast w przypadku strumieniowania mo(cid:285)na wysy(cid:239)a(cid:202) porcje danych PCM o dowolnym rozmiarze, co jest bardzo przydatne w aplikacjach odtwarzaj(cid:200)cych strumienie muzyki i VoIP. API do rejestrowania d(cid:283)wi(cid:218)ku Pierwsze API do rejestrowania d(cid:283)wi(cid:218)ku (a tak(cid:285)e wideo) to MediaRecorder. Jest podobne do MediaPlayer, bo równie(cid:285) utrzymuje wewn(cid:218)trzny stan, który nale(cid:285)y (cid:258)ledzi(cid:202) w kodzie. Za pomoc(cid:200) klasy MediaRecorder mo(cid:285)na tylko zapisywa(cid:202) przechwycone dane w pliku, a wi(cid:218)c nie nadaje si(cid:218) ona do u(cid:285)ytku w aplikacjach strumieniowych. Je(cid:258)li rejestrowane d(cid:283)wi(cid:218)ki maj(cid:200) by(cid:202) przesy(cid:239)ane strumieniowo, mo(cid:285)na u(cid:285)y(cid:202) API AudioRecord, które jest bardzo podobne do opisanego wy(cid:285)ej API AudioTrack. Kup książkęPoleć książkę 202 Cz(cid:266)(cid:286)(cid:252) III: Przekraczanie barier Poni(cid:285)ej znajduje si(cid:218) przyk(cid:239)ad u(cid:285)ycia klasy AudioRecord do nagrywania 16-bitowego sygna(cid:239)u monofonicz- nego o cz(cid:218)stotliwo(cid:258)ci próbkowania 16 kHz: public class AudioRecordDemo { private final AudioRecord mAudioRecord; private final int mMinBufferSize; private boolean mDoRecord = false; public AudioRecordDemo() { mMinBufferSize = AudioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_OUT_MONO, (cid:180)AudioFormat.ENCODING_PCM_16BIT); mAudioRecord = new AudioRecord( MediaRecorder.AudioSource.VOICE_COMMUNICATION, 16000, (cid:180)AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, (cid:180)mMinBufferSize * 2); } public void writeAudioToStream(OutputStream stream) { mDoRecord = true; mAudioRecord.startRecording(); byte[] buffer = new byte[mMinBufferSize * 2]; while(mDoRecord) { int bytesWritten = mAudioRecord.read(buffer, 0, buffer.length); try { stream.write(buffer, 0, bytesWritten); } catch (IOException e) { // pomini(cid:266)te dla uproszczenia... mDoRecord = false; } } mAudioRecord.stop(); mAudioRecord.release(); } public void stopRecording() { mDoRecord = false; } } Jako (cid:285)e kod ten jest bardzo podobny do wcze(cid:258)niej pokazanego z u(cid:285)yciem klasy AudioTrack, mo(cid:285)na go wykorzysta(cid:202) w celu u(cid:285)ycia kombinacji tych dwóch klas w aplikacjach VoIP itp. OpenSL ES dla Androida Wcze(cid:258)niej napisa(cid:239)em, (cid:285)e istniej(cid:200) cztery API do odtwarzania d(cid:283)wi(cid:218)ku i trzy do jego nagrywania. Do tej pory opisa(cid:239)em trzy z pierwszej grupy i dwa z drugiej. Natomiast w tej sekcji znajduje si(cid:218) opis ostatniego z tych API, o nazwie OpenSL ES, które s(cid:239)u(cid:285)y zarówno do odtwarzania, jak i rejestrowania d(cid:283)wi(cid:218)ku. OpenSL ES to standard opracowywany przez Khronos Group (t(cid:218) sam(cid:200) grup(cid:218), która zajmuje si(cid:218) standardem OpenGL). API OpenSL ES zawiera niskopoziomowe narz(cid:218)dzia do pracy bezpo(cid:258)rednio ze sprz(cid:218)tem, które zapewniaj(cid:200) bardzo ma(cid:239)e opó(cid:283)nienia w odtwarzaniu i nagrywaniu d(cid:283)wi(cid:218)ku. Podczas gdy pozosta(cid:239)e opisywane API maj(cid:200) wygodne interfejsy w Javie, OpenSL ES aktualnie dost(cid:218)pne jest wy(cid:239)(cid:200)cznie w j(cid:218)zyku C poprzez NDK Androida. W tej sekcji opisuj(cid:218) tylko rodzim(cid:200) cz(cid:218)(cid:258)(cid:202) API OpenSL ES. Je(cid:258)li chcesz dowiedzie(cid:202) si(cid:218), jak przy u(cid:285)yciu NDK Androida pisa(cid:202) kod JNI do wspó(cid:239)pracy z kodem w C, przeczytaj rozdzia(cid:239) 14. Zak(cid:227)adam, (cid:307)e czytelnik zna podstawy programowania w j(cid:275)zyku C. Kup książkęPoleć książkę Rozdzia(cid:225) 11. Zaawansowane aplikacje obs(cid:225)uguj(cid:261)ce audio, wideo oraz kamer(cid:266) 203 Pierwsza cz(cid:218)(cid:258)(cid:202) przyk(cid:239)adu u(cid:285)ycia biblioteki OpenSL ES zawiera dyrektywy do(cid:239)(cid:200)czaj(cid:200)ce potrzebne pliki oraz deklaracje globalnych obiektów, które b(cid:218)d(cid:200) u(cid:285)ywane w dalszej cz(cid:218)(cid:258)ci programu: #include pthread.h // potrzebne do obs(cid:225)ugi OpenSL ES #include SLES/OpenSLES.h #include SLES/OpenSLES_Android.h static pthread_cond_t s_cond; static pthread_mutex_t s_mutex; static SLObjectItf engineObject = NULL; static SLEngineItf engineEngine; static SLObjectItf outputMixObject = NULL; static SLObjectItf bqPlayerObject = NULL; static SLPlayItf bqPlayerPlay; static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue; Poni(cid:285)ej znajduje si(cid:218) funkcja zwrotna bqPlayerCallback(), która jest wywo(cid:239)ywana przez OpenSL ES przy odtwarzaniu próbki: static void waitForPlayerCallback() { pthread_mutex_lock( s_mutex); pthread_cond_wait( s_cond, s_mutex); pthread_mutex_unlock( s_mutex); } SLresult enqueueNextSample(short* sample, int size, short waitForCallback) { if(waitForCallback) { waitForPlayerCallback(); } return (*bqPlayerBufferQueue)- Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize); } void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context) { pthread_cond_signal( s_cond); } W tym przypadku przekazujemy bufor wyj(cid:258)ciowy z innego w(cid:200)tku poprzez funkcj(cid:218) enqueueNextSample(). Do synchronizacji w(cid:200)tku, w którym nast(cid:218)puje wywo(cid:239)anie zwrotne, z w(cid:200)tkiem wywo(cid:239)uj(cid:200)cym funkcj(cid:218) enqueue u(cid:285)yli(cid:258)my pthread_mutex. Wywo(cid:239)anie funkcji waitForPlayerCallback() blokuje w(cid:200)tek do czasu wywo(cid:239)a- nia funkcji pthread_cond_signal() w wywo(cid:239)aniu zwrotnym (podobnie dzia(cid:239)a blokowanie metod(cid:200) Object. wait() w Javie). W poni(cid:285)szym kodzie nast(cid:218)puje inicjacja silnika OpenSL ES: SLresult initOpenSLES() { // S(cid:225)u(cid:298)y do sprawdzania wyniku ka(cid:298)dej operacji... SLresult result; int speakers; Kup książkęPoleć książkę 204 Cz(cid:266)(cid:286)(cid:252) III: Przekraczanie barier int channels = 2; // Najpierw tworzymy muteks, który b(cid:266)dzie potrzebny do odtwarzania pó(cid:296)niej. pthread_cond_init( s_cond, NULL); pthread_mutex_init( s_mutex, NULL); // utworzenie i realizacja silnika result = slCreateEngine( engineObject, 0, NULL, 0, NULL, NULL); if(result != SL_RESULT_SUCCESS) return result; result = (*engineObject)- Realize(engineObject, SL_BOOLEAN_FALSE); if(result != SL_RESULT_SUCCESS) return result; result = (*engineObject)- GetInterface(engineObject, SL_IID_ENGINE, engineEngine); if(result != SL_RESULT_SUCCESS) return result; // utworzenie i realizacja miksera wyj(cid:286)ciowego const SLInterfaceID outputIds[1] = {SL_IID_VOLUME}; const SLboolean outputReq[1] = {SL_BOOLEAN_FALSE}; result = (*engineEngine)- CreateOutputMix(engineEngine, outputMixObject, 1, outputIds, (cid:180)outputReq); if(result != SL_RESULT_SUCCESS) return result; result = (*outputMixObject)- Realize(outputMixObject, SL_BOOLEAN_FALSE); if(result != SL_RESULT_SUCCESS) return result; // utworzenie bufora wyj(cid:286)ciowego i uj(cid:286)cia SLDataLocator_AndroidSimpleBufferQueue bufferQueue = (cid:180){SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2}; speakers = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT; SLDataFormat_PCM formatPcm = {SL_DATAFORMAT_PCM, channels, SL_SAMPLINGRATE_44_1, (cid:180)SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16, speakers, (cid:180)SL_BYTEORDER_LITTLEENDIAN}; SLDataSource audioSource = { bufferQueue, formatPcm}; SLDataLocator_OutputMix dataLocOutputMix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject}; SLDataSink audioSink = { dataLocOutputMix, NULL}; // utworzenie i realizacja obiektu odtwarzacza const SLInterfaceID playerIds[] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE}; const SLboolean playerReq[] = {SL_BOOLEAN_TRUE}; result = (*engineEngine)- CreateAudioPlayer(engineEngine, bqPlayerObject, audioSource, (cid:180) audioSink, 1, playerIds, playerReq); if(result != SL_RESULT_SUCCESS) return result; result = (*bqPlayerObject)- Realize(bqPlayerObject, SL_BOOLEAN_FALSE); if(result != SL_RESULT_SUCCESS) return result; result = (*bqPlayerObject)- GetInterface(bqPlayerObject, SL_IID_PLAY, bqPlayerPlay); if(result != SL_RESULT_SUCCESS) return result; // pobranie obiektu kolejki bufora odtwarzacza result = (*bqPlayerObject)- GetInterface(bqPlayerObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, (cid:180) bqPlayerBufferQueue); if(result != SL_RESULT_SUCCESS) return result; // rejestracja funkcji zwrotnej result = (*bqPlayerBufferQueue)- RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, (cid:180)NULL); if(result != SL_RESULT_SUCCESS) return result; return SL_RESULT_SUCCESS; } Wszystkie inicjacje w tym kodzie s(cid:200) wykonywane wg jednej podstawowej zasady: najpierw tworzy si(cid:218) obiekt (np. silnik), a nast(cid:218)pnie si(cid:218) go realizuje. Potem pobiera si(cid:218) interfejs do sterowania tym obiektem. Kup książkęPoleć książkę Rozdzia(cid:225) 11. Zaawansowane aplikacje obs(cid:225)uguj(cid:261)ce audio, wideo oraz kamer(cid:266) 205 W powy(cid:285)szym przyk(cid:239)adzie najpierw zosta(cid:239)y utworzone obiekty silnika i odtwarzacza. Ponadto powsta(cid:239) obiekt bufora na próbki d(cid:283)wi(cid:218)kowe przeznaczone do odtworzenia. Odtwarzacz jest przystosowany do odtwarzania 16-bitowego
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Platforma Android. Nowe wyzwania
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: