akademia androida Sensory część V Mobile Applications Developers www.mad.zut.edu.pl



Podobne dokumenty
Mobilne aplikacje multimedialne

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

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

akademia androida Pierwsze kroki w Androidzie część I

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Temat 13. Czujniki Dlaczego Twój Smartfon jest taki smart?

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

akademia androida Intencje oraz URI część III

Mobilne Aplikacje Multimedialne

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

Programowanie Urządzeń Mobilnych. Laboratorium nr 11, 12

Podstawowe elementy GUI - zadania

Programowanie urządzeń mobilnych. projekt 6 ( )

TEMAT : KLASY DZIEDZICZENIE

Języki programowania imperatywnego

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

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

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

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

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

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

Termometr na podczerwień Nr produktu

Podstawowe kontrolki i ich obsługa

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

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

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Programowanie komputerowe. Zajęcia 7

Klasy abstrakcyjne i interfejsy

Oświetlenie. Włączenie światła po wykryciu ruchu. Urządzenia. Czas. Pomieszczenia Dowolne pomieszczenie. Wskazówki. Instrukcja

akademia androida Składowanie danych część VI

Mechatronika i inteligentne systemy produkcyjne. Sensory (czujniki)

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

Powiadomienia w systemie Android

Współczesne usługi monitoringu NOWE TRENDY

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

Grafika trójwymiarowa

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

POMOC / INSTRUKCJA OBSŁUGI

Wykład 5: Klasy cz. 3

PHP 5 język obiektowy

Technologie i usługi internetowe cz. 2

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

V & A VA6530 Termometr pirometryczny Numer katalogowy #4896

Dotykowy/bezdotykowy tachometr cyfrowy AX Instrukcja obsługi

Pomiar napięcia w zakresie V z dokładnością +_2% możliwy jest pomiar napięcia stałego jak i zmiennego w niskim zakresie.

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

Współczesny smartfon co można zmierzyć? Damian Pyś

Programowanie obiektowe

Podstawy Programowania Obiektowego

Wykład 4: Klasy i Metody

Dalmierz laserowy INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 10

W dowolnym momencie można zmienić typ wskaźnika.

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

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Aplikacje w środowisku Java

Wykład 8: klasy cz. 4

GUI - projektowanie interfejsów

PIROMETR AX Instrukcja obsługi

Kalibracja wskaźnika wymaga jednorazowego podłączenia LPG Sensora do komputera za pomocą przewodu microusb

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Program Rejestr zużytych materiałów. Instrukcja obsługi

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

Deklaracja struktury w C++

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

VectraPortal. VectraPortal. wersja Instrukcja użytkownika Podstawowa funkcjonalność serwisu. [czerwiec 2016]

Projekt z przedmiotu Specjalizowane języki programowania Temat: Zastosowanie programowania obiektowego w środowisku LabView

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

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

WSTĘP DO ANDROIDA. Laboratorium

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

Instrukcja obsługi aplikacji PQ-CONTROL

Programowanie obiektowe

Kinect vs VR, czyli technologie sensoryczne stosowane w konsolach do gier.

Programowanie obiektowe

Podstawy i języki programowania

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

Rozdział 4 KLASY, OBIEKTY, METODY

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Programowanie dla Androida. Ubiquitous

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

Laboratorium nr 10. Temat: Funkcje cz.2.

ALGORYTMY I STRUKTURY DANYCH

Programowanie obiektowe w języku

Nowe oprawy zaworowe. Marzec 2015

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wialon mobilna aplikacja

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Satel Integra FIBARO

Język C++ zajęcia nr 2

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Mechanizm dziedziczenia

Dziedziczenie jednobazowe, poliformizm

Wątki w Javie. Piotr Tokarski

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Instrukcja obsługi xapp.pl

Instrukcja oprogramowania do konfiguracji i odczytu danych NFC IWM CONFIG

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

Transkrypt:

akademia androida Sensory część V

agenda 1. O sensorach słów kilka 2. Sensor Framework 3. Akcelerometr 4. Czujnik zbliżeniowy 5. Czujnik światła 6. Zadanie 1. 7. Zadanie 2 (domowe)

