You are on page 1of 42

AKADEMIA GRNICZO-HUTNICZA

IM. STANISAWA STASZICA W KRAKOWIE

Wydzia Informatyki, Elektroniki i Telekomunikacji


Katedra Telekomunikacji

PRACA INYNIERSKA
Temat: Aplikacja sterujca odtwarzaczem multimedialnym dla
urzdze mobilnych o ograniczonych zasobach sprztowych
Remote media controller for mobile devices with limited resources

Imi i nazwisko: Maciej Stankiewicz


Kierunek studiw: Elektronika i Telekomunikacja

Opiekun pracy: dr in. Jarosaw Buat


Krakw, rok akadem. 2013/2014

Owiadczam,

wiadomy(-a)

odpowiedzialnoci

karnej

za

powiadczenie

nieprawdy, e niniejszy projekt inynierski wykonaem(-am) osobicie i e nie


korzystaem(-am) ze rde innych ni wymienione w pracy.

Krakw, dnia .

Podpis dyplomanta .

Spis treci

Wstp................................................................................................................................ 4
1.

2.

3.

Cel i zaoenia projektu........................................................................................... 5


1.1.

rodowiska sprztowe ........................................................................................ 6

1.2.

rodowiska programowe .................................................................................. 12

1.3.

Schemat dziaania systemu .............................................................................. 18

Implementacja ....................................................................................................... 21
2.1.

Aplikacja mobilna sterujca odtwarzaczem ..................................................... 21

2.2.

Odtwarzacz multimedialny .............................................................................. 32

Testy aplikacji ........................................................................................................ 37

Podsumowanie ............................................................................................................... 40
Literatura ...................................................................................................................... 41
Dodatek A. Spis zawartoci doczonej pyty CD ...................................................... 42

Wstp

Rozwj techniki wraz z postpujc miniaturyzacj spowodoway wzrost


zainteresowania urzdzeniami popularnie nazywanymi wearable technology, czyli
elektroniki noszonej na ciele. Ta ga elektroniki zdecydowanie ronie w si, wobec
czego pojawia si co raz wicej sprztu uatwiajcego nam codzienne ycie, bdc
cigle przy nas. Ponadto postp tego typu urzdze wraz z rozpowszechnieniem
smartfonw pozwoli rwnie rozwin systemy na platformy mobilne.
Dlatego te, w niniejszej pracy podjto si stworzenia aplikacji sterujcej
odtwarzaczem multimedialnym dla nowoczesnych zegarkw smartwatchy, ktre s
wanie przedstawicielami elektroniki bdcej czci naszego ubioru. Program jest
dedykowany na obecnie najpopularniejszy mobilny system operacyjny Android i wraz z
odtwarzaczem multimedialnym wchodzi w skad systemu multimedialnego. Pierwsza z
aplikacji przeznaczona na zegarki elektroniczne pozwoli uytkownikowi kontrolowa
drugi program, ktry rwnie bdzie zaimplementowany na tym samym systemie
operacyjnym. Jego zadaniem bdzie strumieniowanie plikw audio z zewntrznego
serwera.
W pierwszym rozdziale zawarto opis systemu wraz z jego schematem dziaania i
obsug uytkownika. Dokonano rwnie analizy rynku pod wzgldem istniejcych ju
urzdze i systemw operacyjnych, jak i moliwoci rozwoju smartwatchy. Rozdzia
drugi powicony jest implementacji systemu. W ostatnim rozdziale przedstawiono
wyniki testw wydajnociowych aplikacji wraz z prezentacj moliwoci zegarkw
elektronicznych.

1.

Cel i zaoenia projektu

Na cel niniejszej pracy skadaj si dwa zadania. Pierwszym z nich jest


zaprojektowanie

oraz

zaimplementowanie

aplikacji

umoliwiajcej

sterowanie

odtwarzaczem multimedialnym, ktrego docelow platform bdzie smartwatch


posiadajcy system operacyjny Android. Podstawowe funkcje programu kontrolujcego
s nastpujce: organizacja tzw.: playlist, stop, odtwarzaj, nastpny, poprzedni, goniej,
ciszej. Drugim zadaniem jest stworzenie odtwarzacza multimedialnego, ktry bdzie
przeznaczony dla urzdze majcych moliwo podczenia do wzmacniacza audio
bd te telewizora. Urzdzeniem wykorzystanym w opisywanym projekcie jest tzw.
Android dongle, czyli miniaturowe urzdzenie z zainstalowanym systemem Android
oraz posiadajce wyjcie HDMI. Program dziaajcy na tym urzdzeniu bdzie
odpowiedzialny za odtwarzanie utworw wybranych przez uytkownika. Docelowym
rdem danych bdzie serwer. Aplikacja do poprawnego dziaania wymaga
nieustannego poczenia z sieci domow. Natomiast komunikacja pomidzy
aplikacjami bdzie moliwa za pomoc technologii bezprzewodowej Bluetooth.

1.1.

rodowiska sprztowe
W tym podrozdziale przedstawione bd urzdzenia wykorzystane w niniejszym

projekcie inynierskim. Zostanie opisane pojcie ,,wearable technology, a w


szczeglnoci nowoczesne inteligentne zegarki elektroniczne. Ponadto zostanie
zaprezentowana cz stacjonarna systemu, czyli Android dongle wraz z wyjanieniem,
dlaczego akurat to urzdzenie zostao wybrane.

URZDZENIE MOBILNE TYPU SMARTWATCH


Smartwatch, inaczej inteligentny zegarek, jest przedstawicielem wearable
technology, czyli elektronik, ktr mona nosi na ciele w czasie normalnego
funkcjonowania. Obecnie te urzdzenia s jedynie gadetami majcymi na celu
umoliwi jeszcze efektywniejsze uywanie smartfonw. Dostpne dzisiaj zegarki
pozwalaj jedynie odbiera poczenia, sms-y i emaile. Mona rzec, e s po prostu
dodatkowym wywietlaczem dla telefonu, wobec czego bez niego s bezuyteczne.
Jednake w przyszoci by moe wanie dziki zegarkom uytkownicy bd mogli
wykonywa poczenia, wysya wiadomoci tekstowe, robi zdjcia, czy te korzysta
z Internetu oraz nawigacji GPS.
Pojcie

smartwatch

nie

jest

niczym

nowym.

Sama

idea

takich

skomputeryzowanych urzdze siga lat 80, gdy wtedy byy ju dostpne zegarki z
pamici elektroniczn. W roku 2000 IBM opracowa

smartwatch pracujcy pod

kontrol Linuxa. W nastpnych latach Microsoft mg pochwali si swoim


inteligentnym zegarkiem nazwanym SPOT watch. Do walki o ten segment rynku pod
koniec pierwszej dekady XXI wieku wczyli si rwnie producenci telefonw
komrkowych, mianowicie LG z produktem GD910 oraz Samsung z S9110. Jednake
obydwa urzdzenia mimo wielu zalet oferoway za mao, dlatego te sabo si
sprzedaway. Prawdziwy boom na tego typu sprzt mia miejsce w roku 2012, dziki
zegarkowi Pebble zaprezentowanemu poprzez crowdfoundingowy serwis Kickstarter.
Produkt ten zosta sfinansowany przez spoeczno nim zainteresowan w kwocie
przekraczajcej 10 milionw dolarw. Po sukcesie tej kampanii smartfonowi potentaci
Sony oraz Samsung zaprezentowali swoje smartwatche dziaajce ju pod kontrol
systemu Android. Adekwatne do obecnej sytuacji na rynku bd sowa analityka
6

Marshal'a Cohen z NPD Group w Nowym Jorku: Obserwujemy wycig, na mecie


