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

Podobne dokumenty
akademia androida Sensory część V Mobile Applications Developers

Mobilne aplikacje multimedialne

Sensory rodzaje. Sensory rodzaje

AKADEMIA MŁODYCH ODKRYWCÓW

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

Mobilne Aplikacje Multimedialne

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

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

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

Wykorzystanie map i geolokalizacji

private String kraje[] = { Polska, Niemcy } private String skrot[] = { PL, DE }

Podstawowe elementy GUI - zadania

PYTANIA - Programowanie aplikacji dla technologii mobilnych

Wprowadzenie do systemu Android

Fragmenty są wspierane od Androida 1.6

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

Technologie internetowe w programowaniu.

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Obsługa SMS i telefonii

Programowanie urządzeń mobilnych. projekt 6 ( )

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

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

akademia androida Intencje oraz URI część III

Android pierwsza aplikacja

PHP 5 język obiektowy

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

akademia androida Http i AsyncTask część VII

Mechanizm zapisu preferencji

Mobilne Aplikacje Multimedialne

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

akademia androida Składowanie danych część VI

Wprowadzenie do systemu Android

Sensory i Aktuatory Laboratorium. Mikromechaniczny przyspieszeniomierz i elektroniczny magnetometr E-kompas

Java Platform Micro Edition

Systemy operacyjne na platformach mobilnych

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Grafika trójwymiarowa

Systemy operacyjne na platformach mobilnych

Klasy abstrakcyjne i interfejsy

Systemy operacyjne na platformach mobilnych

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 8 Wykorzystanie układu RelativeLayout

Programowanie obiektowe

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

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

Metody Metody, parametry, zwracanie wartości

System monitorowania. testo 160 system monitorowania temperatury, wilgotności, natężenia światła, UV, CO 2. i wstrząsów. testo Saveris 2 App

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

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

Szablony klas, zastosowanie szablonów w programach

STWORZENIE PRZYKŁADOWEJ

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Android. Zarz dzanie cyklem»ycia i stanem. Piotr Fulma«ski. March 10, 2015

Programowanie telefonów z Windows Phone 7, cz. 2

Laboratorium Systemów Mobilnych. Wykład 1

Stacja pogodowa, internetowa Archos Europa, dla urządzeń Apple iphone/ipad/ipod i Android

Termometr na podczerwień Nr produktu

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Smart Watch DT No.1 F5 z GPS Instrukcja obsługi

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Klasy abstrakcyjne, interfejsy i polimorfizm

Java: interfejsy i klasy wewnętrzne

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Dlaczego Android? Uczę się Javy więc piszę.. w Androidzie. Nie mam telefonu z Androidem!

Woda. MacR6. Rejestrator przepływu z wbudowanym modułem telemetrycznym. PLUM Sp. z o.o. Ignatki 27a, Kleosin plum@plum.pl

Pospacerujmy po Kampusie!

Dziedziczenie. dr Jarosław Skaruz

9. Rysowanie, animacje i podstawy grafiki 3D

Android, wprowadzenie do SDK

GUI - projektowanie interfejsów

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Podstawy programowania obiektowego

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Laboratorium Systemów Mobilnych. Wykład 2

Programowanie obiektowe

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Klasy i obiekty cz II

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

Programowanie obiektowe

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

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

Systemy operacyjne na platformach mobilnych

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

Android tworzenie aplikacji mobilnych

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

Dokumentacja do API Javy.

Zaawansowane programowanie w języku C++ Klasy w C++

Współbieżność w środowisku Java

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

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

Miernik stężenia pyłów zawieszonych PM2,5 i PM10 DS201 Instrukcja obsługi wer.1.2

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

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

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Transkrypt:

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

Agenda Lokalizacja GPS WI-FI Sieć komórkowa Google Location Services API Motion Sensors Accelerometer Gravity Gyroscope LinearAccelerometer RotationVector Significant Motion Step Counter Step Detector Position Sensors Game Rotation Vector Geomagnetic Rotation Vector Orientation Geomagnetic Field Proximity Environment Sensors Light Pressure Temperature Humidity 2