1. O sensorach słów kilka Każdy smartfon wyposażony w Androida ma również na pokładzie jakiś sensor. Sensory ułatwiają nam komunikację z urządzeniem, czyniąc użytkowanie przyjemniejszym. System Android wspiera różne rodzaje sensorów, które możemy podzielić na 3 grupy: sensory ruchu sensory pozycji sensory środowiskowe Sensory ruchu są odpowiedzialne za pomiary sił przyspieszenia i sił obrotowych zachodzących wzdłuż 3 osi: X, Y i Z. Są to osie bezwzględne, niezależne od urządzenia. Do tej kategorii sensorów możemy zaliczyć np. akcelerometr czy żyroskop. Sensory pozycji są odpowiedzialne za pomiary związane z fizycznym położeniem urządzenia. Osie są zdefiniowane względnie do ekranu w jego domyślnej pozycji. Do tej kategorii należą sensory położenia i magnetometr.

Sensory środowiskowe są odpowiedzialne za pomiary różnych parametrów związanych z otaczającym urządzenie środowiskiem, np. stopnia oświetlenia, wilgotność, ciśnienie czy temperaturę powietrza. Do tej kategorii zaliczymy barometr, fotometr (czujnik oświetlenia) i termometr (o ile dane urządzenie je posiada). W zależności od budowy sensora możemy je podzielić na: sprzętowe programowe 2. Sensor Framework Klasa Sensor Pozwala na utworzenie instancji konkretnego sensora. By dowiedzieć się, jakimi sensorami dysponuje nasz smartfon możemy użyć metody getsensorlist(int), która zwróci nam listę wykrytych sensorów pewnego typu. Gdy podamy jako parametr Sensor.TYPE_ALL lista będzie zawierać wszystkie sensory różnych typów. Przykład użycia: List<Sensor> devicesensors = msensormanager.getsensorlist(sensor.type_all); Lista dostępnych sensorów wspieranych przez API Androida: TYPE_ACCELEROMETER TYPE_ALL TYPE_AMBIENT_TEMPERATURE TYPE_GRAVITY TYPE_GYROSCOPE TYPE_LIGHT TYPE_LINEAR_ACCELERATION TYPE_MAGNETIC_FIELD TYPE_ORIENTATION TYPE_PRESSURE TYPE_PROXIMITY TYPE_RELATIVE_HUMIDITY TYPE_ROTATION_VECTOR TYPE_TEMPERATURE Więcej info: http://developer.android.com/reference/android/hardware/sensor.html

Klasa SensorEvent Reprezentuje wszystkie zdarzenia związane z danym sensorem i zawiera informacje takie jak typ sensora, jego dokładność i oczywiście dane odczytane przez sensor. Zawiera także definicję układu współrzędnych urządzenia. Klasa SensorManager Aby uzyskać dostęp do sensorów urządzenia potrzebna jest referencja do sensor service. Referencję uzyskamy poprzez utworzenie obiektu klasy SensorManager i wywołanie metody getsystemservice() : SensorManager msensormanager = (SensorManager)getSystemService(SENSOR_SERVICE); Samo utworzenie obiektu to jednak nie wszystko. By aplikacja wykorzystywała konkretny sensor, musimy jej powiedzieć o który nam chodzi. Do tego istnieje metoda getdefaultsensor(), a żeby zacząć korzystać z niego posłużyć się metodą: registerlistener (SensorEventListener listener, Sensor sensor, int rate); którą wywołujemy na obiekcie klasy SensorManager. Ważną rzeczą przy używaniu sensorów jest wyłączenie dostępu do nich, a z których korzystaliśmy w trakcie działania aktywności. Zapominając o tym nasza bateria padnie dość szybko. Do wyłączenia konkretnego sensora służy metoda unregisterlistener(), która jest wywoływana na obiekcie klasy SensorManager. Interfejs SensorEventListener Interfejs implementujący dwie metody: onaccuracychanged() i onsensorchanged() które pozwalają odbierać dane z sensorów, gdy zmieni się jego dokładność lub położenie. Dobre nawyki, które należy sobie wyrobić przy używaniu sensorów: 1. Gdy aplikacja ma kończyć lub zawieszać swe działanie należy zwalniać uchwyt sensora ( unregisterlistener() ) 2. Nie testować aplikacji na emulatorze 3. Nie blokować metody onsensorchanged()!!! 4. Starać się unikać używania przestarzałych metod czy sensorów 5. Sprawdzać istnienie sensorów przed ich użyciem