ktrego czeka co, co moesz po prostu ubra. Z kadej strony producenci atakuj
projektami, pomysami, domysami. Prbuj na nowo odkry telefon. Zreszt, nie tylko
firm technologicznych to dotyczy, bo swj udzia maj rwnie wytwrcy akcesoriw
czy nawet projektanci mody.
Biorc pod uwag powysze rozwaania oraz raport wykonany przez firm
NextMarket Insights[4], ktra sprbowaa okreli, jak bdzie si rozrasta rynek
zegarkw elektronicznych, mona miao stwierdzi, i zainteresowanie tym mobilnymi
urzdzeniami bdzie z roku na rok stopniowo wzrasta, gdy zwikszy si
zapotrzebowanie na tego typu elektronik. Prognoz rocznej sprzeday zaprezentowano
na rysunku 1. W roku 2014 ma wynie 15.4 miliona urzdze, by w 2020 osign
blisko 374 miliony. W tej analizie pod uwag wzito kilka elementw, ktre maj mie
wpyw na tak ogromny wzrost. Czynnikami tymi s: zastpienie tradycyjnych zegarkw
smartwatchami, rozwj i dostosowanie mobilnych systemw operacyjnych do tych
urzdze wraz ze wzrostem iloci dostpnych aplikacji oraz rnorodno pod
wzgldem mody i trybu ycia. W efekcie firma NextMarket Insights przewiduje, i
inteligentne zegarki nie bd ju tylko akcesorium, gadetem, czy te dodatkowym
wywietlaczem do smartfonu, ale stan si nim samym. Dziki czemu za pomoc
zegarka bdziemy mogli wykonywa poczenia, korzysta z nawigacji GPS oraz
Internetu (transmisja danych).

Rysunek 1. Analiza rocznej sprzeday smartwatchy w latach 2012-2020


rdo: Smartwatch forecast 2013-2020 [4]

Obecnie na rynku dostpnych jest kilkanacie inteligentnych zegarkw. Cz z


nich zostaa wyprodukowana przez elektronicznych potentatw, a niektre zostay
sfinansowane przez spoeczno za pomoc serwisu Kickstarter. Niniejsze smartwatche
pracuj pod rnymi systemami operacyjnymi, z czego kilka urzdze korzysta z
Androida, bd jego modyfikacji. Do najpopularniejszych z nich nale Sony
Smartwatch 2, Samsung Galaxy Gear, i'm Watch, Neptune Pine oraz Omate Truesmart.
W tabeli 1 zaprezentowano szczegow specyfikacj tych modeli.
Z porwnania zaprezentowanego w tabeli 1. wynika, e obecnie dostpne
zegarki s stosunkowo zrnicowane ze wzgldu na swe specyfikacje. Mona
zauway, e wszystkie wywietlacze, z wyjtkiem Neptune Pine, maj wielko okoo
1.6, natomiast majc na uwadze ich rozdzielczo rednio jest to 240 na 240 pikseli.
Jednake w projektowanej aplikacji zostanie wykorzystana rozdzielczo 320 na 320,
czyli ta zaproponowana przez Samsunga. Ponadto cech wspln tyche urzdze jest
modu do bezprzewodowej komunikacji Bluetooth. Dlatego te w niniejszym projekcie
wykorzystano wanie t technologi. Smartwatche znaczco rni si ze wzgldu na
uyte w nich procesory, ktre s zarwno jednordzeniowe o taktowaniu niszym ni
200 MHz, ale i rwnie dwurdzeniowe o czstotliwoci przekraczajcej 1 GHz. Biorc
pod uwag dostpn pami operacyjn RAM mona uzna, e docelowo urzdzenia
bd miay 512 MB. Niektre zegarki ju mog korzysta z sieci komrkowej, WiFi
oraz odbiornikw GPS. Jednake urzdzenia te s stosunkowo drogie, gdy poza Sony
Smartwatch 2, ich cena oscyluje wok 300 dolarw. Dlatego aby ta ga elektroniki
odniosa podany sukces zegarki musz stanie, ale przede wszystkim producenci
musz si skoncentrowa na wydueniu czasu pracy baterii.

Tabela 1. Porwnanie specyfikacji istniejcych smartwatchy

Sony Smartwatch 2 Samsung Galaxy Gear

Procesor

ARM Cortex-M4,
1 rdze 180 MHz

i'm Watch

Neptun Pine

Omate Truesmart

ARM, 1 rdze 800 MHz

IMX233

Qualcomm
Snapdragon S4,
2 rdzenie 1,2 GHz

Cortex A7,
2 rdzenie 1,3 GHz

512 MB RAM +
16/32 GB

Pami

Brak danych

512 MB RAM + 4 GB

128 MB RAM + 4 GB

Wywietlacz
Rozdzielczo
Bluetooth
Sie komrkowa
Bateria
Mikrofon
Gonik
Kamera

1,6
220x176
Tak, v.3.0
Brak
3-4 dni
Brak
Brak
Brak

1,63
320x320
Tak, v.4.0
Brak
1 dzie
Tak
Tak
1.9 MPx

System
operacyjny

System kompatybilny
z Android 4.0+

Modyfikacja Androida

Wodoodporny

Tak

Tak

1,56
240x240
Tak
Brak
1-4 dni
Tak
Tak
Nie
i'm Droid 2
(modyfikacja
Androida)
Nie

Cena

170-199$

299$

349$

Inne

NFC

2,41
320x240
Tak, v.4.0
Tak
1-5 dni
Tak
Tak
5.0 MPx
Android 4.1.2
Tak
335$ (16 GB)
Lub
395$ (32 GB)
Micro-SIM, GPS,
WIFI

512 MB RAM + 4 GB
lub
1 GB RAM + 8 GB
1,54
240x240
Tak, v.4.0
Tak
do 4dni
Tak
Tak
5.0 MPx
Omate UI 1.0
(modyfikacja
Androida 4.2.2)
Tak
249$
(512 MB RAM +4GB)
lub
299$
(1 GB RAM + 8 GB)
Micro-SIM, WIFI,
GPS, MicroSD

ANDROID DONGLE

Android jest obecnie najpopularniejszym systemem dla urzdze mobilnych.


Jednake za spraw co raz popularniejszych telewizorw typu SmartTV, Android zosta
przeniesiony rwnie na ekrany odbiornikw TV, bynajmniej nie dziki producentom
tyche urzdze. Pojcie SmartTV oznacza, i telewizor moe z powodzeniem peni
funkcje domowego centrum rozrywki wraz z dostpem do Internetu. Niemniej jednak
nie wszyscy posiadaj tego typu odbiorniki oraz nie wszyscy mog sobie pozwoli na
wydatek minimum 1500 z na zakup nowego urzdzenia. Z pomoc dla tych osb
wychodz naprzeciw producenci oferujcy mae przystawki montowane do telewizora
za pomoc portu HDMI, zbudowane na systemie Android oraz rozszerzajce
moliwoci tradycyjnego odbiornika o funkcje oferowane przez SmartTV. Korzystna
jest rwnie cena takich urzdze rozpoczynajca si ju od 150 z. Dodatkowym
atutem tych przystawek jest sklep z aplikacjami wykorzystywany na Androidzie, czyli
Google Play, ktry oferuje wielokrotnie wicej programw w stosunku do tych
dostpnych dla uytkownikw klasycznych SmartTV i niewiele wskazuje, aby to miao
si zmieni. Ponadto urzdzenia te charakteryzuj si bardzo dobrymi parametrami
technicznymi.
Tabela 2. Porwnanie specyfikacji wybranych modeli przystawek Android dongle

Procesor
RAM
Pami
WiFi
Bluetooth
Mikrofon
Kamera
USB
Gniazdo kart SD
System
operacyjny
Cena

Measy U2B

Measy U2C

Measy U4B

Cabletech
RK3066

Cabletech
URZ0351

Cortex A9,
2 rdzenie
1,6 GHz

Cortex A9,
2 rdzenie
1,6 GHz

Cortex A9,
4 rdzenie
1,6 GHz

Cortex A9,
2 rdzenie
1,5 GHz

Cortex A9,
2 rdzenie
1,6 GHz

1 GB
8 GB
Tak
Tak
Nie
Nie
1
Tak

1 GB
8 GB
Tak
Tak, v.4.0
Tak
Tak
1
Tak

2 GB
8 GB
Tak
Tak, v.4.0
Nie
Nie
1
Tak

