Sensory rodzaje. Sensory rodzaje

Podobne dokumenty
Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

akademia androida Sensory część V Mobile Applications Developers

akademia androida Składowanie danych część VI

Programowanie urządzeń mobilnych. projekt 6 ( )

Android poradnik programisty

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Android, wprowadzenie do SDK

Systemy operacyjne na platformach mobilnych

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Projekt Sauron. Adam Banyś Mateusz Dykacz Konrad Gądek Wojciech Wyczesany

Systemy operacyjne na platformach mobilnych

Mobilne aplikacje multimedialne

Przechowywanie danych

Android tworzenie aplikacji mobilnych

Szkolenie Android dla początkujących

Wykorzystanie nowoczesnych technologii w zarządzaniu drogami wojewódzkimi na przykładzie systemu zarządzania opartego na technologii GPS-GPRS.

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Navroad XARO + mapa SYGIC Europa

Kraków, ver

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Struktury systemów operacyjnych

AKADEMIA MŁODYCH ODKRYWCÓW

akademia androida Intencje oraz URI część III

INSTRUKCJA OBSŁUGI

Programowanie aplikacji mobilnych

Sensory w WP7. Wykład 11 Sensory. GPS i mapa.

Współczesne usługi monitoringu NOWE TRENDY


Multimedia JAVA. Historia

Wykaz zmian w programie SysLoger

Agenda. Activity cd Layouty Jednostki Dialogi LogCat Drugie Activity i Intents Serializacja Własne widoki Menu

Część 3 - Konfiguracja

Spis treści. S t r o n a 2

Obsługa SMS i telefonii

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Delphi podstawy programowania. Środowisko Delphi

akademia androida Pierwsze kroki w Androidzie część I

Wprowadzenie do projektu QualitySpy

Fragmenty są wspierane od Androida 1.6

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Intencje nadawcze. Aktywności mogą rozsyłać komunikaty do wszystkich zainstalowanych aplikacji

INSTRUKCJA OBSŁUGI USTAWIEŃ DYNAMICZNIE PRZEDZIELANYCH ADRESÓW IP W URZĄDZENIACH SYSTEMU IP-PRO ORAZ REJESTRATORACH MY-DVR

protected void onsaveinstancestate(bundle outstate); protected void onrestoreinstancestate(bundle savedinstancestate);

kpt. Mirosław Matusik Brzeźnica, dnia roku

cgeozasiewy Oprogramowanie polowe do prowadzenia pomiarów GPS

MP4 FY535D. Włączanie: Przesuń przełacznik ON/OFF na pozycję ON i przytrzymaj przycisk > aby właczyć. Aby wyłączyć przesuń przełacznik na pozycję OFF

Podręcznik użytkownika

Wykaz zmian w programie SysLoger

instrukcja obsługi Oprogramowanie klienckie na urządzenia mobilne oparte na systemie Android. NMS Mobile

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Program V-SIM tworzenie plików video z przebiegu symulacji

Metody dostępu do danych

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

ABC systemu Windows 2016 PL / Danuta Mendrala, Marcin Szeliga. Gliwice, cop Spis treści

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

TREND 250 H.264 DVR Central Management System

WIDEOREJESTRATOR LX-400G Z SYSTEMEM ANDROID

Programowanie na poziomie sprzętu. Programowanie w Windows API

Wykład 6 Dziedziczenie cd., pliki

Tworzenie i wykorzystanie usług

ROZDZIAŁ 1. PRZEGLĄD BRAMOFONU SAFE...

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Instrukcja obsługi rejestratorów XVR. Zapoznaj się przed użyciem

MagicInfo Express instrukcja obsługi

BEZPRZEWODOWA KAMERA OBROTOWA P2P

SPECYFIKACJA FUNKCJONALNA OPROGRAMOWANIA 11 marca 2014 XLZEBRAPRINTER

Zaproszenie do składania ofert na dostawę i montaż sprzętu TIK w ramach projektu Mistrz Przedszkolak

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

GSMONLINE.PL. Wiko PULP 4G, Wiko PULP FAB 4G w Polsce Wiko

MentorGraphics ModelSim

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Skrócona instrukcja obsługi czujników Fast Tracer firmy Sequoia.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