Lokalizacja 3

. Lokalizacja W systemie Android istnieją 2 sposoby obsługi informacji dotyczących lokalizacji android.location Google Location Services for Android (API) Google API udostępnia więcej elementów oraz automatyzuje pewne czynności, wymaga jednak rejestracji Google Play Services 4

Lokalizacja Dwa sposoby pobierania danych lokalizacyjnych: GPS Bardzo dokładne Działa raczej tylko na zewnątrz Szybko zużywa baterię Wolno zwraca dane Network Location Provider (wi-fi, cellural) Działa i wewnątrz i na zewnątrz Szybko zwraca dane Zużywa mniej baterii 5

Lokalizacja LocationManager locationmanager = (LocationManager) this.getsystemservice(context.location_service); LocationListener locationlistener = new LocationListener() { public void onlocationchanged(location location) { makeuseofnewlocation(location); } public void onstatuschanged(string provider, int status, Bundle extras) {} public void onproviderenabled(string provider) {} public void onproviderdisabled(string provider) {} }; locationmanager.requestlocationupdates(locationmanager.network_provider, REFRESH_TIME, REFRESH_DISTANCE, locationlistener); 6

Lokalizacja Używając NETWORK_PROVIDER oraz GPS_PROVIDER, musisz ustawić permissions ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION zawiera uprawnienia permissions tylko dla NETWORK_PROVIDER Aby korzystać z obu metod należy zarejestrować dwa sensory 7

Lokalizacja Racjonalne użycie baterii Czy potrzeba 2 sensorów czy jednego? Kiedy nasłuchiwać? Jak długo nasłuchiwać? Używanie lastknownlocation Kończenie nasłuchiwania 8

Google Play Location Service Google udostępnia API lokalizacyjne, które automatyzuje wiele elementów, np. używa zarówno GPS jak i Sieci do określenia lokalizacji Zarządza optymalnym wykorzystaniem energii/dokładnością Umożliwia obsługę GoogleMaps z zaimplementowanymi gestami i innymi opcjami (pinezki, polygony) 9

Google Play Location API mlastlocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); if (mlastlocation!= null) { mlatitudetext.settext(string.valueof(mlastlocation.getlatitude())); mlongitudetext.settext(string.valueof(mlastlocation.getlongitude())); } if (mrequestinglocationupdates) { startlocationupdates(); } protected void startlocationupdates() { LocationServices.FusedLocationApi.requestLocationUpdates( mgoogleapiclient, mlocationrequest, this); } 10

Motion Sensors 11

Sensory Do obsługi sensorów służy Sensor Framework SensorManager Tworzenie listingów, rejestracja i zwalnianie sensorów, informacje o sensorach jak dokładność, kalibracja itp. Sensor Utworzenie instancji konkretnego sensora. Zawiera interfejs umożliwiający korzystanie z danego sensora. SensorEvent Klasa zawierająca informacje o zdarzeniach wywołanych danym sensorem (np., zebrane dane, czas zbierania danych, dokładność danych) SensorEventListener Interfejs umożliwiający tworzenie własnych zdarzeń przy zmianach w odczytach sensorów. 12