1 GB
4 GB
Tak
Nie
Nie
Nie
1
Tak

1 GB
4 GB
Tak
Tak
Nie
Nie
2
Tak

Android 4.1

Android 4.1

Android 4.2

Android 4.1

Android 4.1

ok. 230 z

ok. 270 z

ok. 390 z

ok. 200 z

ok. 230 z

10

W tabeli 2 przedstawiono obecnie najlepiej dostpne produkty typu Android


dongle. Jak wida s to urzdzenia majce minimum dwurdzeniowy procesor o
czstotliwoci taktowania ponad 1.5 GHz oraz minimum 1 GB RAM i 4 GB dostpnej
pamici. Kada z tych przystawek ma moliwo komunikacji za pomoc WiFi,
wbudowane ma gniazdo kart pamici microSD oraz przynajmniej 1 port USB, ktry
pozwala nam podczy zewntrzny dysk, bd te urzdzenie sterujce mysz lub
kontroler. Ponadto zainstalowanym systemem operacyjnym jest Android w wersji 4.1
lub nowszej. Wszystkie urzdzenia cechuje niski pobr energii, gdy s zasilane
poprzez port microUSB (DC 5V/2A). Rnice pojawiaj si dopiero ze wzgldu na
dodatkowe parametry, gdy nie wszystkie maj wbudowany modu Bluetooth, a tylko
jedno z tych urzdze, mianowicie Measy U2C, posiada wbudowan kamer wraz z
mikrofonem, ktr mona wykorzysta do video-rozmw. Ponadto wymienione
produkty rni si ze wzgldu na cen od 200 do prawie 400 z, ale wynika to z
zastosowanych rnych podzespow. Dlatego biorc pod uwag powysze urzdzenia
najrozsdniejszym zakupem bdzie Measy U2B, bd te U2C, jeli mamy zamiar
wykorzysta kamer.
Dlaczego wanie tego typu urzdzenie zostao wybrane do systemu
opisywanego w niniejszej pracy? Ot odpowied jest bardzo prosta, mianowicie sprzt
ten posiada dobre parametry techniczne, niski pobr mocy, dostp do sieci internetowej,
modu bezprzewodowej komunikacji Bluetooth oraz moliwo podczenia do
telewizora za pomoc HDMI, bd te wzmacniacza audio, jeli sygna z tego portu
zostanie podzielony na obraz i dwik. Ponadto takie urzdzenie korzysta z takiego
samego systemu operacyjnego jak aplikacja, ktra bdzie sterowaa odtwarzaczem,
czyli Androida oraz cechuje si stosunkowo nisk cen. Do testw jako odtwarzacza
multimedialnego wykorzystano produkt Measy U2C.

11

1.2.

rodowiska programowe
W tym podrozdziale zostanie zaprezentowany system operacyjny zainstalowany

na wykorzystywanych urzdzeniach (Android) oraz rodowisko programistyczne dla


teje platformy - Eclipse. Czytelnik bdzie mia moliwo rwnie zapozna si z
technologiami wykorzystanymi w opisywanych aplikacjach.

SYSTEM OPERACYJNY ANDROID

Android zosta zaprojektowany przez ma firm Android Inc., ktr w roku


2005 wykupio Google. W 2007 roku z inicjatywy Google powsta sojusz Open Handset
Alliance (OHA) zrzeszajcy firmy zwizane z telekomunikacj. Skutkiem zaoenia tej
organizacji byo udostpnienie wczesnej wersji tego systemu wraz z SDK (zestawem
narzdzi dla programistw), co spowodowao moliwo pisania aplikacji na Androida
przez niezalenych developerw. We wrzeniu 2008 roku zostaa wprowadzona
pierwsza komercyjna wersja tego systemu, natomiast miesic pniej zosta
wprowadzony na rynek pierwszy telefon wykorzystujcy Androida HTC Dream,
znany take jak T-Mobile G1. System ten stosunkowo szybko zdobywa uznanie wrd
uytkownikw, co zaowocowao co raz wiksz iloci dostpnych urzdze
pracujcych pod jego kontrol. Nie bez znaczenia byo zainteresowanie programistw,
dziki ktrym byo co raz wicej aplikacji moliwych do pobrania ze sklepu Google
Play. Sukcesywnie wprowadzane dalsze poprawki spowodoway, e Android sta si
obecnie najpopularniejszym systemem mobilnym, a urzdzenia dziaajce pod jego
kontrol sprzedaj si najlepiej na wiecie nieprzerwanie od trzeciego kwartau 2010
roku (rysunek 2). Z przedstawionych danych wynika, e blisko 80% sprzedawanych
urzdze na rynku posiada zainstalowany system Android. W duym stopniu
spowodowane jest to niewielkimi opatami licencyjnymi za umieszczenie tego systemu
w swoim sprzcie.

12

Rysunek 2. Sprzeda smartfonw


rdo: http://www.statista.com/chart/1099/smartphone-operating-system-market-share/

Rysunek 3. Wykres z iloci aplikacji w poszczeglnym markecie


rdo: http://www.pureoxygenmobile.com/how-many-apps-in-each-app-store/

13

Biorc pod uwag ilo dostpnych aplikacji dla wiodcych mobilnych


systemw operacyjnych, tj. iOS, Android, Windows oraz Blackbery, rwnie prym
wiedzie sklep Google Play co zaprezentowano na rysunku 3. Ilo programw dla
urzdze z Androidem przekroczya ju 800 tysicy, co spowodowao zastpienie
dotychczasowego lidera - AppStore. Jednake wpyw na taki przebieg zdarze rwnie
ma restrykcyjna polityka wprowadzania nowych aplikacji stosowana przez Apple'a.
Do tej pory przedstawiono histori oraz pozycj Androida na rynku systemw
mobilnych, dlatego te poniej zostanie zaprezentowana architektura tego systemu. Jak
wida na rysunku 4 stos Androida zosta podzielony na 5 warstw, zaczynajc od
najniszej s to:
Jdro Linuksa, ktre stanowi rdze platformy oraz jest odpowiedzialne za
sterowniki do sprztu, dostp do zasobw i zarzdzanie energi. Obecnie
wykorzystywane jest jdro w wersji 3.0 od Androida 4.0.
Biblioteki natywne napisane gwnie w C/C++. W tej warstwie umieszczono
biblioteki tj. OpenGL (generowanie grafiki 3D), SGL (wywietlanie grafiki 2D),
WebKit (obsuga przegldarki internetowej), SSL (szyfrowanie przesyanych
danych), FreeType (generowanie i renderowanie fontw), biblioteka wykonawcza
jzyka C (libc), SQLite (obsuga baz danych SQL), Surface Manager (tworzenie
okien na ekranie) oraz Media Framework (odtwarzanie i nagrywanie rnych
formatw obrazu, audio i wideo).
rodowisko wykonawcze (Android Runtime) jest umieszczone na tym samym
poziomie, co warstwa bibliotek. Tutaj zawarte s podstawowe biblioteki Java,
poniewa aplikacje tworzenie na ten system s pisane w tym jzyku programowania.
Ponadto, a moe przede wszystkim, w tej warstwie zawarta jest maszyna wirtualna
Dalvik bdca jednym z kluczowych elementw tego systemu. Dalvik VM jest
maszyn wirtualn dedykowan dla systemu Android zdecydowano si nie korzysta
z tradycyjnej gwnie z powodw licencyjnych (patenty) oraz z powodu
ograniczonych zasobw pamici oraz procesora. Dlatego te Dalvik VM jest
zoptymalizowany do niskich wymaga dotyczcych tych zasobw oraz umoliwia
uruchomienie wielu instancji wirtualnych maszyn naraz (to wanie w nim
uruchomiane s wszystkie aplikacje w tym systemie).

14

Framework aplikacji jest warstw, w ktrej umieszczone zostay klasy suce do