NAZWA PRODUKTU: Ukryta Mini Kamera IP WiFi FullHD Android ios Detekcja Ruchu S163

TRX API opis funkcji interfejsu

MS Visual Studio 2005 Team Suite - Performance Tool

WSTĘP DO ANDROIDA. Laboratorium

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Warszawa, Wytyczne dla projektu Biblioteka GUI

GPS module based on Google Maps and LabView environment Rejestrator GPS wykorzystujący Google Maps i środowisko LabView

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

11. Autoryzacja użytkowników

Programowanie usług działających w tle

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0

Tworzenie i wykorzystanie usług sieciowych

Możliwości odtwarzaczy Hyundai MBox. Sprzedaż odtwarzaczy multimedialnych na świecie. (w tyś. szt.)

ednet Smart Memory Instrukcja obsługi Numery modeli:

Załącznik do umowy nr..

Wykaz zmian w programie SysLoger

KONFIGURACJA KAMER FORTEC IP

Samochodowe systemy kontrolno dyspozytorskie GPS

MDH System Strona 1. Produkt z kategorii: Lokalizatory GPS

Transkrypt:

Sensory rodzaje System przewiduje obsługę 12 rodzajów czujników (sensorów). Można sprawdzić ich dostępność, dokładność, pobór prądu itp. Można odczytać ich wskazania oraz je zarejestrować/wyrejestrować. Niektóre sensory są realizowane programowo. http://developer.android.com/guide/topics/sensors/sensors_overview.html Sensor Type Description Common Uses TYPE_ACCELEROMETER H Measures the acceleration force in m/s 2 that is applied to a device on all three physical axes (x, y, and z), including the force of gravity. Motion detection (shake, tilt, etc.). TYPE_AMBIENT_TEMPERATURE H Measures the ambient room temperature in degrees Celsius Monitoring air ( C). See note below. temperatures. TYPE_GRAVITY S /H Measures the force of gravity in m/s 2 that is applied to a device on all three physical axes (x, y, z). Motion detection (shake, tilt, etc.). TYPE_GYROSCOPE H Measures a device's rate of rotation in rad/s around each of the three physical axes (x, y, and z). Rotation detectio n (spin, turn, etc.). TYPE_LIGHT H Measures the ambient light level (illumination) in lx. Controlling screen brightness. TYPE_LINEAR_ACCELERATION S/H Measures the acceleration force in m/s 2 that is applied to a device on all three physical axes (x, y, and z), excluding the force of gravity. TYPE_MAGNETIC_FIELD H Measures the ambient geomagnetic field for all three physical axes (x, y, z) in μt. Monitoring acceleration along a single axis. Creating a compass. 102 Sensory rodzaje Sensor Type Description Common Uses TYPE_ORIENTATION S Measures degrees of rotation that a device makes around all three physical axes (x, y, z). As of API level 3 you can obtain Determining device position. the inclination matrix and rotation matrix for a device by using the gravity sensor and the geomagnetic field sensor in conjunction with the getrotationmatrix() method. TYPE_PRESSURE H Measures the ambient air pressure in hpa or mbar. Monitoring air pressure changes. TYPE_PROXIMITY H Measures the proximity of an object in cm relative to the view Phone position during a screen of a device. This sensor is typically used to determine call. whether a handset is being held up to a person's ear. TYPE_RELATIVE_HUMIDITY H Measures the relative ambient humidity in percent (%). Monitoring dewpoint, absolute, and relative humidity. TYPE_ROTATION_VECTOR S/H Measures the orientation of a device by providing the three elements of the device's rotation vector. Motion detection and rotation detection. TYPE_TEMPERATURE H Measures the temperature of the device in degrees Celsius ( C). This sensor implementation varies across devices and this sensor was replaced with the TYPE_AMBIENT_TEMPERATURE sensor in API Level 14 Monitoring temperatures. http://developer.android.com/guide/topics/sensors/sensors_overview.html 103 2018 Wszelkie prawa zastrzeżone 1