Obsługa sensorów private SensorManager msensormanager; msensormanager = (SensorManager) getsystemservice(context.sensor_service); List<Sensor> devicesensors = msensormanager.getsensorlist(sensor.type_all); private Sensor msensor = msensormanager.getdefaultsensor (Sensor.TYPE_MAGNETIC_FIELD); public class SensorActivity extends Activity implements SensorEventListener { @Override public final void onsensorchanged(sensorevent event) {} @Override protected void onresume() { super.onresume(); msensormanager.registerlistener(this, mlight, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onpause() { super.onpause(); msensormanager.unregisterlistener(this); } } 13

Używanie sensorów Zwalniaj nieużywane sensory (unregister) Testuj na urządzeniu fizycznym a nie emulatorze onsensorchanged() powinna być jak najszybsza Unikaj używania wycofanych typów sensorów Przed użyciem sensora sprawdź, czy istnieje Wybierz opóźnienia sensora dopasowane do potrzeb 14

Motion Sensors TYPE_ACCELEROMETER Rodzaj: Sprzętowy Najczęściej używany do: wykrycie ruchu, potrząśnięcia itp Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: m/s 2 Pomiar przyspieszenia działającego na urządzenie (łącznie z siłą grawitacji) Należy pamiętać, o korekcji sensora o ok. 9.81m/s 2 15

Motion Sensors TYPE_GRAVITY Rodzaj: Sprzętowy lub programowy Najczęściej używany do: wykrycie ruchu, potrząśnięcia itp Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: m/s 2 Pomiar przyspieszenia ziemskiego działającego na urządzenie (łącznie z siłą grawitacji) Gdy urządzenie leży odczyty GRAVITY i ACCELEROMETER powinny być identyczne 16

Motion Sensors TYPE_GYROSCOPE Rodzaj: Sprzętowy Najczęściej używany do: wykrycie obrotu, przekręcenie itp Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: rad/s Zwraca nachylenie urządzenia według zadanych osi Sensor zwraca czyste dane, które warto wyczyścić (z szumów) porównując je z danymi z innych sensorów np. gravity 17

Motion Sensors TYPE_LINEAR_ACCELEROMETER Rodzaj: Sprzętowy lub programowy Najczęściej używany do: wykrycie ruchu według wybranej osi Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: m/s 2 Pomiar przyspieszenia działającego na urządzenie (bez uwzględnienia siły grawitacji) Od wyniku z ACCELEROMETER różni się odjętą wartością siły grawitacji 18

Motion Sensors TYPE_ROTATION_VECTOR Rodzaj: Sprzętowy lub programowy Najczęściej używany do: wykrycie ruchu i obrotu Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z SensorEvent.values[3] Skalar z wektora rotacji Zwracana jednostka: brak Pomiar wektora kąta i osi wobec którego urządzenie się obraca Oś y wskazuje północ 19

Motion Sensors TYPE_SIGNIFICANT_MOTION Zwracane wartości: brak Zwracana jednostka: brak Automatyczny sensor uruchamiany, gdy użytkownik (wraz z urządzeniem) wykona znaczący ruch, np. Chodzenie Bieganie Jazda na rowerze Jazda samochodem 20

Motion Sensors TYPE_STEP_COUNTER Rodzaj: Programowy Najczęściej używany do: zliczanie kroków Zwracane wartości: SensorEvent.values[0] liczba zrobionych kroków Zwracana jednostka: liczba kroków Pomiar kroków od ostatniej rejestracji sensora Ma większe opóźnienie (10sekund), lecz lepszą dokładność niż Step Detector 21

Motion Sensors TYPE_STEP_DETECTOR Rodzaj: Programowy Najczęściej używany do: wykrycie kroku Zwracane wartości: brak Zwracana jednostka: brak Automatyczny sensor uruchamiany, gdy użytkownik (wraz z urządzeniem) wykona krok Opóźnienie sensora wynosi ok 2 sek. 22

Position Sensors 23

Position Sensors TYPE_GAME_ROTATION_VECTOR Rodzaj: Sprzętowy lub programowy Najczęściej używany do: wykrycie ruchu i obrotu Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: brak Nie wykorzystuje sensora pola magnetycznego Dokładny pomiar obrotu, gdy nie ma potrzeby wiedzieć, gdzie jest północ (np. w grach) 24

Position Sensors TYPE_GEOMAGNETIC_ROTATION_VECTOR Rodzaj: Sprzętowy lub programowy Najczęściej używany do: wykrycie ruchu i obrotu Zwracane wartości: SensorEvent.values[0] oś x SensorEvent.values[1] oś y SensorEvent.values[2] oś z Zwracana jednostka: brak Pomiar obrotu urządzenia za pomocą pola magnetycznego Niska dokładność Niskie zużycie baterii 25

Position Sensors TYPE_ORIENTATION Rodzaj: Programowy Najczęściej używany do: wskazanie pozycji urządzenia Zwracane wartości: SensorEvent.values[0] Azymut SensorEvent.values[1] Stopień SensorEvent.values[2] Obrót Zwracana jednostka: stopnie Pomiar położenie urządzenia względem osi ziemi 26

Position Sensors Pi TYPE_MAGNETIC_FIELD Rodzaj: Sprzętowy Najczęściej używany do: stworzenie kompasu Zwracane wartości: SensorEvent.values[0] siła pola względem osi x SensorEvent.values[1] siła pola względem osi y SensorEvent.values[2] siła pola względem osi z Zwracana jednostka: mikrotesle Pomiar natężenia pola magnetycznego 27

Position Sensors TYPE_MAGNETIC_FIELD_UNCALIBRATED Rodzaj: Sprzętowy Najczęściej używany do: stworzenie kompasu Zwracane wartości: SensorEvent.values[0] siła pola względem osi x SensorEvent.values[1] siła pola względem osi y SensorEvent.values[2] siła pola względem osi z SensorEvent.values[3] szacowane odchylenie osi x SensorEvent.values[4] szacowane odchylenie osi y SensorEvent.values[5] szacowane odchylenie osi z Zwracana jednostka: mikrotesle Pomiar natężenia pola magnetycznego bez wygładzenia Dokładniejszy, ale wymaga kalibracji 28

Position Sensors Pi TYPE_PROXIMITY Rodzaj: Sprzętowy Najczęściej używany do: wykrycie odległości telefonu od twarzy Zwracane wartości: SensorEvent.values[0] Odległość od sensora Zwracana jednostka: cm Sensor może zwracać także wartości NEAR albo FAR 29

Environment Sensors 30

Environment Sensors TYPE_AMBIENT_TEMPERATURE Rodzaj: Sprzętowy Najczęściej używany do: pomiar temperatury powietrza Zwracane wartości: SensorEvent.values[0] temperatura powietrza Zwracana jednostka: stopnie celsjusza Pomiar temperatury powietrza wokół urządzenia 31

Environment Sensors TYPE_LIGHT Rodzaj: Sprzętowy Najczęściej używany do: rozjaśniania, przyciemniania ekranu Zwracane wartości: SensorEvent.values[0] Natężenie światła Zwracana jednostka: luxy (lx) Pomiar natężenia światła padającego na sensor 32

Environment Sensors TYPE_PRESSURE Rodzaj: Sprzętowy Najczęściej używany do: pomiaru ciśnienia powietrza Zwracane wartości: SensorEvent.values[0] ciśnienie powietrza Zwracana jednostka: hpa lub mbar Pomiar ciśnienia atmosferycznego działające na urządzenie 33

Environment Sensors TYPE_RELATIVE_HUMIDITY Rodzaj: Sprzętowy Najczęściej używany do: pomiar wilgotności Zwracane wartości: SensorEvent.values[0] wilgotność powietrza Zwracana jednostka: procenty Procentowy pomiar wilgotności powietrza 34

Environment Sensors TYPE_TEMPERATURE Rodzaj: Sprzętowy Najczęściej używany do: pomiar temperatury urządzenia Zwracane wartości: SensorEvent.values[0] temperatura Zwracana jednostka: stopnie celsjusza Wykonywany jest pomiar temperatury urządzenia (najczęściej jest to tożsamy z max(temp. procesora, temp. baterii)) 35

Korzystanie z Sensorów public class SensorActivity extends Activity implements SensorEventListener { private SensorManager msensormanager; private Sensor mpressure; @Override public final void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); msensormanager = (SensorManager) getsystemservice(context.sensor_service); mpressure = msensormanager.getdefaultsensor(sensor.type_p RESSURE); } @Override public final void onaccuracychanged(sensor sensor, int accuracy) { } @Override public final void onsensorchanged(sensorevent event) { float millibars_of_pressure = event.values[0]; } @Override protected void onresume() { super.onresume(); msensormanager.registerlistener(this, mpressure, SensorManager.SENSOR_DELAY_NORMAL); } } @Override protected void onpause() { super.onpause(); msensormanager.unregisterlistener(this); } 36

Koniec! mgr inż. Anton Smoliński 37