tworzenia aplikacji na Androida. Umoliwia m.in. zarzdzanie zasobami urzdzenia
(Resource Manager), poczeniami gosowymi (Telephony Manager), wymian
danych pomidzy aplikacjami (Content Providers), czy te lokalizacj urzdzenia
(Location Manager).
Aplikacja stanowi najwysz warstw stosu Androida. Jak sama nazwa wskazuje
wszystkie aplikacje, standardowe, czy te pobrane z zewntrznych rde dziaaj
wanie w tej warstwie. Jest ona wykorzystywana gwnej mierze przez przecitnego
uytkownika urzdze z zainstalowanym systemem operacyjnym Android.

Rysunek 4. Architektura systemu Android


rdo: http://elinux.org/Android_Architecture

Przed rozpoczciem pisania programw na system Android deweloperzy


bezwzgldnie musz zaznajomi si z podstawowymi pojciami szkieletu aplikacji,
takimi jak: widok, aktywno, intencja, dostawca treci oraz usuga. Widoki to elementy
interfejsu uytkownika, dlatego mog przybiera ksztat przycisku, etykiety, pola
tekstowego, czy te innych skadnikw. Aktywno jest interfejsem uytkownika,

15

dlatego skada si z przynajmniej jednego widoku. Przewanie obrazuje pojedynczy


ekran aplikacji. Intencja oznacza zamiar wykonania jakiego zadania. Jest
wykorzystywana np. do rozpoczcia aktywnoci, uruchomienia usugi, wybierania lub
odbierania poczenia telefonicznego, bd te nadania komunikatu. Dostawca treci
pozwala korzysta jednej aplikacji z danych innej, dziki czemu moliwe jest
wspdzielenie informacji pomidzy programami. Ostatnim z poj jest usuga, ktra
oznacza procesy dziaajce w tle i dzieli si na dwa rodzaje: usugi lokalne (dostpne
wycznie dla konkretnej aplikacji) oraz zdalne (dostpne dla wielu aplikacji).

ECLIPSE

Eclipse jest zalecanym rodowiskiem programistycznym umoliwiajcym


tworzenie oprogramowania na system operacyjny Android. Narzdzie to zostao
stworzone przez firm IBM, a nastpnie udostpnione spoecznoci Open Source.
Gwnym atutem tego programu jest elastyczno i moliwo dodawania moduw do
rnych jzykw programowania. Do zalet korzystania z Eclipse mona zaliczy take
kolorowanie skadni, weryfikacj bdw, autouzupenienie kodu, zautomatyzowane
importowanie odpowiednich klas czy te funkcje refaktoryzacji kodu. Dziki
odpowiednim wtyczkom dostarczonym przez Google rodowisko Eclipse pozwala w
prosty sposb uruchomi i testowa napisane aplikacje na odpowiednim urzdzeniu
bd te emulatorze. Ponadto uatwia proces debugowania tworzonych programw
dziki narzdziu Logcat, ktre musi by uruchomione na urzdzeniu i pozwala na
zbieranie dziennikw systemu oraz dziaajcych na nim aplikacji.

WYKORZYSTANE TECHNOLOGIE

W systemie opisywanym w tej pracy wykorzystano nastpujce technologie:


jzyk programowania Java, jzyk znacznikw XML, protok HTTP oraz standard
Bluetooth.

16

Java jest jzykiem programowania obiektowego stworzonym przez firm Sun


Microsystems. Programy w nim tworzone kompilowane s do kodu bajtowego, ktry
jest wykonywany przez maszyn wirtualn (w przypadku Androida przez Dalvik VM),
dziki czemu jest niezaleny od systemu operacyjnego oraz architektury. W
prezentowanej pracy jest wykorzystany do implementacji obydwu aplikacji.
XML, jest niezalenym od platformy, jzykiem znacznikw umoliwiajcym
atw wymian dokumentw pomidzy rnymi systemami. W opisywanym projekcie
znajduje dwojakie zastosowanie. Po pierwsze jest odpowiedzialny za zasoby oraz
budow interfejsu uytkownika w aplikacjach na Androida. Natomiast jego drugim
zastosowaniem jest plik konfiguracyjny napisany w tym jzyku z wszystkimi utworami
znajdujcy si na serwerze. w plik po odpowiednim przetworzeniu (analizie)
umoliwia stworzenie bazy danych wykorzystywanej w obydwu programach.
Protok HTTP jest protokoem pozwalajcym na komunikacj serwerw
WWW z klientami i wanie takie zadanie peni w opisywanym systemie, a dokadniej
rzecz ujmujc odpowiada za strumieniowanie utworw muzycznych dostpnych na
zewntrznym serwerze.
Bluetooth jest technologi bezprzewodowej komunikacji krtkiego zasigu
korzystajc z fal radiowych o czstotliwoci 2.4 GHz umoliwiajc komunikacj
pomidzy rnymi urzdzeniami elektronicznymi. System zosta zaprojektowany przez
firm Ericsson w 1994 roku, natomiast na rynku pojawi si w 1999 roku. Jego
teoretyczny zasig wynosi do 100m, jednake najpowszechniejsze w uyciu s
urzdzenia umoliwiajce komunikacj do 10 m. Maksymalny transfer przesyania
danych jest zaleny od wersji Bluetooth (moe on wynosi do 5 MB/s). W opisywanym
systemie umoliwia poczenie pomidzy smartwatchem (aplikacja sterujca) a
przystawk Android dongle (odtwarzacz multimedialny).

17

1.3.

Schemat dziaania systemu

Znajc ju podstawow funkcjonalno, dostpn platform sprztow oraz


programow ten podrozdzia ma za zadanie umoliwi czytelnikowi poznanie bardziej
szczegowych informacji dotyczcych dziaania opisywanego systemu.

Rysunek 5. Schemat obsugi systemu

Na

dziaanie

niniejszego

systemu

skadaj

si

nastpujce

elementy

przedstawione na rysunku 5:
1. Obsuga uytkownika.
2. Zapis danych do lokalnej bazy danych SQLite.
3. Komunikacja pomidzy aplikacjami za pomoc Bluetooth.
4. Strumieniowanie danych z serwera.
5. Odtwarzanie audio.
Uytkownik ma moliwo w jak najprostszy sposb kontrolowa odtwarzacz.
Nikt nie ma przy sobie cay czas smartfonu, wobec czego smartwatch moe by dobr
alternatyw pilota do odtwarzacza audio. Osoba korzystajca z zegarka moe
bezproblemowo zmienia aktualny utwr, w dowolnym momencie zatrzyma, bd te
18

wznowi odtwarzanie, jak i wybra playlist. Do dyspozycji uytkownika bdzie


rwnie kontrola gonoci.
Programy uyte w przedstawionym systemie korzystaj z lokalnej bazy danych
SQLite, aby mie dostpne wszystkie utwory oraz playlisty. Dane dostarczone z serwera
trafiaj do odpowiednich plikw bazodanowych i zostaj w nich zapisane w pamici
wewntrznej urzdzenia. Po wyczeniu lub zatrzymaniu aplikacji, jak i po
zresetowaniu systemu dane te pozostaj niezmienione. Ich zmiana nastpuje tylko w
przypadku zmiany na serwerze, natomiast trwae usunicie jest moliwe tylko wraz z
odinstalowaniem programw.
Obydwie aplikacje, jak ju wczeniej byo wspomniane, komunikuj si ze sob
za pomoc technologii Bluetooth. Zestawienie poczenia rozpoczyna program
dostpny na smartwatchu, wobec czego odtwarzacz multimedialny moe dziaa
niezalenie od aplikacji sterujcej. Gdy urzdzenia s ju ze sob poczone, nastpuje
wymiana danych pomidzy nimi, ktra rozpoczyna si od sprawdzenia aktualnej wersji
bazy danych oraz jej ewentualnej wymiany. Nastpnie przesyany jest numer aktualnie
odtwarzanego utworu, dziki czemu mona rwnie okreli playlist. Oczywicie
zachodzi to tylko w przypadku, gdy w programie uruchomionym na przystawce
Android dongle jest odtwarzany jaki plik. W przeciwnym za razie aplikacja sterujca
pozwoli, aby to uytkownik okreli playlist wraz z utworem. Komunikacja pomidzy
programami odbywa si na zasadzie chatu, w ktrym przesyane s odpowiednie
komendy, ktre zostan zaprezentowane w dalszej czci tej pracy.
Dane dostpne na serwerze s strumieniowane przez przystawk Android
dongle. Oznacza to, i s odtwarzane w czasie rzeczywistym bez koniecznoci ich
pobierania. Takie rozwizanie ma swoje plusy, jak i minusy. Do pozytywnych aspektw
naley przede wszystkim brak obcienia pamici masowej urzdzenia oraz fakt, i nie
trzeba czeka na pobranie caego utworu. Ponadto dziki zastosowaniu streamingu
uytkownik moe korzysta z tych samych danych umiejscowionych na serwerze za
pomoc wielu urzdze. Jak ju zostao wspomniane takie rozwizanie niesie te za
sob pewne niedogodnoci, a mianowicie przez cay czas odtwarzania trzeba mie
dostp do sieci domowej, co nie zmienia faktu, i zastosowanie strumieniowania jest
dobrym wyborem.