Sensory klasy SensorManager Zarządza dostępem do serwisu sensorów, ich aktywacją, odczytem danych, tworzy ich listę. Sensor Określa konkretny sensor, jego możliwości, dokładność itp. SensorEvent Zawiera informację o zdarzeniu dotyczącym danego sensora (np. zmiany wartości pola magnetycznego, czasu zmiany itp.) SensorEventListener Interfejs nasłuch zmiany stanu sensora. 104 Sensory dostępność 105 2018 Wszelkie prawa zastrzeżone 2

Sensory użycie Dostęp do serwisu obsługi sensorów Pobranie listy dostępnych sensorów Sprawdzenie dostępności konkretnego sensora 106 Przykład pobranie wskazań oncreate() 107 2018 Wszelkie prawa zastrzeżone 3

Sensory rejestracja i wyrejestrowanie Rejestracja i wyrejestrowanie sensora Szczegółowy opis poszczególnych sensorów: http://developer.android.com/guide/topics/sensors/sensors_overview.html itd. 108 Sensory funkcje Użyteczne funkcje: getdefaultsensor() dostęp do domyślnego sensora konkretnego typu getmindelay() okres pomiaru (kolejnych próbek) w mikrosekundach getvendor(), getversion() producent czujnika i jego wersja getresolution() rozdzielczość wskazań czujnika getmaximumrange() maksymalna wartość wskazań czujnika getpower() ile miliamperów pobiera czujnik 109 2018 Wszelkie prawa zastrzeżone 4

Typy sensorów int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. int TYPE_ALL A constant describing all sensor types. int TYPE_AMBIENT_TEMPERATURE A constant describing an ambient temperature sensor type. int TYPE_GAME_ROTATION_VECTOR A constant describing an uncalibrated rotation vector sensor type. int TYPE_GEOMAGNETIC_ROTATION_VECTOR A constant describing a geo-magnetic rotation vector. int TYPE_GRAVITY A constant describing a gravity sensor type. int TYPE_GYROSCOPE A constant describing a gyroscope sensor type. int TYPE_GYROSCOPE_UNCALIBRATED A constant describing an uncalibrated gyroscope sensor type. int TYPE_HEART_RATE A constant describing a heart rate monitor. int TYPE_LIGHT A constant describing a light sensor type. int TYPE_LINEAR_ACCELERATION A constant describing a linear acceleration sensor type. int TYPE_MAGNETIC_FIELD A constant describing a magnetic field sensor type. int TYPE_MAGNETIC_FIELD_UNCALIBRATED A constant describing an uncalibrated magnetic field sensor type. int TYPE_ORIENTATION This constant was deprecated in API level 8. usesensormanager.getorientation() instead. int TYPE_PRESSURE A constant describing a pressure sensor type. int TYPE_PROXIMITY A constant describing a proximity sensor type. int TYPE_RELATIVE_HUMIDITY A constant describing a relative humidity sensor type. int TYPE_ROTATION_VECTOR A constant describing a rotation vector sensor type. int TYPE_SIGNIFICANT_MOTION A constant describing a significant motion trigger sensor. int TYPE_STEP_COUNTER A constant describing a step counter sensor. int TYPE_STEP_DETECTOR A constant describing a step detector sensor. int TYPE_TEMPERATURE This constant was deprecated in API level 14. usesensor.type_ambient_temperature instead. 110 Przykład lista sensorów 111 2018 Wszelkie prawa zastrzeżone 5

Przykład Geomagnetic Type HSCD Series 112 Położenie geograficzne/gps 113 2018 Wszelkie prawa zastrzeżone 6

