ANDROID (5) dr Marek Piasecki Warsztaty programowania urządzeń mobilnych 16.XI.2011
MoŜliwe aplikacje w TouristPOI: lokalizacja identyfikacja pozycji na podstawie wykrywania sygnału BT (~10m) komunikacja z dodatkowym wyposaŝeniem (zestaw słuchawkowy, dodatkowe sensory) alternatywne łącze bezprzewodowego dostarczania treści
Standard Bluetooth Rodowód nazwy: Harald Bluetooth - król Danii w 10 wieku, zjednoczył państwo Bluetooh jednoczy protokoły Prosty, tani (mniej niŝ $5 za sztukę), zamiennik IrDA, bliski zasięg, nielicencjonowane pasmo 2.4 GHz, FHSS (Frequency Hopping Spread Spectrum), TDD, CDMA (Code Division Multiple Access) - systemem wielodostępu z podziałem kodowym Zainicjowany przez firmy Ericsson, Intel, IBM, Nokia, Toshiba; 1998 Bluetooth SIG (Special Interest Group) Open Standard: IEEE 802.15.1 Podstawowe zastosowanie bezprzewodowe pikosieci (zakres < 10m, maksymalnie 100 metrów) Transmisja danych: 433,9 kbit/s asyncgroniczna-symetryczna 723,2 kbit/s / 57,6 kbit/s asynchroniczna-asymetrzyczna 64 kbit/s synchronous, voice service Extensions up to 20 Mbit/s IEEE 802.15.3a UWB (Ultra Wide Band) Zintegrowane mechanizmy bezpieczeństwa (szyfrowanie 128 bit) Bluetooth developer portal: http://www.bluetooth.com
Przykładowe zastosowania podłączanie urządzeń peryferyjnych (głośniki, joystick, zestaw słuchawkowy) tworzenie komputerowych sieci ad-hoc (małe urządzenia, niski koszt) łączenie innych sieci (np. Internet w telefonie Bluetooth laptop) Inteligentny sklep system sklepu informuje klientów o specjalnych ofertach, kuponach, promocjach przez telefon lub wspomaga wyszukiwanie automaty biletowe / płatnicze drobne płatności za pośrednictwem telefonu, bez fizycznego kontaktu zdalne sterowanie sprzętem gospodarstwa domowego telefon jako pilot urządzeń multimedialnych, oświetlenia, ogrzewania, Ŝaluzji, systemów bezpieczeństwa, itp
Częstotliwości / Pasmo Bluetooth wykorzystuje nielicencjonowane pasmo częstotliwości ISM: około 2.4GHz (Industrial Scientific Medical) modulacja: GFSK (Gaussian Frequency Shift Keying). rozpraszanie widma poprzez skakanie po częstotliwościach: 79 róŝnych częstotliwości (w większości krajów) 1600 skoków/sec (1 skok co 625 µs). sekwencja skoków determinowana przez 48 bitowy sprzętowy adres urządzenia master
Klasy mocy / bezpieczeństwo Trzy róŝne poziomy mocy nadawania: Klasa 3 (1mW) zakres około 10 metrów Klasa 2 Klasa 1 (najbardziej popularna!) (2.5mW) zakres około 20 metrów (100mW) zakres około 100 metrów Bezpieczeństwo zapewniane na trzy sposoby: pseudolosowe skoki po częstotliwościach uwierzytelnianie (authentication) hasło/klucz szyfrowanie transmisji
Protokoły pośredniczące
Profile Bluetooth 1. GAP - generic access profile, umoŝliwia wykrywanie i uaktywnienie pozostałych profili 2. SPP - serial port profile (poprzez RFCOMM), np. dostęp do drukarki 3. PAN - personal area network, sieci osobistych urządzeń np. telefon i zestaw słuchawkowy/głośnomówiący, lub sieć łącząca telefon z laptopem 4. SP - synchronisation profile, wykorzystywany do synchronizowania kontaktów, kalendarza, plików pomiędzy telefonem i komputerem stacjonarnym czy laptopem 5. SDAP - service discovery application profile, gdy wyszukujemy urządzenia wyposaŝone w Bluetooth (inquiry) oraz oferowane przez nie usługi (discovery)
Stany urządzeń Bluetooth Sniff mode allows a slave to listen to polling packets from the master at a slower rate (to reduce the power) In Hold mode, the slave and master agree on the duration of time that the slave can be suspended. Sniff mode uses a fixed time period while in Hold mode (the time period is dynamically agreed). In Parked mode, a slave disassociates itself from the Piconet (to save power) A maximum of 255 slaves can be in Parked mode
Sieci Scatternet Piconet: jedno urządzenie master i do 7 aktywnych slaves Master narzuca sekwencję skoków po częstotliwościach i zegar Urządzenia Slave muszą się zsynchronizować Wszyscy uczestnicy pikosieci są zsynchronizowani tą samą sekwencją skoków Komunikacja pomiędzy pikosieciami: urządzenie przestraja się pomiędzy sekwencją skoków kaŝdej pikosieci Scatternet: składa się z 2 lub więcej urządzeń Master i wielu Slave
Ograniczenia Bluetooth Skomplikowany protokół Czasochłonny proces wykrywania operacja zapytań (inquiry) około 10/20 sekund operacja Page operation około 3 sekund Ograniczenie do 7 aktywnych urządzeń slave w jednej pikosieci. Brak wsparcia sterowania strukturą sieci scatternet w specyfikacji Bluetooth
Porównanie z innymi technologiami
Pakiet android.bluetooth (od wersji 2.0) BluetoothAdapter reprezentuje lokalny moduł Bluetooth, w urządzeniu na którym działa program BluetoothDevice reprezentuje zewnętrzny moduł Bluetooth, w urządzeniu które zostało wykryte lub z którym chcemy się połączyć BluetoothSocket wykorzystywany do zainicjowania połączenia, słuŝy potem do wymiany danych, tworzony wywołaniem metody createrfcommsockettoservicerecord BluetoothServerSocket nasłuchuje wezwań do utworzenia połączenia, tworzy osobne BluetoothSocket dla kaŝdego klienta
Dostęp do urządzenia Bluetooth Ustawienie uprawnień w pliku AndroidManifest.xml: Pobranie (domyślnego) adaptera: Włączenie adaptera (wymaga zatwierdzenia przez użytkownika):
Odczyt właściwości adaptera BT
Monitorowanie zmian stanu Bluetooth (1)
Monitorowanie zmian stanu BT (2)
Wyszukiwanie - Remote Device Discovery Standard Bluetooth umoŝliwia połączenia ad-hoc bez parowania urządzeń Android wymaga parowania Widoczność urządzenia: SCAN_MODE_CONNECTABLE_DISCOVERABLE SCAN_MODE_CONNECTABLE SCAN_MODE_NONE
Widzialność - Discoverability Włączenie widzialności : Monitorowanie włączenia widzialności: Ujemna wartość resultcode informuje o odrzuceniu włączenia widzialności przez uŝytkownika.
Inny sposób monitorowania widoczności
Wykrywanie innych urządzeń (>10 sek.) Metody klasy BluetoothAdapter: boolean isenabled(); boolean startdiscovery(); boolean isdiscovering(); boolean canceldiscovery();
Monitorowanie procesu wykrywania innych urządzeń Bluetooth
Odczyt danych wykrytego urządzenia
Komunikacja pomiędzy sparowanymi urządzeniami Bluetooth protokół RFCOMM (Radio Frequency Communication) RFCOMM realizuje łącze szeregowe RS232 na bazie warstwy L2CAP (Logical Link Control and Adaptation Protocol) Architektura client serwer klasa BluetoothSocket (Client) implementuje strumień transmisji danych klasa BluetoothServerSocket (Serwer) nasłuchuje i tworzy BluetoothSocket dla serwera
Nasłuchiwanie na gniazdku serwera