19

Przystawka Android dongle zostaa podczona do telewizora, wobec czego


odtwarzane utwory mona usysze wanie dziki temu urzdzeniu. Jak ju wczeniej
zostao napisane odbiornik telewizyjny nie jest jedyn moliwoci odtwarzania.
Alternatyw dla niego moe by wzmacniacz, bd te dowolny zestaw gonikw
potraficy odczyta strumie audio z interfejsu HDMI.

20

2. Implementacja

Rozdzia ten powicony jest implementacji systemu. Skada si z dwch


podrozdziaw pierwszy prezentuje sposb implementacji aplikacji sterujcej,
natomiast drugi odtwarzacza multimedialnego.

2.1.

Aplikacja mobilna sterujca odtwarzaczem

W tym podrozdziale zostanie szczegowo opisana struktura programu


przeznaczonego na smartwatch, sposb komunikacji z odtwarzaczem multimedialnym
oraz sposb tworzenia bazy danych. Ponadto zostanie zaprezentowany wygld tej
aplikacji oraz sposb uycia.

STRUKTURA APLIKACJI

Program zosta zaimplementowany na smartwatche, wobec czego jest


przygotowany dla urzdze z minimaln wersj Androida 4.0. Aplikacja zbudowana
zostaa zgodnie z wzorcem projektowym Model-Widok-Kontroler, dziki czemu w
atwy sposb bdzie mg by rozbudowany w przyszoci. Aplikacja skada si z
piciu widokw ktre umieszczone s w katalogu res/layout (rysunek 6). Kontrolery za
nie odpowiedzialne umieszczone s w pakiecie com.smartwatchmusicplayer.controllers,
wobec czego moemy wyrni tutaj 5 klas, a mianowicie: SettingsController,
CurrentPlaylistController,

MusicPlayerController,

AllPlaylistsController

oraz

DeviceListController. Do tego pakietu naley rwnie klasa OnSwipeTouchListener,


ktra odpowiedzialna jest za moliwoci nawigowania pomidzy widokami oraz
znajduje szersze zastosowanie przy kontroli odtwarzacza. Bardziej szczegowy opis
bdzie zaprezentowany w dalszej czci pracy.

21

Rysunek 6. Struktura aplikacji

W pakiecie com.smartwatchmusicplayer.data znajduj si klasy odpowiedzialne


za dane przetwarzane w aplikacji, ktre moemy podzieli na dwie grupy. Do pierwszej
z nich mona zaliczy Preferences, ktra odpowiada za zapis opcji, do ktrych nale
odtwarzanie losowe lub zaptlenie, wwczas gdy program zostanie wyczony, bd
zatrzymany

oraz

DataSingleton,

ktra

rwnie

jest

wzorcem

projektowym

ograniczajcym moliwo tworzenia obiektw tej klasy do jednej instancji, dziki


czemu zapewnia globalny dostp do stworzonego obiektu. Do drugiej grupy w tym
pakiecie nale klasy cile zwizane z baz danych, mianowicie DataBaseAdapter i
DataBaseHandler oraz z obiektami, ktre z niej otrzymujemy i na ktrych opiera si
aplikacja, czyli Song oraz Playlist.

22

Tabela 3. Klasa PlayerService


public class PlayerService extends Service {
private final IBinder mBinder = new MyBinder();
// BROADCAST ACTIONS
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
playlis";
public static final String

BROADCAST_ACTION = "lost connection";


BROADCAST_ACTION_SEARCH_DEVICE = "search device";
BROADCAST_ACTION_FOUND_DEVICE = "found device";
BROADCAST_ACTION_SEARCH_END = "search end";
BROADCAST_ACTION_CONNECTED = "connected";
BROADCAST_ACTION_NOT_CONNECTED = "not connected";
BROADCAST_ACTION_GO_TO_ALL_PLAYLISTS = "all playlists";
BROADCAST_ACTION_GO_TO_CURRENT_PLAYLIST = "current
BROADCAST_ACTION_GO_TO_MUSIC_PLAYER = "music player";

public class MyBinder extends Binder {


PlayerService getService() {
return PlayerService.this;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
@Override
public void onCreate() {
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBtAdapter == null) {
Toast.makeText(getApplicationContext(), BLUETOOTH_NOT_SUPPORTED,
Toast.LENGTH_SHORT).show();
} else {
if (!mBtAdapter.isEnabled()) {
mBtAdapter.enable();
}
}
// Register for broadcasts when a device is discovered
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mReceiver, filter);
mNewDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
sendBroadcast(new Intent().setAction(BROADCAST_ACTION_SEARCH_DEVICE));
doDiscovery();
if (mChatService == null){
mChatService = new BluetoothChatService(this, mHandler);
}
super.onCreate();
}
(...)
}

23

Ostatnim z pakietw jest com.smartwatchmusicplayer.services, do ktrego


nale klasy odpowiadajce za poczenie Bluetooth oraz dziaanie aplikacji w tle.
Pierwsze zadanie umoliwia BluetoothChatService, ktra zostanie opisana w dalszej
czci, natomiast drugie PlayerService (tabela 3). Klasa ta rozszerza standardow klas
dostpn w Androidzie Service, ktra wie si z pojciem ju wczeniej
omawianym, a mianowicie usug. W tym wypadku bdzie to usuga lokalna, gdy jest
wykorzystywana tylko na potrzeby tej konkretnej aplikacji. PlayerService odpowiada za
komunikacje kontrolerw z BluetoothChatService, dziki czemu nawet po wyjciu z
aplikacji uytkownik dalej bdzie informowany o ewentualnych zmianach w poczeniu
Bluetooth, a w przypadku powrotu do aplikacji nie bdzie musia ponownie zestawia
tego poczenia. Jak wida w tabeli 3, klasa ta powiadamia kontrolery za pomoc
wbudowanej funkcji sendBroadcast(), wysyajc adekwatne komunikaty, ktre s
zmiennymi publicznymi.

TWORZENIE BAZY DANYCH

Tabela 4. Tabela SONG z przykadowymi danymi

24

Tabela 5. Tabela PLAYLIST z przykadowymi danymi

Baza danych uyta w aplikacji skada si z dwch tabel: SONG oraz


PLAYLIST. Pierwsza z tabel przechowuje wszystkie dostpne piosenki (patrz tabela 4).
Jak mona zauway w skad tabeli SONG wchodzi pi pl. Kolumna TITLE zawiera
tytu utworu, za ARTIST nazw artysty. Pole ID_PLAYLIST jest kluczem obcym
tabeli PLAYLIST i informuje, do ktrej listy odtwarzania naley dana piosenka.
Ostatnia z kolumn, czyli TIME okrela czas utworu w sekundach. Druga z tabel, czyli
PLAYLIST (patrz tabela 5), jak sama nazwa wskazuje zawiera dane o dostpnych
playlistach. W jej skad wchodz dwa pola, przy czym NAME jest nazw konkretnej
listy odtwarzania. Analogiczne do nazw powyej opisanych tabel nazwane zostay klasy
przetrzymujce obiekty z bazy danych. Czyli tymi klasami s Song oraz Playlist, ktre
s przedstawione na odpowiednio w tabeli 6 oraz tabeli 7.