wiki: Public Domain, user El pak Global Positioning System 32 satelity GPS-NAVSTAR (ang. NAVigation Signal Timing And Ranging) system nawigacji satelitarnej, stworzony przez Departament Obrony USA Okresowy sygnał (ok. 1,4 GHz i 1.023 Mbit/s) z zakodowanymi, m.in. czasem, pozycjami satelitów, współczynnikami korekcji i precyzyjnymi danymi (tylko dla wojska itp.). Wspólne częstotliwości nadawania, ale z różne modulacje. Złożone algorytmy dekodowania sygnału. Pozycjonowanie na ziemi: Min. 3-4 widoczne satelity Pomiar długości, szerokości i wysokości n.p.m. wg różnych norm (np. WGS-84 World Geodetic System '84) Pomiar czasu (ns) Inne systemy: GLONASS (Ros), Galileo (UE), Baidou/COMPASS (Chiny), IRNSS (Indie), QZSS (Jap) 114 Położenie geograficzne Sposoby określania położenia geograficznego: Odbiornik GPS w urządzeniu Zależy od widoczności satelitów, ich liczby, pogody itp. Pasywny Sieć komórkowa operatora Zwykle obciąża rachunek za pakiet internetowy, zależy od zasięgu operatora. Pośrednictwo operatora! Sieć internetowa przez WiFi Zależy od zasięgu, mało dokładne, ale działa w budynkach. Pośrednictwo administratora! Dodatkowe API Googla Zautomatyzowany wybór dostawcy położenia (GPS, operator, internet, inne) Optymalizacja zużycia prądu itp. Wsparcie dla obsługi Google Maps Pośrednictwo Googla! 115 2018 Wszelkie prawa zastrzeżone 7

Położenie geograficzne Zastosowanie: Mapy, nawigacja itp. Personalizacja aplikacji pod kątem kraju, miasta itp. Personalizacja reklam w aplikacjach Śledzenie użytkownika, systemy bezpieczeństwa itp. Uprawnienia (AndroidManifest.xml): ACCESS_COURSE_LOCATION mniej dokładne, zwykle na podstawie sieci ACCESS_FINE_LOCATION dokładne, na bazie GPS 116 LocationManager/Provider Głowna klasa: LocationManager Dostęp do serwisu położenia geograficznego LOCATION_SERVICE Zarządza dostawcami położenia (LocationProvider) Interfejs pobierania aktualnego położenia od wybranego dostawcy(-ów) implements LocationListener 117 2018 Wszelkie prawa zastrzeżone 8

Location Parametry położenia geograficznego: Szerokość geograficzna Długość geograficzna Wysokość n.p.m. wiki, Public Domain, user:jaredzimmerman (WMF) Najkrótsza droga (kąt) do celu 118 Aktualizacja Prośba o aktualizację położenia: requestlocationupdates() Jeśli jeszcze/tymczasowo brak połączenia z dostawcą ostatnie znane położenie: getlastknownlocation() Przykładowa strategia doboru najdokładniejszego położenia: 119 2018 Wszelkie prawa zastrzeżone 9

Położenie geograficzne problemy Kiedy zacząć wskazania położenia GPS po starcie? Nie za wcześnie, bo dokładność (liczba satelitów) jest mała Można pobrać ostatnie zapamiętane położenie, ale może być bardzo stare Nie za późno, bo oczekiwanie zużywa baterię Kiedy przerywać aktualizację odczytów? Z oszczędności baterii nie za rzadko Dla dużej dokładności nigdy Najdokładniejsze wyniki Łączenie i automatyczny wybór z kilku dostawców 120 Google Maps Android API Zautomatyzowany dostęp do Google Maps z poziomu aplikacji (kodu źródłowego) Tworzenie własnego interfejsu Dodawanie znaczników, tras, obrazków Rysowanie po mapie 121 2018 Wszelkie prawa zastrzeżone 10

Przykład - definicje 1/4 122 Przykład pobranie położenia 2/4 123 2018 Wszelkie prawa zastrzeżone 11

Przykład reszta funkcji 3/4 konstruktor wyrejestrowanie interfejsu czy GPS działa gettery... 124 MainActivity.class 4/4 125 2018 Wszelkie prawa zastrzeżone 12

Pamięć 126 Pamięć telefonu Ustawienia aplikacji (Preferences / Shared Preferences) podobnie jak rejestry Windows przypisane do konkretnej aplikacji ale mogą być upublicznione dla innej dane zapisane w postaci klucz-wartość Settings: GUI ułatwiające obsługę preferencji Pamięć wewnętrzna (Internal Storage) pliki domyślnie ukryte przed innymi aplikacjami kasowane po wyinstalowaniu aplikacji standardowe funkcje Java do obsługi zapisu/odczytu plików Pamięć zewnętrzna (External Storage), np. karta SD wymagane uprawnienia android.permission.write_external_storage wymagane sprawdzenie, czy pamięć jest dostępna i zapisywalna łatwy dostęp do kilku, z góry zdefiniowanych folderów standardowe funkcje Java do obsługi zapisu/odczytu plików Baza danych (SQLite Databases) baza przypisana do konkretnej aplikacji, dostępna pod zdefiniowaną nazwą 127 2018 Wszelkie prawa zastrzeżone 13

Preferences 128 Preferences / Shared Preferences public abstract SharedPreferences getsharedpreferences (String name, int mode) Wpisy w kilku plikach danych dla jednej aplikacji public SharedPreferences getpreferences (int mode) Wpisy w jednym pliku Odczyt: Zapis: 129 2018 Wszelkie prawa zastrzeżone 14

Przechowanie ustawień w pamięci Pozostaje dorobienie interfejsu graficznego dla użytkownika (pola wyboru itp.) lub zapis tylko z poziomu kodu źródłowego 130 Settings 131 2018 Wszelkie prawa zastrzeżone 15

PreferenceActivity GUI dla preferencji (opcji) programu Dostęp do ustawień systemowych Pola wyboru Podmenu Na bazie SharedPreferences Tworzone w XML Okno uruchamiane przez intencje 132 PreferenceActivity 133 2018 Wszelkie prawa zastrzeżone 16

PreferenceActivity Układ opcji definiowany w XML Wszystkie treści tekstowe też w XML Opcje do wyboru w XML-owych tablicach tekstów Obsługa wpisu/odczytu opcji w kodzie źródłowym 134 Pliki 135 2018 Wszelkie prawa zastrzeżone 17

Pliki Zapis prywatny dla aplikacji Pod konkretną nazwą pliku (name), bez podawania folderu Tryb prywatny, ewentualnie dopisywania, publiczny niezalecany! Zapis publiczny (karta SD, pamięć wewnętrzna) W folderze główny lub folderze publicznym (np. Pobrane) lub w dowolnym, już istniejącym Sprawdzenie dostępu do pamięci SD! Trzeba znać dokładny adres i utworzyć plik (klasa File) samodzielnie Obsługa błędów try-catch!!! 136 Foldery zdefiniowane prywatne public abstract File getcachedir () podaje adres folderu na pliki tymczasowe zapis tylko niewielkich plików, nie ma gwarancji, że system je usunie! public abstract String[] filelist () podaje tablicę nazw plików prywatnych aplikacji public abstract boolean deletefile (String name) usuwa plik prywatny o podanej nazwie public abstract File getdir (String name, int mode) podaje lub tworzy folder na pliki prywatne aplikacji public abstract File getfilesdir() adres folderu zapisu plików prywatnych przez openfileoutput 137 2018 Wszelkie prawa zastrzeżone 18

Przykłady 138 Pamięć zewnętrzna, nie prywatna! 139 2018 Wszelkie prawa zastrzeżone 19

Zasoby zewnętrzne (np. karta SD) sprawdzenie dostępności 140 Foldery zdefiniowane publiczne Wymagane uprawnienia WRITE_EXTERNAL_STORAGE / READ_EXTERNAL_STORAGE Sprawdzić dostęp do pamięci, wyjątki IOException itp. od KitKat-a bez UPRAWNIEŃ: getexternalfilesdir(string) getexternalcachedir() 141 2018 Wszelkie prawa zastrzeżone 20

Przykład 142 Multimedia 144 2018 Wszelkie prawa zastrzeżone 21

Dźwięk (Obraz) Klasy: MediaPlayer odtwarzanie AudioManager zarządzanie Ładowanie medium: bezpośrednio z zasobów z adresu URI (jako obiekt) (Uniform Resource Identifier) W głównym wątku tylko krótkie dźwięki, reszta w osobnym wątku lub serwisie asynchronicznie!!! 145 Asynchroniczne przygotowanie źródła Jeśli źródło dźwięku wymaga: czasochłonnego dekodowania ściągnięcia go z internetu (buforowanie) należy przygotować je poza głównym wątkiem aplikacji! Jeśli dźwięk ma być odtwarzany nieprzerwanie, nawet gdy aplikacja nie jest widoczne należy utworzyć dla niego osobny serwis Szczegóły: http://developer.android.com/guide/topics/media/mediaplayer.html 146 2018 Wszelkie prawa zastrzeżone 22

Formaty danych multimedialnych http://developer.android.com/guide/appendix/media-formats.html Audio: 3GP FLAC MP3 MIDI OGG MKV WAV Video: 3GP MP4 TS ACC WEBM MKV Obraz: JPG GIF PNG BMP WEBP 147 Formaty strumieni danych http://developer.android.com/guide/appendix/media-formats.html 148 2018 Wszelkie prawa zastrzeżone 23

Formaty danych wideo http://developer.android.com/guide/appendix/media-formats.html 149 Uprawnienia powiązane 150 2018 Wszelkie prawa zastrzeżone 24

MediaPlayer - podstawy 151 MediaPlayer Bezpośrednio z zasobów Po adresie URI (Uniform Resource Identifier) dysk lub sieć 152 2018 Wszelkie prawa zastrzeżone 25

Czyszczenie 153 Prosty przykład 154 2018 Wszelkie prawa zastrzeżone 26

Sterowanie 155 Audio focus sterowanie głośnością 156 2018 Wszelkie prawa zastrzeżone 27

Przyciski multimedialne w Manifeście rejestrujemy BroadcastReceiver: a w kodzie sprawdzamy, który klawisz został wciśnięty: 157 Nagrywanie dźwięku 158 2018 Wszelkie prawa zastrzeżone 28

Nagrywanie dźwięku 159 Nagrywanie dźwięku http://developer.android.com/guide/topics/media/audio-capture.html 160 2018 Wszelkie prawa zastrzeżone 29

Wideo 161 Wideo przykład plik_filmu 162 2018 Wszelkie prawa zastrzeżone 30

Test wykładowo-laboratoryjny 163 Media materiały dodatkowe Instrukcja do klasy MediaPlayer: http://developer.android.com/guide/topics/media/mediaplayer.html RingtoneManager: http://developer.android.com/reference/android/media/ringtonemanager.html AudioManager: http://developer.android.com/reference/android/media/ringtonemanager.html Obsługiwane formaty protokołów i plików: http://developer.android.com/guide/appendix/media-formats.html 164 2018 Wszelkie prawa zastrzeżone 31

Fragmenty 165 Fragmenty Część aktywności (graficznego interfejsu użytkownika) Ma własny cykl życia Zawsze zagnieżdżony w aktywności bazowej i jej cyklu życia Może być wielokrotnie używany w danej aktywności 166 2018 Wszelkie prawa zastrzeżone 32

Fragment W ramach danej aktywności fragmenty można: Dodawać Podmieniać Usuwać Podobnie jak komponenty na layoucie. Gdy layout pisano w XML musi zawierać miejsca do umieszczenia fragmentów Gdy layout jest tworzony dynamicznie, z kodu źródłowego miejsca na fragmenty można tworzyć dynamicznie 167 Tworzenie 1 z szablonu Na bazie gotowego szablonu (dość złożonego) 168 2018 Wszelkie prawa zastrzeżone 33

Tworzenie 2 od podstaw Aktywność z fragmentami musi zawierać: Jedną klasę główną (np. MainActivity.class) z layoutem i miejscem na fragmenty lub samymi fragmentami Osobną klasę z layoutem dla fragmentu początkowego Osobną klasę z layoutem dla każdego kolejnego fragmentu Każda klasa fragmentu extends Fragment Przykładowa klasa fragmentu: 169 Layout activity_main.xml 170 2018 Wszelkie prawa zastrzeżone 34

MainActivity replace() podmiana fragmentu addtobackstack() możliwy powrót przez przycisk fizyczny w telefonie 171 Komunikacja 1. Odpowiednie metody get/set 2. Interfejsy do przekazywania zdarzeń i danych 3. Intencje Nigdy nie bezpośrednio pomiędzy fragmentami! Głowna aktywność zawsze jako pośrednik 172 2018 Wszelkie prawa zastrzeżone 35

1. Komunikacja get/set Aktywność (wywołuje metodę statyczną z fragmentu) Fragment Aktywność Fragment 173 Aktywność 2. komunikacja interfejsem Fragment // np. w metodzie On Click przycisku Fragment Aktywność 174 2018 Wszelkie prawa zastrzeżone 36

3. Komunikacja intencjami Aktywność Fragment Aktywność Fragment 175 Efekt 176 2018 Wszelkie prawa zastrzeżone 37

Intencje c.d. 177 Intencje c.d. Intencja służy zwykle do wydania polecenia innej aplikacji Aplikacja odbierze intencję, tylko gdy posiada odpowiedni filtr w AndroidManifest.xml, tzn. potrafi taką intencję obsłużyć Podobnie jak skojarzenia typów plików w Windowsach Przykład: Wysyłanie wiadomości e-mail: Intent intent = new Intent(Intent.ACTION_SEND); // reszta parametrów Obsłużenie wysyłania wiadomości: <intent-filter> <action android:name="android.intent.action.send" /> <data android:type="*/*" /> <category android:name="android.intent.category.default" /> </intent-filter> 178 2018 Wszelkie prawa zastrzeżone 38

Przykłady intencji Utworzenie alarmu (budzika) Uprawnienia: com.android.alarm.permission.set_alarm Odbiór intencji utworzenia alarmu (Intent filter) 179 Utworzenie emaila Przykłady intencji Odbiór intencji wysłania wiadomości email: 180 2018 Wszelkie prawa zastrzeżone 39

Przykłady intencji Otwarcie mapy dla konkretnych współrzędnych Uri.parse("geo:0,0?q=%C5%81%C3%B3d%C5%BA+Stefanowskiego") geo:latitude,longitude np. "geo:47.6,-122.3" geo:latitude,longitude?z=zoom np. "geo:47.6,-122.3?z=11" (z = 1...23) geo:0,0?q=lat,lng(label) np. "geo:0,0?q=34.99,-106.61(treasure)" geo:0,0?q=my+street+address np. "geo:0,0?q=warszawa" Filtr intencji 181 Przykłady intencji Poproszenie o wybranie pliku z pamięci: 182 2018 Wszelkie prawa zastrzeżone 40

Kilka aktywności w jednej aplikacji 183 Kilka aktywności 1. Każda aktywność z osobnym wyglądem.xml (layoutem) i osobną klasą.java 184 2018 Wszelkie prawa zastrzeżone 41

Kilka aktywności 2. Po przygotowaniu widoku i klasy należy dodać wpis w pliku AndroidManifest.xml: 185 Kilka aktywności 3. Uruchamianie nowej aktywności = utworzenie nowej intencji 186 2018 Wszelkie prawa zastrzeżone 42

Kilka aktywności, przekazanie treści 4. Wraz z komunikatem wywołania aktywności można załączyć treść.putextra(<nazwa>, <treść>) 187 Kilka aktywności, przekazanie treści 5. Odebranie treści: pobranie załączonej treści do obiektu Bundle, sprawdzenie czy zawiera załącznik, pobranie treści przez getstring itp. 188 2018 Wszelkie prawa zastrzeżone 43

Przykłady intencji c.d. http://developer.android.com/guide/components/intents-common.html 189 Serwisy 190 2018 Wszelkie prawa zastrzeżone 44

Serwis, jako niezależna aplikacja Serwis z możliwością podłączenia innej aplikacji. Serwisy cykl życia 191 Serwisy kontakt z użytkownikiem Serwisy nie posiadają GUI: komunikacja graficzna z użytkownikiem tylko przez chmurki lub powiadomienia (Notification) http://developer.android.com/guide/topics/ui/notifiers/notifications.html 192 2018 Wszelkie prawa zastrzeżone 45

Serwisy użytkowanie Zastosowanie: gdy potrzeba podprogramu działającego w tle, niezależnie od głównego GUI aplikacji jeśli podprogram ma działać w tle, ale np. na życzenie użytkownika lepie wątki zamiast serwisu, np. AsyncTask Rodzaje serwisów: Service obsługujący równoległe połączenia z zewnątrz IntentService obsługuje żądania przez intencje, po kolei Uruchamianie serwisu: 193 Serwisy systemowe 194 2018 Wszelkie prawa zastrzeżone 46

Serwisy systemowe 195 2018 Wszelkie prawa zastrzeżone 47