3. Akcelerometr Przyrząd do pomiaru przyspieszeń liniowych lub kątowych. Mierzy swój własny ruch. Obecnie coraz częściej instalowane w mobilnych urządzeniach elektronicznych umożliwiając automatyczne wykrywanie ułożenia przestrzennego urządzenia oraz sterowanie jego funkcjami przez poruszanie nim. Dostęp do niego uzyskamy w sposób: private SensorManager msensormanager; private Sensor msensor;... msensormanager = (SensorManager) getsystemservice(context.sensor_service); msensor = msensormanager.getdefaultsensor(sensor.type_accelerometer); Jak poprawnie uzyskać dostęp do akcelerometru: protected void onresume() { super.onresume(); msensormanager.registerlistener(this, msensor, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); msensormanager.unregisterlistener(this); public void onsensorchanged(sensorevent event) { //co chcemy zrobić z danymi odczytanymi przez akcelerometr Tip: Wartości odczytane przez akcelerometr (oś Z X Y) są umieszczone w tablicy. Można się do nich dostać tak: event.values[indeks]. 4. Czujnik zbliżeniowy Rodzaj czujnika, który reaguje na zbliżanie się obiektu. Reakcja czujnika rozpoczyna się, gdy zbliżający się obiekt przekroczy pewien próg. Urządzenie najczęściej zwraca wartości 0 lub 1 odpowiadają stanom blisko daleko.

Dostęp do czujnika zbliżeniowego uzyskamy w sposób: private SensorManager msensormanager; private Sensor msensor;... msensormanager = (SensorManager) getsystemservice(context.sensor_service); msensor = msensormanager.getdefaultsensor(sensor.type_proximity); public void onsensorchanged(sensorevent event) { float distance = event.values[0]; // co chcemy zrobić z danymi odczytanymi przez akcelerometr protected void onresume() { super.onresume(); msensormanager.registerlistener(this, msensor, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); msensormanager.unregisterlistener(this); 5. Czujnik światła Czujnik reagujący na zmianę intensywności docierającego do niego strumienia światła. Może być wykorzystywane zarówno światło widzialne jak również podczerwone lub laserowe. Dostęp do czujnika światła: private SensorManager msensormanager; private Sensor msensor;... msensormanager = (SensorManager) getsystemservice(context.sensor_service); msensor = msensormanager.getdefaultsensor(sensor.type_light); Tip: po każdym utworzeniu uchwytu warto sprawdzić, czy jego wartość nie jest równa null. Będziemy mogli wtedy zdefiniować jakąś akcję/powiadomienie w przypadku braku takiego sensora.

6. Zadanie 1. Utworzyć 3 pola TextView Uzyskać uchwyt do akcelerometru W metodzie onsensorchanged() wyświetlić dane odczytane z sensora dla każdej osi Wyświetlane dane muszą być sformatowane do jednego miejsca po przecinku W AndroidManifest.xml wymusić orientację ekranu na portrait W odpowiednich metodach (oncreate(), onpause(), onresume() )dodać powiadomienia Toast, sprawdzając tym samym, czy uchwyt do sensora działa Pamiętać o zwolnieniu sensora w odpowiedniej metodzie 7. Zadanie 2 (domowe) W aktywności utworzyć obiekt klasy View Należy ustawić kolor tła na zielony Uzyskać uchwyt do czujnika zbliżeniowego W onsensorchanged() wywołać własną metodę przyjmującą za parametr zmienną float We własnej metodzie zdefiniować akcję dla zbliżenia: każde zbliżenie ma być zliczane w Toast ma zostać wyświetlona informacja o pozostałej ilości zbliżeń po 5 zbliżeniach aktywność kończy działanie (Toast o tym zdarzeniu) przy przedostatnim zbliżeniu użytkownik ma dostać informację o

zbliżającym się zamknięciu aplikacji każde zbliżenie zmienia kolor ekranu na czerwony W odpowiednich metodach (oncreate(), onpause(), onresume() )dodać powiadomienia Toast, sprawdzając tym samym, czy uchwyt do sensora działa Pamiętać o zwolnieniu sensora w odpowiedniej metodzie

Dziękuję za uwagę kontakt: dglinski@wi.zut.edu.pl mad@zut.edu.pl