Tabela 6. Klasa Song


public class Song {
private
private
private
private
private

int id;
String title;
String artist;
int time;
int id_playlist;

public Song() {
}
public Song(int _id, String _title, String _artist, int _time, int _id_playlist)
{
setId(_id);
setTitle(_title);
setArtist(_artist);
setTime(_time);
setIdPlaylist(_id_playlist);
}
(..)
}

25

Tabela 7. Klasa Playlist


public class Playlist {
private int id;
private String name;
public Playlist(int _id, String _name) {
setId(_id);
setName(_name);
}
(..)
}

Tabela 8. Klasa DataBaseHandler


@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE_SONG + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_TITLE + " TEXT NOT NULL, " +
KEY_ARTIST + " TEXT NOT NULL, " +
KEY_TIME + " INTEGER NOT NULL, "+
KEY_ID_PLAYLIST + " INTEGER NOT NULL );"
);
db.execSQL("CREATE TABLE " + DATABASE_TABLE_PLAYLIST + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL );"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SONG);
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_PLAYLIST);
onCreate(db);
}

Po zaprezentowaniu, jak ma wyglda baza danych oraz jakie obiekty dziki


temu otrzymamy, zostanie opisana klas tworzc lokaln baz danych, ktr w
omawianej aplikacji jest klasa DataBaseHandler, Odpowiedzialna jest ona rwnie za
aktualizacj tej bazy. Metodami za to odpowiedzialnymi s onCreate() oraz
onUpgrade()

ktr

SQLiteOpenHelper.

przedstawiono
Jako

parametr

tabeli

otrzymuj

8.

Obydwie

obiekt

nale

do

klasy

SQLiteDatabase,

ktry

reprezentuje uywan baz danych. Metoda onCreate() zawiera mechanizm tworzenia


tabeli i zostaje wywoana w momencie, gdy baza danych jest tworzona po raz pierwszy,
natomiast onUpgrade() bdzie uyta podczas jej aktualizacji.
Klas odpowiedzialn za dodawanie nowych wpisw do tabel oraz wczytywanie
odpowiednich danych jest klasa DataBaseAdapter. Metodami, nalecymi do niej, a
umoliwiajcymi dodawanie utworw oraz playlist s addSong() oraz addPlaylist()
(tabela 9), ktre jako parametr potrzebuj odpowiednio obiektu klasy Song i Playlist.
26

Informacje, ktre trafiaj do tej bazy, s danymi odebranymi od odtwarzacza w postaci


pliku XML, ktry nastpnie jest przetwarzany. Dane wczytywane z bazy danych s za
pomoc metod getSongs() oraz getPlaylists() (tabela 10). Dziki nim otrzymujemy list
obiektw typu Song w przypadku pierwszej oraz typu Playlist dla drugiej.

Tabela 9. Metody klasy DataBaseAdapter - addSong() oraz addPlaylist()


public long addSong(Song song) {
ContentValues values = new ContentValues();
values.put(mDataBaseHandler.COLUMN_TITLE, song.getTitle());
values.put(mDataBaseHandler.COLUMN_ARTIST, song.getArtist());
values.put(mDataBaseHandler.COLUMN_TIME, song.getTime());
values.put(mDataBaseHandler.COLUMN_ID_PLAYLIST, song.getId_playlist());
return database.insert(mDataBaseHandler.DATABASE_TABLE_SONG, null,
values);
}
public long addPlaylist(Playlist playlist) {
ContentValues values = new ContentValues();
values.put(mDataBaseHandler.COLUMN_NAME, playlist.getName());
return database.insert(mDataBaseHandler.DATABASE_TABLE_PLAYLIST, null,
values);
}

Tabela 10. Metody klasy DataBaseAdapter - getSongs() oraz getPlaylist()


public List<Song> getSongs() {
List<Song> songs= new ArrayList<Song>();
Cursor cursor = database.query(mDataBaseHandler.DATABASE_TABLE_SONG,
allSongsColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Song song = cursorToSong(cursor);
songs.add(song);
cursor.moveToNext();
}
// make sure to close the cursor
cursor.close();
return songs;
}
public List<Playlist> getPlaylists() {
List<Playlist> playlists= new ArrayList<Playlist>();
Cursor cursor = database.query(mDataBaseHandler.DATABASE_TABLE_PLAYLIST,
allPlaylistsColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Playlist playlist = cursorToPlaylist(cursor);
playlists.add(playlist);
cursor.moveToNext();
}
// make sure to close the cursor
cursor.close();
return playlists;
}

27

KOMUNIKACJA Z ODTWARZACZEM MULTIMEDIALNYM

Po przedstawieniu jak tworzona jest baza danych, nadszed czas, by wyjani jak
wyglda komunikacja z odtwarzaczem multimedialnym, ktra jest moliwa za pomoc
technologii Bluetooth. Pocztkowo aplikacje miay wykorzystywa Bluetooth w wersji
4.0. Charakteryzuje si bardzo niskim zuyciem energii w stosunku do poprzednich
wersji, wobec czego inaczej nazywana jest Low Energy. Byoby to idealne rozwizanie
dla zegarkw elektronicznych, gdy wtedy program nie wpywaby tak znaczco na
zuycie baterii. Niestety obecna wersja Androida nie pozwala w penym stopniu na
wprowadzenie technologii energooszczdnej, poniewa obecnie mona jedynie odbiera
komunikaty, natomiast nie mona nic nadawa. Dlatego te zostaa zastosowana nisza
wersja, a z Bluetooth 4.0 bdzie mona skorzysta w przyszoci.
Schemat pokazujcy jak jest nawizywane poczenie pomidzy aplikacjami
przedstawia rysunek 7. Wynika z tego, e na pocztku program na zegarku
elektronicznym szuka widocznych urzdze, a gdy ju takowe znajdzie, wywietla je
uytkownikowi, ktry moe je wybra. Nastpnie po prawidowym poczeniu z
odtwarzaczem nastpuje wymiana komunikatw dotyczcych wersji bazy danych, a w
przypadku jej niezgodnoci przesyana jest caa baza w postaci danych XML. Po czym
ponownie jest sprawdzana wersja bazy danych, w celu weryfikacji, czy nie miay
miejsca adne zmiany. Nastpnie aplikacja na zegarku odpytuje drugi program o
obecnie odtwarzany utwr. Jeli jest takowy, to zostanie przesane jego id, a w
przeciwnym razie odpowiedzi bdzie 0, gdy taka warto nie moe wystpi w bazie
danych. Adekwatnie do otrzymanego id uytkownik zobaczy albo ekran odtwarzacza
(id rne od zera) albo wszystkie playlisty (id rwne zero). Nastpnie aplikacje
wymieniaj midzy sob komunikaty, ktrych lista zostaa zaprezentowana poniej:
MESSAGE_TYPE_PLAY wznowienie odtwarzania
MESSAGE_TYPE_PAUSE zatrzymanie odtwarzania
MESSAGE_TYPE_PREVIOUS zmiana utworu na poprzedni
MESSAGE_TYPE_NEXT zmiana utworu na nastpny
MESSAGE_TYPE_VOLUME_UP podgonienie
MESSAGE_TYPE_VOLUME_DOWN ciszenie

28

MESSAGE_TYPE_SEND_SONG_ID przesanie id utworu wybranego z


playlisty
MESSAGE_TYPE_GET_SONG_ID zapytanie o id aktualnie odtwarzanego
utworu
MESSAGE_TYPE_GET_DB_VERSION zapytanie o aktualn wersj bazy
danych
MESSAGE_TYPE_SEND_DB_VERSION przesanie wersji bazy danych
MESSAGE_TYPE_GET_DB proba o przesanie bazy danych
MESSAGE_TYPE_SEND_DB przesanie bazy danych

29

Rysunek 7. Diagram aktywnoci (zestawienie poczenia Bluetooth)

30

INTERFEJS GRAFICZNY

Jak ju wczeniej byo wspomniane aplikacja skada si z piciu widokw. Do


kontrolerw odpowiedzialnych za nie nale:
MusicPlayerController

(rysunek

8c)

pozwala

na

wywietlanie

tytuu

odtwarzanego utworu a uytkownikowi umoliwia jego zmian, zatrzymanie,


wznowienie, bd kontrol gonoci.
CurrentPlaylistController (rysunek 8a) pokazuje aktualn playlist, czyli
dostpne w niej utwory, w formie listy, dziki wykorzystaniu standardowej klasy
znajdujcej si w Androidzie ListView. Pozwala na zmian utworu w obrbie tej
playlisty.
AllPlaylistsController (rysunek 8b) wywietla wszystkie dostpne listy
odtwarzania, w taki sam sposb jak poprzednia klasa, wobec czego tutaj mona
wybra interesujc nas playlist.
SettingsController (rysunek 8d) umoliwia uytkownikowi wybranie opcji
zaptlenia utworu (Repeat) oraz odtwarzania losowego (Shuffle).
DeviceListController pojawia si wtedy i tylko wtedy, gdy urzdzenie wyszukuje
odtwarzacz multimedialny za pomoc Bluetooth i odpowiada za wywietlenie
znalezionych urzdze.
Ponadto z powyszymi klasami skorelowana jest klasa OnSwipeTouchListener,
dziki ktrej uytkownik moe porusza si pomidzy widokami za pomoc gestw
tzw. swipe'w. Swipe oznacza dusze przecignicie przez uytkownika palcem po
wywietlaczu w odpowiednim kierunku. W zwizku z tym nawigacja w aplikacji
nastpuje za pomoc takich diagonalnych gestw i tak przesuwajc w lewy grny rg
wczymy widok odtwarzacza, lewy dolny obecn playlist, prawy dolny wszystkie
playlisty oraz prawy grny ustawienia. Ponadto gesty tego typu uyte s rwnie w
pierwszym z tych widokw do kontroli odtwarzacza. Swipe w gr, bd d
(przesunicie pionowo palcem) odpowiada za zmian gonoci, odpowiednio goniej i
ciszej, natomiast swipe w lewo i prawo (przesunicie poziomo palcem) za zmian
utworw poprzedni, nastpny.

31

Rysunek 8. Widoki aplikacji sterujcej odtwarzaczem

2.2.

Odtwarzacz multimedialny

W niniejszym podrozdziale zostanie szczegowo opisana struktura odtwarzacza


multimedialnego, sposb w jaki s strumieniowane dane z serwera oraz jak tworzona
jest baza danych.

STRUKTURA APLIKACJI

Program zosta zbudowany w oparciu o osiem klas, ktre wchodz w skad


pakietu com.servermusicplayer (rysunek 9). A siedem z nich jest nazwane tak samo,
jak w poprzedniej aplikacji, czyli DataSingleton, DataBaseHandler, DataBaseAdapter,
PlayerService, BluetoothChatService, Song oraz Playlist, co wiadczy o tym, i s
odpowiedzialne za podobne, bd takie same funkcje. Dodatkowo pojawia si klasa
32

ServerController, ktrej zadaniem jest uruchomienie usugi lokalnej, aby aplikacja


dziaaa w tle.

Rysunek 9. Struktura programu odtwarzacza multimedialnego

TWORZENIE BAZY

Baza danych wykorzystana w tej aplikacji skada si z dokadnie takich samych


tabel, jak w poprzednim programie, czyli SONG (patrz tabela 5) oraz PLAYLIST, ktre
zawieraj identyczne pola. Jedyn rnic jest dodatkowa kolumna LINK wystpujca
w tabeli SONG. Zawiera ona informacje pod jakim adresem URL znajduje si dany
utwr. Przykadowe informacje zawarte s w tabeli 11.

33

Baza danych tworzona jest w analogiczny sposb i za pomoc tych samych


metod, ktre rwnie wystpuj w klasie DataBaseHandler (patrz tabela 8). Rwnie
metody odpowiedzialne za dodawanie wpisw do tabel oraz uzyskiwanie z nich danych
s prawie identyczne (patrz tabela 9 i tabela 10) i zawarte w klasie DatabseAdapter.

Tabela 11. Tabela SONG z przykadowymi danymi

Dane, ktre trafiaj do odpowiednich tabel to utwory muzyczne znajduj si na


prywatnym zewntrznym serwerze, z ktrego aplikacja pobiera plik XML w oparciu,
ktrego budowana jest opisana powyej baza danych. w plik, ktry jest przedstawiony
z przykadowymi danymi w tabeli 12, skada si z elementu gwnego playlists, ktry
zawiera elementy podrzdne playlist wchodzce w skad tabeli PLAYLIST. Zawieraj
one atrybuty name, czyli nazwy tych list odtwarzania. Kady element playlist skada si
z elementw podrzdnych song, czyli piosenki bdcej wpisem w tabeli SONG.
Elementami podrzdnymi w tym wypadku s: title, artist, time oraz link, ktre nazywaj
si dokadnie tak samo jak kolumny tej tabeli. Po pobraniu ten plik jest przetwarzany,
aby dane mogy trafi do odpowiednich tabel w lokalnej bazie danych. Jednake
rozwizanie korzystajce wanie z pliku XML nie jest najlepsze. Wynika to z faktu, i
byoby to uciliwe dla uytkownika kocowego, ktry musiaby zmienia jego
zawarto wraz z kad zmian utworw na serwerze. Odpowiednim sposobem byo
korzystanie z funkcji umoliwiajcych odpytanie serwera, co do jego zawartoci, np. za
pomoc metody GET.
34

Tabela 12. Konfiguracyjny plik XML z przykadowymi danymi


<?xml version="1.0" encoding="UTF-8"?>
<playlists>
<playlist name = "Car">
<song>
<title>Carmen</title>
<artist>Lana del Rey</artist>
<time>267</time>
<link>http://pluton.kt.agh.edu.pl/09%20Carmen.mp3</link>
</song>
<song>
<title>Born to die</title>
<artist>Lana del Rey</artist>
<time>283</time>
<link>http://pluton.kt.agh.edu.pl/01%20Born%20to%20Die.mp3</link>
</song>
</playlist>
</playlists>

STRUMIENIOWANIE ZEWNTRZNYCH DANYCH Z SERWERA

Utwory muzyczne odtwarzane w tej aplikacji, jak ju byo wczeniej


wspomniane, znajduj si na dedykowanym serwerze. Dziki temu, e w bazie danych
mamy zapisany adres kadego z nich moliwe jest ich strumieniowanie, co
wykorzystano w programie. Odbywa si to w klasie PlayerService za pomoc obiektu
typu MediaPlayer (standardowej klasy dostpnej w Androidzie). Metodami
wykorzystanymi w tym celu s setDataSource(), prepare() oraz start(). Parametrem
pierwszej z nich jest wanie adres piosenki. Nastpna z metod odpowiada za
przygotowanie instancji tej klasy do odtwarzania, ktre jest rozpoczte przez ostatni z
nich. W omawianej klasie pojawiaj si rwnie metody odpowiedzialne za zmian
piosenki na nastpna oraz poprzedni changeSong() (tabela 13) ktrej parametrem jest
odpowiedni obiekt z listy piosenek Songs. W tej metodzie najpierw nastpuje
zatrzymanie odtwarzacza funkcja stop(), ktry nastpnie jest zresetowany reset(), po
czym ponownie wykorzystane s setDataSource(), prepare() oraz start().
Kompletny kod rdowy obydwu aplikacji wchodzcych w skad opisywanego
systemu zosta umieszony w Dodatku A niniejszej pracy.

35

Tabela 13. Metoda changeSong()


public void changeSong(){
mp.stop();
sendMessageToDevice(MESSAGE_TYPE_PAUSE);
if (mp != null) {
try {
boolean isPlaying = mp.isPlaying();
mp.reset();
mp.setDataSource(this, Uri.parse(title[currentSong]));
mp.prepare();
if(isPlaying){
mp.start();
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sendMessageToDevice(MESSAGE_TYPE_SEND_SONG_ID);
}

36

3. Testy aplikacji

Niniejsze aplikacje wchodzce w skad opisywanego systemu testowane byy na


smartfonie Samsung Galaxy SIII (program sterujcy) oraz na przystawce Measy U2C
(odtwarzacz multimedialny). Niestety nie skorzystano z smartwatcha ze wzgldu na
jego niedostpno, jednake uyte urzdzenie odpowiednio go zasymulowao.
Aplikacje byy testowane pod ktem szybkoci, czytelnoci oraz czuoci na
odpowiednie gesty.
Majc na uwadze pierwszy z tych aspektw, czyli szybko, mona wyodrbni
dwie

kategorie,

mianowicie

komunikacj

pomidzy

urzdzeniami

oraz

strumieniowanie. Aplikacje wykorzystaj do poczenia midzy sob Bluetooth, dlatego


te, gdy znajduj si w odpowiedniej odlegoci, to komunikacja pomidzy nimi dziaa
bez zarzutu, a przede wszystkim szybko okoo kilku milisekund. Rwnie biorc pod
uwag streaming podczas testowania nie pojawiy si adne opnienia, wobec czego
mona stwierdzi, e dopki jest poczenie pomidzy serwerem a urzdzeniem, to
system dziaa bez zarzutw.
Czuo na gesty, bya testowana tylko na aplikacji przeznaczonej na
smartwatche. W tym celu dziesi osb przez trzy minuty miao moliwo korzystania
z tego programu. Nastpnie w skali od 1 do 5 (najlepiej) ocenili uyteczno
przyciskw (wznw oraz zatrzymaj odtwarzanie, wcz/wycz odtwarzanie losowe i
zaptlenie), czuo na dostpne gesty (zmiana gonoci oraz utworu na poprzedni i
nastpny, wczenie innych widokw: Odtwarzacz, Aktualna playlista, Wszystkie
playlisty i Ustawienia) oraz czytelno napisw, co zebrano i przedstawiono w tabeli
14. Z przeprowadzonych testw wynika, e uyteczno przyciskw jest na
odpowiednim poziomie, gdy uytkownicy ocenili j rednio na 5 (odtwarzaj oraz
zastopuj) oraz 4.5 (odtwarzanie losowe i zaptlenie). Niestety gorzej ju prezentuj si
oceny dla moliwoci sterowania odtwarzaczem za pomoc gestw. Zmiana utworw
zostaa oceniona na zadowalajcym poziomie tj. rednio 4.2 zarwno dla nastpnego,
jak i poprzedniego utworu. Jednake sabsze noty uzyskaa kontrola gonoci 3.9 dla
ciszania oraz 3.3 dla poganiania. Z pewnoci na takie oceny ma wpyw fakt, i
podczas wykonywania gestw swipe w gr lub d moe zosta przypadkowo kliknity
przycisk odtwarzaj/pauza. Oceny uytkownikw dla zmiany widokw s zalene od
37

tego, w ktr stron mamy wykona gest, dlatego najwysz redni ma Odtwarzacz
4.8 (lewy grny rg), natomiast najnisz Ustawienia 4.2 (prawy grny rg).
Czytelno napisw w aplikacji zostaa oceniona wysoko rednia 4.9, wobec czego
mona uzna, i w aplikacji zostaa wykorzystana odpowiednia wielko czcionki.
Jednake aplikacja testowana bya na smartfonie o przektnej wywietlacza 4.8, co
mogo znaczco poprawi wynik w tej kwestii, poniewa dostpne zegarki maj ekrany
o wielkoci 1.6.

38

Tabela 14. Oceny uytkownikw

Odtwarzaj Stop
Uytkownik
1
Uytkownik
2
Uytkownik
3
Uytkownik
4
Uytkownik
5
Uytkownik
6
Uytkownik
7
Uytkownik
8
Uytkownik
9
Uytkownik
10
rednia

Odtwarzanie
Aktualna Wszystkie
Zaptlenie Goniej Ciszej Nastpny Poprzedni Odtwarzacz
Ustawienia Czytelno
losowe
playlista playlisty

4.5

4.5

3.3

3.9

4.2

4.2

4.8

4.7

4.3

4.2

4.9

39

Podsumowanie

Celem niniejszej pracy inynierskiej byo zaprojektowanie oraz stworzenie


systemu, ktry umoliwiaby uytkownikowi w jak najprostszy sposb zarzdzania
odtwarzaczem multimedialnym. W jego skad wchodz dwie aplikacje, z ktrych
pierwsza odpowiada za sterowanie i jest zaimplementowana na smartwatche z
Androidem. Oferuje ona nastpujce funkcjonalnoci: wybr utworu, stop, odtwarzaj,
nastpny, poprzedni, ciszej, goniej. Ponadto cechuje si bardzo minimalistycznym
interfejsem, przez co jest intuicyjna oraz prosta w obsudze dla nawet najmniej
zaawansowanego uytkownika. Druga aplikacja jest odpowiedzialna za odtwarzanie
utworw wybranych przez uytkownika za pomoc strumieniowania zewntrznych
danych z serwera.
System testowany by przez grup dziesiciu uytkownikw, ktrzy oceniali
aplikacj na zegarki elektroniczne pod ktem uytecznoci przyciskw, czuoci na
dostpne gesty oraz czytelnoci. Zarwno pierwszy, jak i ostatni z tych aspektw
otrzymay ocen prawie bardzo dobr, natomiast drugi dobr.
Zrealizowany projekt inynierski podyktowany by rosnc popularnoci
urzdze typu wearable technology, a w tym konkretnym wypadku smartwatchy i ma za
zadanie przedstawienie pracy w rodowisku Eclipse przy programowaniu aplikacji na
system Android. Praca ta nie wyczerpuje w peni tematu. System ma perspektywy
rozwoju w wielu kierunkach, z ktrych najwaniejsze to interfejs graficzny drugiej
aplikacji umoliwiajcy odtwarzania filmw, wykorzystanie popularnych serwerw
takich jak Dropbox, czy Google Drive oraz wprowadzenie do komunikacji
Bluetooth 4.0.

40

Literatura
[1] S. Hashimi, S. Komatineni, D. MacLean, Android 2. Tworzenie aplikacji,
wydawnictwo Helion, 2010.
[2] Android Developer. [Online]. Dostpny w Internecie:
http://www.developer.android.com
[3] Dokumentacja Bluetooth. [Online]. Dostpny w Internecie:
https://developer.bluetooth.org
[4] Smartwatch forecast 2013-2020. [Pdf]
[5] A. ciak, Smartwatch zmieni rynek mobilny? [Online]. 2013-03-24
[dostp: 13. grudnia 2013]. Dostpny w Internecie:
http://www.gsmmaniak.pl/192654/smartwatch-zmieni-rynek-mobilny/
[6] S. Conder, L. Darcey, Android. Programowanie aplikacji na urzdzenia przenone.
Wydanie II, wydawnictwo Helion.
[7] Produkty firmy Measy. [Online]. Dostpny w Internecie:
http://www.measypolska.pl/p/blog-page.html
[8] Produkty firmy Cabletech. [Online]. Dostpny w Internecie:
http://www.cabletech.pl/pl/1292-multimedia-do-telewizji[9] Specyfikacja Omate Truesmart. [Online]. Dostpny w Internecie:
http://www.kickstarter.com/projects/omate/omate-truesmart-water-resistantstandalone-smartwa
[10] Specyfikacja im Watch . [Online]. Dostpny w Internecie:
http://www.imsmart.com/pl/i-m-watch/specifications
[11] Specyfikacja Neptune Pine, Samsung Galaxy Gear, Sony Smartwatch 2. [Online].
Dostpny w Internecie: http://www.kickstarter.com/projects/neptune/neptune-pinesmartwatch-reinvented

41

Dodatek A. Spis zawartoci doczonej pyty CD


Praca inynierska niniejszy dokument
Kod rdowy obydwu aplikacji

42

You might also like