Мобилни ад-хок мрежи и QoS рутирање кај мобилни апликации

Size: px
Start display at page:

Download "Мобилни ад-хок мрежи и QoS рутирање кај мобилни апликации"

Transcription

1 УНИВЕРЗИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ И КОМУНИКАЦИСКИ ТЕХНОЛОГИИ - постдипломски студии - Мобилни ад-хок мрежи и QoS рутирање кај мобилни апликации Магистерски труд Кандидат: Сотироски Ивица 47/10 Ментор: Проф. д-р Пеце Митревски

2 Содржина: 1. Вовед Позадина Цел на трудот Ограничувања Опис и структура Теорија Позадина Peer to peer пристап WiFi Direct Преглед на API Алатки Android OS Преглед Архитектура Изданија и Ice Cream Sandwich (ICS) Jelly Bean (JB) Eclipse и Android SDK Генерална структура на решението Дизајн & Имплементација Преглед Компоненти Broadcast Receiver Fragments AsyncTask & Услуги Имплементација Broadcast Receiver WiFiDirectApp класа ChatFragment класа WiFiDirectActivity класа Main Activity класа Презентација на апликацијата преку слики Заклучок Резултат

3 5.2. Надградување Литература

4 Апстракт Со воведувањето на паметните телефони и мобилните уреди, примената на технологијата стана широко распространета. Многу е веројатно да се видат луѓе кои користат мобилни уреди на улица, во автобус, на работно место, на училиште или дома без разлика на тоа дали во близина има целосно функционален компјутер. Употребата на паметните телефони не е лимитирана само на основна комуникација, тие се користат и како технолошки gadget - ти во животот на човек веќе неколку години. Лесно може да се пристапи до апликации од различни полиња, на пример: процесирање на слики, аудио подесувања, едитирање на видео, препознавање на говор. Со помошта на овие паметни апликации, човекот има можност за многу побрза интеракција со околината и континуирано олеснување на животот. За разлика од индустријата за мобилни телефони, споделувањето и останувањето конектиран со нашата околина стана многу популарно. Една личност која има мобилен телефон со најнова технологија посакува да комуницира со пријателите, да споделува настани инстантно, и да запознава нови личности. Во овој контекст, технологијата стигна до точка каде што потребите на модерниот човек се преклопуваат со денешната технологија. Овој труд има за цел да обезбеди основна апликација на корисниците кои имаат потреба за споделување и комуницирање, со помош на решение кое е лесно за одржување и е бесплатно. Овој труд обезбедува прототип апликација за решавање на овој проблем со користење на WiFi Direct технологија, и има за цел да биде една од првите апликации во ова поле поради малиот број на апликации од овој тип достапни на пазарот. Како последица на овој труд една основна апликација е развиена, каде што корисникот може да открива peers, да испраќа текстуални пораки и да споделува слики. Конекцијата е воспоставена преку peer-to-peer протокол и поради тоа секоја можна потреба за интернет конекција е отстранета. Со помош на апликацијата и способностите на WiFi Direct, корисниците може да споделуваат текстуални пораки и слики. 4

5 1. Вовед Ова поглавје дава преглед на извештајот и обезбедува фундаментални аспекти на трудот како што се опишување на проблем и цел. Поглавјето продолжува со опис на рестрикциите кои се појавуваат во текот на изработката на трудот. Дополнително, методот и структурата на извештајот се сумирани со цел да се обезбеди преглед на текот на извештајот Позадина Постои широк спектар на мобилни апликации во денешно време. Од игри до апликации за социјални медиуми. Истражувањето 1 направено од страна на Flurry покажува дека игрите се најпреземаните апликации од Google Play. Дополнително Flurry прави анализа на тоа колку често корисниците посветуваат време за играње на игри. Според следната табела, извештајот направен врз 60,000 андроид уреди покажува дека андроид гејмерите во Америка се најактивни со просечно дневно време потрошено за играње од 51,8 минути. Слика 1. Просечно потрошено време за играње на андроид уреди 1 Flurry Analytics, 60,000 device sample, January

6 Интернет бирото за рекламирање на Велика Британија објавило извештај за гејмерските навики во Велика Британија. Тој покажува дека 54% од личностите кои биле анкетирани ги избрале паметните телефони како нивна омилена гејмерска платформа, пред компјутерите (51%), конзолите (45%) и таблетите (44%). Според официјални податоци на Google, андроид брои повеќе од 1 милијарда корисници на глобално ниво. И покрај тоа што постои голем интерес за игри, апликациите за социјални медиуми исто така високо котираат помеѓу корисниците на андроид. Ова секако е поради фактот што луѓето треба да го покажат нивниот идентитет на нивната околина. Постојат и други причини како Connections и Community како причина за користење на социјалните страни и употребата на апликации за социјални медиуми. Како додаток на ова, споделувањето исто така влијае врз луѓето за да го одржува нивниот допир со нивната околина. Ги споделуваме нашите слики со пријатели, нашите видеа како доказ за нашиот идентитет, и споделуваме музика која ја сакаме со цел да им дадеме импресија на луѓето за нас. Споделувањето и комуницирањето се суштински за луѓето и ова треба да е претставено во полињата на технологијата. Во овој контекст, апликациите за испраќање на кратки пораки и за споделување на фајлови претставуваат клучни фактори. Со изборот на слични апликации, она што навистина е потребно во теорија е поврзувањето на податоците во иднина. Можеме да правиме и добиваме бесплатни повици со користење на многу апликации. Од друга страна, апликациите кои нудат испраќање на бесплатни пораки, за првпат ги притискаат класичните SMS и споделувањето на различни содржини се одвива на многу различни начини со помош на многу апликации. Многу е јасна причината за тоа дека паметните телефони мора да користат интернет конекција со цел да ги одржуваат сите системи наброени погоре. Поврзувањето со други луѓе, особено со една личност, може да биде осигурено со поврзување во светот. Оттаму, постои потреба од 3G или мрежен пристап за сите мобилни уреди и паметни телефони. 3G претставува множество од стандарди користени за мобилните уреди и мобилните телекомуникациски сервиси и мрежи кои ги почитуваат спецификациите на International Mobile Telecommunications-2000 (IMT- 6

7 2000) од International Telecommunication Union. Се користи во безжичната телефонија, мобилен пристап на интернет, видео повици и мобилна телевизија. Како и да е, иако изгледа како прилично лесна и евтина опција, благодарејќи на развојот на технологијата, воспоставувањето на мрежна конекција помеѓу паметните телефони некогаш може да биде скапо и помалку ефективно. Поради овие причини, нови решенија може да бидат потребни. Ова ја опишува целта на овој труд. Паметните телефони имаат потреба од 3G или точки за мрежен пристап. Како и да е, оваа технологија не секогаш е достапна и понекогаш е скапа за користење особено кога станува збор за споделување на фајлови или испраќање на пораки помеѓу луѓето. Поврзувањето на некоја точка за мрежен пристап или 3G може не секогаш да е возможно, пример во концертна сала, во фабрики, тунели, музеи итн. каде што конструкцијата на зградите може да го блокира 3G или пристапните точки да бидат недостапни. Оттаму, поврзувањето со група на луѓе со цел разменување на податоци претставува проблем во вакви ситуации. Погоре споменатите проблеми може да бидат решени со воспоставување на ad-hoc мрежа помеѓу два или повеќе паметни телефони со користење на Wi-Fi мрежата на телефоните Цел на трудот Главната цел на овој труд е да се развие решение со кое паметните телефони ќе можат да комуницираат (испраќање на пораки и слики) меѓусебно во непосредна близина 2 без потреба од користење на 3G или пристапни точки. Целта е постигната со имплементирање на оваа технологија и креирање на прототип апликација поврзана со решавањето на овој проблем. Прототип апликацијата треба да дозволува трансфер на фотографии и испраќање на пораки помеѓу уреди кои се во непосредна близина Ограничувања Овој труд се фокусира на развојот на ad-hoc мрежа и воспоставување на ваквата конекција само помеѓу Android OS уреди, кои имаат оперативен систем ICS 4.0 или 2 Wi-Fi сертифицираните Wi-Fi Direct уреди работат како сите Wi-Fi уреди, со опсег од околу 200 метри. (Wi-Fi Alliance) 7

8 понови верзии. Развојот на прототип апликација започна со ICS и заврши со JB 4.1. Теоретски, работата не е ограничена на само еден програмски јазик, но како и да е, поради тоа што WiFi Direct технологијата првично беше достапна на паметни телефони кои работат на Android, трудот е комплетно изработен во програмскиот јазик Java. Сепак, дизајнот на апликацијата може да се користи во други платформи и во други програмски јазици. Понатаму, оваа работа е извршена и евалуирана како прототип апликација и поради тоа претставува основа за градење на покомплетни производи за идните програмери. Во овој случај, постојат неколку ограничувања и недостатоци во однос на функционалност Опис и структура Овој труд започнува со собирање на потребните информации за можните технологии. Во продолжение, целокупно објаснување е дадено за соодветната и избраната технологија. Структурата на извештајот се состои од четири делови, од кој првиот дел дава кратки информации за прегледот на трудот. Вториот дел се состои генерално од теорија и опис на методи кои обезбедуваат соодветни предзнаења за соодветната технологија. Алатките и структурата на решението претставуваат завршен дел. Третиот дел се состои од генерален преглед на софтверската архитектура. Исто така, во овој дел се покриени и решението и имплементациските идеи. Четвртиот дел претставува дефиниција на одговорите на проблемите. 8

9 2. Теорија Со цел запознавање на методот и технологијата, потребно е да се разберат основите на целиот систем. Најпрво треба да се започни со објаснување на позадината како и сегашната технологија, особено информациите кои се однесуваат на последниот протокол наречен WiFi Direct. Во наредниот дел, претставени се мотивацијата и алатките. Прегледот на Android Operating System и неговите сегашни изданија се опишани со цел да се обезбеди вистинска позадина. За оваа цел презентирани се: алатката за развој, Eclipse, и колекцијата на API библиотеки, Android SDK Позадина Овој проект има за цел да овозможи конекција помеѓу два уреди без потреба од 3G или точка за пристап. Во тој поглед, ова ќе овозможи едноставен пристап кој може да биде спореден со локална мрежа (LAN) во персоналните компјутери. LAN е компјутерска мрежа која овозможува интер-конекција помеѓу компјутери во ограничен простор како во домови, училишта, компјутерски лаборатории, или зграда со канцеларии кои користат network media. LAN нуди висока стапка на трансфер во помали простори каде не е потребна интернет услуга. Иако тоа нуди многу предности, исто така има и недостатоци. Најочигледен недостаток е сигурно неговата зависност од физичка конекција т.е. мрежен кабел. Со цел да се реши ова прашање, воведена е WLAN технологијата во деведесетите години на 20 иот век. WLAN едноставно поврзува два или повеќе уреди преку wireless метод преку протоколи. Таа обично обезбедува интернет конекција и му дозволува на уредот да се конектира на точка за пристап. Видовите на WLAN може да бидат категоризирани во три сегменти: Bridge, wireless дистрибутивен систем и peer-to-peer. Земајќи ги предвид механизмите на bridge и wireless дистрибутивниот систем, овие не се поврзани со системот за кој се интересира ова истражување. Од таа причина, овој труд се потпира на peer-to-peer. 9

10 Од перспектива на wireless-от и неговата корелација со основниот интерес на проектите, peer-to-peer системот сосема се поклопува со целите на ова истражување, како што се: 1. Конекција меѓу мобилни уреди 2. без потреба на 3G или пристап до wireless. Како резултат на тоа, следните делови ги опишуваат постоечките пристапи и обезбедуваат истражување на новата генерација на технологии особено кај паметните телефони и мобилните уреди. Исто така остатокот од оваа глава најмногу се потпира на peer-to-peer системот Peer to peer пристап Терминот peer-to-peer се однесува на концептот со кој во мрежа од peers кои користат одредени информации и комуникациски системи, две или повеќе индивидуи можат спонтано да соработуваат без потреба од централна координација. Спротивно на client-server мрежите, P2P мрежите ветуваат подобрена приспособливост, помала цена, самоорганизирана и децентрализирана координација на претходно ограничените ресурси, поголема толеранција на грешки и подобра поддршка за градење на ad-hoc мрежи. Сликата 2.1 ја визуелизира најосновната peer-to-peer мрежа каде секој компјутер е поврзан со друг. 10

11 Слика 2.1 Peer-to-peer мрежа Земајќи го предвид овoј опис, друг концепт зазема место кој дозволува сите wireless уреди директно да комуницираат еден со друг. Овој концепт е наречен Wireless ad-hoc мрежа. Wireless ad-hoc мрежата е децентрализиран тип на wireless мрежа. Оваа мрежа дозволува сите wireless уреди да ја откриваат и да комуницираат во peer-to-peer стил без вклучување на централни пристапни точки. Програмерите започнаа да работат на воспоставување успешна конекција меѓу wireless уредите, особено мoбилните телефони. Првите пристапи беа едноставно за манипулирање со WiFi протоколот на уредите и нивно пренасочување на basic WiFi hotspot. Од оваа гледна точка, воведен е tethering. Во основа, tethering означува конектирање на еден уред со друг. Оваа конекција може да биде направена преку многу различни методи како Bluetooth, физичка конекција со примена на кабел (пример преку USB) или WLAN. Во контекст на wireless комуникацијата, tethering дозволува споделување на податочната конекција на уредот со други уреди за да се обезбедат мрежни услуги. Згора на тоа, ако tethering е направен од WiFi, уредот може да делува како wireless access point и да обезбеди интернет конекција (само ако има своја сопствена мрежна услуга). Оттука, ова му дозволува на уредот да ги прифати конекциите кои доаѓаат од други wireless уреди. Tethering преку WiFi, исто така познат 11

12 како Personal Hotspot, е достапен на ios почнувајќи од ios (или понов) на iphone 4, 4S и ipad (3-та генерација), одредени Windows Phone 7 уреди и одредени Android phones. (Geek.com, 2010)(Wikipedia, 2012) Како и да е, некои провајдери на услуги не му дозволуваат на корисникот да користи tethering услуга. Ова може да се постигне со рутирање на паметниот телефон на Android уреди или jailbreaking на ios уреди. Овие методи му овозможуваат на корисникот да стане superuser и му даваат екстра привилегии да ги смени или да манипулира со основните подесувања на уредот. Моментално, апликации како joikusoft, AllJoyn и The Serval Project обезбедуваат tethering услуги и покрај нивните недостатоци WiFi Direct WiFi Direct им овозможува на уредите да направат директни конекции еден со друг, брзо и погодно да направат работи како print, sync и share content кога access point-от или рутерот се недостапни (Wi-Fi Alliance, 2009). Со WiFi Direct, мрежни станици можат да комуницираат peer-to-peer. Во WiFi P2P групите, уредите делуваат како access point или како клиент. Уредот кој важи како access point, e определен како group owner. Постојат два пристапи со цел да се определи group owner. Првиот пристап е едноставна мануелна селекција од страна на корисникот. Вториот пристап е поверен каде треба да постои преговарање помеѓу уредите. Преговарањето е изведено од едноставна intent вредност. Оваа intent вредност зависи од разни услови како power состојба, јачина на добиениот сигнал или статус на уредот, независно дали е веќе group owner или не. Уредот кој има повисока intent вредност е прифатен како group owner додека другиот станува клиент. WiFi Direct уредите ги поддржуваат истите профили на перформанси како обичните Wi-Fi уреди. Тие оперираат со податочни стапки (data rates) од околу 25 Mbps. За уредите базирани на a или g, data rates ќе бидат околу 54 Mbps и покривен опсег од околу 100 метри. Неговата мрежа може да биде one-to-one или оneto-many и исто така му овозможува на корисникот да се поврзи со вообичаена мрежа додека е конектиран на WiFi Direct мрежа во истото време. Како резултат на тоа, 12

13 корисникот може симултано да користи интернет преку неговиот service provider и P2P мрежата. Во смисла на стигнување до интернет, WiFi Direct мрежата може да споделува интернет конекција со други уреди во нивните WiFi Direct мрежи. Во овој случај, access point-от односно рутерот сеуште ќе обезбедува интернет конекција за уредот. Друга карактеристика на WiFi Direct e неговиот опсег на фреквенција. Тој работи и на 2.4 GHz и 5GHz. Конечно, WiFi Direct им дава на уредите способност за откривање на други уреди и лимитирани информации за услугите на уредите пред поврзувањето (и пред да се има IP адреса). Ваквото пред-поврзувачко откривање го надградува искуството на корисникот каде корисниците ќе знаат дали посакуваната услуга (на пр. печатење) ќе биде достапна на WiFi Direct мрежата пред поврзувањето. (WiFi Alliance, 2009). Иако безбедноста не е прашање во ова истражување, потребно е да се спомнат недостатоците на WiFi Direct во однос на безбедноста. Jim Rapoza, коментатор во InformationWeek вели: Се разбира, постојат потенцијални проблеми. WiFi Direct користи WPA2 за да ја осигура конекцијата, што е доволно сигурно но не и несовладливо. Плус, како уредите се поврзуваат еден со друг и дали постојат мерки за превенција да не може непосакувани личности и уреди да се поврзат на твојот WiFi Direct уред ќе биде големо прашање. После се, ти веројатно не сакаш некој на аеродром да може да ги преземи сите слики од твојот одмор од твојата дигитална камера. (InformationWeek, 2010) Познато е дека WiFi Direct e обезбеден со WPA2, но работи одделно од безбедносниот систем и е независен од било која инфракструктурна мрежа. Тоа значи, не е потребно инфраструктурната мрежа да има акредитиви за да се поврзи на WiFi Direct мрежата. Како дополнување на сите негови карактеристики, WiFi Direct АPI на Android платформата им дава ефективна развивачка способност на сите развивачи/програмери. Почнувајќи со ICS, Google воведе нов API(level 14) кој обезбедува развивање на WiFi Direct апликациите. Користејќи го API заедно со други 13

14 Android APIs, едниот може да открие peer, да се поврзи на други уреди и да комуницира преку брза конекција преку подолги дистанци отколку Bluetooth конекцијата (Android developer, 2011). Има неколку важни пакети за креирање WiFi Direct апликации, како што се: 1. android.net.wifi.p2p - Обезбедува класи за да се креира peer-to-peer (P2P) конекција со WiFi Direct. 2. java.net - Содржи библиотеки кои одржуваат socket конекција 3. java.io - Пакети за влезни/излезни операции Преглед на API Основните операции се најчесто раководени од класа именувана како WifiP2pManager во android.ner.wifi.p2p пакетот. Оваа класа обезбедува P2P конективност како и откривање, конекција помеѓу уредите и пребарување во листата на peers. Други класи се: WifiP2pDevice - Го претставува Wi-Fi P2P уредот. WifiP2pDeviceList - Ја претставува Wi-Fi P2P листата на уреди. WifiP2pGroup - Ја претставува Wi-Fi P2P групата. WifiP2pInfo - Ги претставува информациите на поврзувањето за Wi-Fi P2P групата. WifiP2pConfig - Ја претставува Wi-Fi P2P конфигурацијата за подесување на конекција. Додатно на ова, WiFi Direct API побарува некои дозволи со цел да се воспостави конекција. Дозволите мора да бидат конфигурирани во Android manifest фајлот. Овие дозволи се: ACCESS_WIFI_STATE CHANGE_WIFI_STATE CHANGE_NETWORK_STATE ACCESS_NETWORK_STATE INTERNET 14

15 2.5. Алатки Основната цел на ова истражување е да креира едноставен и функционален систем без дополнителна манипулација во мобилниот уред. Од оваа гледна точка, Android OS беше избран бидејќи понудува погодни APIs. Иако Bada OS исто така воведија нивни сопствени API за WiFi Direct, Android OS има посилна рака земајќи ја предвид неговата популарност и фактот дека повеќето од паметните телефони на пазарот користат Android OS. Eclipse е најсоодветна опција за развојна околина поради неговиот придонес за развојот на Android, и уште поважно големата Android-поддршка, избирајќи го за официјална развојна алатка Android OS Како што е општо познато, Android е Linux базиран оперативен систем креиран и управуван од Google. Најголемата причина за неговиот развој е за на мобилните уреди да им донесе едноставност, функционалност и ефикасност на пазарот. Android е отворен изворен проект и има голем број на развивачи кои пишуваат апликации. Развивачите пишуваат апликации првенствено во Јava (Stephen Shankland, 2007) и апликациите можат да бидат преземени најмногу преку официјалната онлајн продавница наречена Google Play. Моментално, има преку достапни апликации на Google Play и 50 милијарди преземени апликации од оваа продавница (phonearena, 2013) Преглед Android работи на Linux со библиотеки напишани во C. Dan Morrill, Android инженер во Google објаснува дека: Android не е спецификација, или дистрибуција во традиционална смисла на Linux. Не е колекција на заменливи компоненти. Android е парче софтвер кој го пренесувате на некој уред. (Dan Morrill, 2010) Android користи Dalvik Virtual Machine за извршување на Dalvik Executable код од Java bytecode. Сите стандардни APIs се дефинирани во класи, интерфејси, методи и 15

16 објекти. Во однос на хардверската платформа, ARM архитектурата е главна платформа за Android. Како и да е, исто така постои поддршка за x86 архитектурата Архитектура Android работи на Linux под Dalvik VM. Dalvik има just-in-time compiler каде бајт кодот зачуван во меморијата се компајлира во машински код. Бајт кодот може да биде дефиниран како intermediate level. JIT компајлерот го чита бајт-кодот во многу делови и го компајлира динамично со цел да ја извршува програмата побрзо. Java перформансите проверуваат различни делови од кодот и така кодот е компајлиран само пред да биде извршен. Кога еднаш ќе биде компајлиран, се зачувува во кеш меморијата и е спремен за понатамошни употреби. Во суштина, Android системот има четири различни слоеви. Application слојот е најгорниот слој каде корисникот комуницира со уредот. Слика 2.2 Дијаграм на Android архитектура (Android, 2010) 16

17 Следниот слој, application framework се состои од услуги и библиотеки. Тука, аpplications и framework кодовите се извршуваат исто така во Dalvik. Libraries слојот вклучува нативни библиотеки, daemons и услуги кои се напишани во C/C++. Последниот слој, Linux kernel вклучува драјвери за многу намени, мрежно поврзување, пристап до системски податоци и протокол за интерна комуникација помеѓу процеси. Сликата 2.2 го визуелизира прегледот на архитектурата на Android системот на различни нивоа. Зелените предмети го потенцираат C/C++, а сините предмети ја потенцираат Java која работи во Dalvik Изданија и Ice Cream Sandwich (ICS) 4.0 Историјата на Android верзијата започна кон крајот на 2007 година. Првите изданија на Android како Android 1.0 и Android 1.1 беа развиени во периодот помеѓу Ноември 2008 и Февруари Секој update воглавно ги поправа грешките и додава нови карактеристики. Android има 12 различни верзии досега и тие се именувани како Alpha (1.0), Beta (1.1), Cupcake (1.5), Donut (1.6), Eclair ( ), Froyo ( ), Gingerbread ( ), Honeycomb ( ), Ice Cream Sandwich ( ), Jelly Bean ( ), KitKat ( ) и Lollipop 3 (5.0). Honeycomb беше издаден како првиот tablet-only update. Ice Cream Sandwich верзијата на Android, стана достапна во Октомври Со ова издание, исто така познато како API 15, Android ja водеде WiFi Direct поддршката заедно со други нови карактеристики. Иако имаше разни прашања, WiFi Direct карактеристиката ја понуди можноста за развивање на една од првите апликации во ова поле. Најголем недостаток беше воспоставувањето на конекција кога корисникот одново ја започнува. Тоа предизвикуваше грешка и понекогаш исклучување на уредот Jelly Bean (JB) 4.1 Во Јуни, 2012, Google го најави тогашниот најнов Android OS наречен Jelly Bean. Jelly Bean беше update со подобрен кориснички интерфејс и перформанси. Како дополнение на неговите карактеристики, Google конечно ги реши баговите со неговата WiFi Direct карактеристика, благодарение на новата API 16. Јасно е дека претходните 3 Најавен за 3 ноември,

18 проблеми се сеуште разни недостатоци кои треба да бидат прегледани, и во однос на функционалноста и во однос на перформансите Eclipse и Android SDK Eclipse е интегрирана развојна средина (IDE) која се користи за развивање на Java апликации. Напишана е во Java и нуди разни plug-ins со цел да поддржи други програмски јазици како C, C++, Perl, PHP, R, Ruby. Аndroid обезбедува plug-in за Android развој наречен Android Development Tool (ADT). Дизајниран е со цел да овозможи креирање на Android апликации. Му овозможува на корисникот да воспоставува нови Android проекти, да креира и дебагира апликации и да експортира APKs Генерална структура на решението Проектот се состои од 16 класи. Генералниот концепт е првично воспоставување на успешна конекција помеѓу уредите, а потоа со помош на java сокети испраќање на текстуални пораки и споделување на фотографии. Првиот дел кој се однесува на воспоставување на конекција помеѓу уредите е составен од следните главни делови: Методи кои овозможуваат откривање, праќање барања до peers и конектирање со peers. Во рамките на наведениот проект, сместени се во класата WiFiDirectActivity. Слушачи на настани кои дозволуваат да бидеме известени за успехот или неуспехот на повикот на методите во класата WiFiDirectActivity. При повик на методите сместени во оваа класа, секој метод прима специфичен слушач на настани кој се праќа како параметар. Intents кои не известуваат за специфични настани детектирани од страна на Wi- Fi P2P работната околина, како што се прекин на конекции или новооткриени peers. Овие три главни API компоненти се применуваат заедно. Односно, ActionListener се применува за повикување методи за откривање peers уреди, при што потоа добиваме соодветно известување преку методите ActionListener.onSuccess() и 18

19 ActionListener.onFailure(). При детектирање на промена на листат на peers, исто така се пренесува WIFI_P2P_PEERS_CHANGED_ACTION intent. Класата WiFiDirectActivity обезбедува методи кои дозволуваат комуникација со Wi-Fi хардверот на уредот со цел откривање и конектирање со peers. Достапни се следните акции: МЕТОД ОПИС INITIALIZE() CONNECT() CANCELCONNECT() REQUESTCONNECTINFO() CREATEGROUP() REMOVEGROUP() REQUESTGROUPINFO() DISCOVERPEERS() REQUESTPEERS() Ја регистрира апликацијата со Wi-Fi работната околина. Овој метод мора да биде повика пред да се повика било кој друг Wi- Fi P2P метод. Започнува peer-to-peer конекција со уред со специфицираната конфигурација. Одложува било какви peer-to-peer групни спогодби кои се одвиваат. Бара информации за конекцијата на уредот. Креира peer-to-peer група со моменталниот уред како сопственик на групата. Ја отстранува моменталната peer-to-peer група. Бара информации за peer-to-peer група. Го иницира откривањето на peer уреди. Ја бара моменталната листа на откриени peers. Табела. Wi-Fi P2P методи Наведените методи дозволуваат праќање на слушач на настани, со цел Wi-Fi P2P работната околина да може да ја известува activity класата за статусот на некој повик. Во продолжение следува опис на достапните интерфејси и соодветни повици на методи кои ги користат слушачите на настани. 19

20 LISTENER ИНТЕРФЕЈС СООДВЕТНИ АКЦИИ WIFIP2PMANAGER.ACTIONLISTENER WIFIP2PMANAGER.CHANNELLISTENER WIFIP2PMANAGER.CONNECTIONINFOL ISTENER WIFIP2PMANAGER.GROUPINFOLISTEN ER connect(), cancelconnect(), creategroup(),removegro up(), and discoverpeers() initialize() requestconnectinfo() requestgroupinfo() WIFIP2PMANAGER.PEERLISTLISTENER requestpeers() Табела. Wi-Fi P2P Listeners Wi-Fi P2P APIs дефинира intents кои се праќаат кога се случува одреден Wi-Fi P2P настан, како откривање на нов peer или промена на состојбата на Wi-Fi. Во рамките на апликацијата овие intents може да се примаат преку креирање broadcast receiver кој се справува со истите. INTENT ОПИС WIFI_P2P_CONNECTION_CHANGED_ACTION WIFI_P2P_PEERS_CHANGED_ACTION WIFI_P2P_STATE_CHANGED_ACTION Се емитува при промена на Wi-Fi состојбата на уредот. Се емитува при повик на методот discoverpeers(). Притоа вообичаено е да се повика методот requestpeers() за добивање ажурирана листа од peers. Се емитува кога Wi-Fi P2P опцијата на уредот се овозможува или оневозможува. WIFI_P2P_THIS_DEVICE_CHANGED_ACTION Се емитува кога се менуваат некои детали за уредот, како на пример неговото име. Табела. Wi-Fi P2P Intents 20

21 Вториот дел кој се однесува на испраќање на податоци е составен од следните делови: 1. Креирање серверски сокет. Овој сокет чека конекција од клиент на специфициран порт и блокира додека тоа се случува, па оваа акција се изведува во позадински thread. 2. Креирање клиентски сокет. Клиентот ги користи IP адресата и портот на сервер сокетот за да се конектира со серверскиот уред. 3. Праќање податоци од клиентот до серверот. Кога клиентскиот сокет успешно се конектира со серверскиот, може да се праќаат податоци од клиентот до серверот преку низи од бајти. 4. Серверскиот сокет чека за клиентска конекција (со методот accept()). Овој повик исто така блокира се до конектирањето на клиентот, па добро е да се повикува во друг thread. Откако ќе се воспостави конекцијата, серверскиот уред може да прима податоци од клиентот. Во рамките на оваа акција, треба да влегуваат и акции од типот на зачувување на фајлот или негово презентирање на корисникот. 3. Дизајн & Имплементација Оваа глава ги опишува карактеристиките, фрагментите, класите, архитектурата и самите апликации обезбедувајќи потребни информации за најглавните компоненти. Најпрво, општите информации се дадени заедно со компонентите и класите на проектот Преглед Апликацијата започнува со инсталирање на broadcast receivers. Овие примачи ги контролираат промените во P2P peers, P2P конекцијата, P2P состојбата и P2P статусот на host уредот. Ова е потребно за да се одржи контролата на сесијата за време или пред конекцијата. Деталниот опис кој се однесува на broadcast receivers се состои во овој дел. Следно, UI и интеракцијата на корисникот ги местат сите потребни селекции. 21

22 Следејќи го процесот во активните класи и намерата на broadcast receiver, основните делови земаат место таму каде управуваат со водењето и методите и во наведувањето на peers и во воспоставувањето конекција. Основните операции на целиот систем се поделени во две класи, именувани како DeviceDetailFragment.java и DeviceListFragment.java. По сите преговори, peer discoveries и connection set ups, услужните класи ги сортираат управувачките податоци и карактеристиките на трансферот на пораки и фотографии. Овие услуги се повикани кога конекцијата е воспоставена меѓу уредите и престанала после дисконектираната операција. Па, тие работат во позадината и едноставно чекаат за достапна конекција. Откривањето на уреди и податочниот трансфер се прикажани на Слика 3.1. И двата уреди може да го повикаат Discover Peer методот, а оној кој го повикува е назначен како клиент додека другиот уред како сервер. Кога клиентот и серверот ќе бидат назначени, клиентот бара конекција преку методот Request Connection. Методот праќа барање до друг peer server, и чека одговор. Ако резултатот е True peer-от автоматски се поврзува на серверот и е подготвен за испраќање на пораки или за споделување на слики. 22

23 Слика 3.1 Use Case Diagram Among Peers 3.2. Компоненти Со цел да се обезбеди детален поглед што се однесува на механизмот на системот, проектот може да биде групиран во три сегменти. Тие се: BroadcastReceiver, Fragments и Asynctask & Services Broadcast Receiver Broadcast Receiver му овозможува на корисникот да прими intent broadcast од Аndroid системот, со што апликацијата може да одговори на настани за кои е заинтересиран корисникот (Android, 2012). An intent e апстрактен поим за операција која ќе биде извршена. Неговата најзначајна употреба е стартување на активностите и може да се смета како лепило меѓу активностите. Тоа е всушност пасивна структура на податоци која чува апстрактен опис на акција за да биде извршена (Android, 2012). Со користењето на broadcast receiver, корисникот може да извршува операции кога тоа е примено од страна на неговиот onreceive() метод. Во рамките на овој проект WifiDirectBroadcastReceiver.java класата ја наследува класата BroadcastReceiver и нејзината главна намена е известување на важни WiFi p2p 23

24 настани. Ако постои важен настан оваа класа проследува порака до сервисот за конектирање (ConnectionService.java) кој ги процесира сите WiFi p2p intent-и добиени од BroadcastReceiver-от. Листата на акции и цели процеси се покриени подолу во оваа глава Fragments Фрагментите се справуваат со основните операции во овој проект како наведување peers, воспоставување конекција, отворање sockets, копирање документ, playing audio, прикажување детали за/или peers. Тие се одговорни за управување со цела сесија и конфигурација на операциите. Фрагментите исто така вклучуваат асинхронизирани методи во однос на документот како и socket конекцијата. Фрагмент е дел од корисничкиот интерфејс на апликацијата или однесување што може да биде сместено во Activity и претставува одредена операција или интерфејс кој работи во рамки на поголем Activity. Fragment-oт е блиско поврзан со Activity и не може да се искористи сам по себе. Иако Fragment-от дефинира свој сопствен животен круг, тој негов круг е зависен од неговата активност: ако активноста е запрена, ниеден fragment од таа активност не може да биде стартуван; кога активноста е уништена, сите fragment-и ќе бидат уништени (Android, 2012). Секако, views можат исто така да се искористат за оваа цел. Како и да е, разумно е тука да се користат fragment-и за некои причини. Пред се, фрагментите се ефективни во креирање апликации за разни уреди како таблети и телефони. Ако развивачот посакува да ги раздели views на различни уреди со различни ориентации и да ги покаже во две активности или да ја прикаже целата содржина како една на друг уред, користењето на фрагменти дава висока флексибилност. Со други зборови, фрагментите може да делуваат како мали активности каде може да има неколку од нив на еден екран. Згора на тоа, овие multiple активности можат да соработуваат во смисла на комуницирање на еден со друг кога тие се видливи. Благодарение на неговиот back stack management, притискањето на копчето back динамички ги отстранува додадените фрагменти пред активноста да биде завршена. 24

25 За крај, тој може да ги има сите видови на услуги, операции како AsyncTask, listeners, пристап до фајлови и до база на податоци. Придонесот на фрагментите за овој проект е подетално објаснет во Делот AsyncTask & Услуги Конекцијата и операциите на трансфер на податоци се направени од DeviceDetailFragment.java класата преку методите: public static class FileServerAsyncTask extends AsyncTask<Void, Void, String> {... AsyncTask процесот обезбедува едноставен начин за одржување на процесот во позадина со работа на други детали како threads и message loops. Неговите callback методи му помагаат на корисникот во распоредувањето на задачи и надоградување на UI. Кога задачата е извршена, тоа оди во 4 чекори. Како и да е, со цел да се искористи AsyncTask class, најмалку еден метод, doinbackground(), мора да биде искористен. Методите се: doinbackground() Овој дел се извршува во посебен thread од корисничкиот интерфејс и го содржи целиот код кој апликацијата го изведува. Се повикува после onpreexecute() и пред onpostexecute(). onpreexecute() Се повикува пред thread-от да започне. Се користи за конфигурирање на задача(task) која треба да биде извршена предвреме. onprogressupdate() Му дозволува на doinbackground() методот да проследи податоци до UI thread-от. onpostexecute() Се извршува после background thread-от. Добива резултати од doinbackground() методот. Во овој проект AsyncTasks се повикани на страната на серверот со помош на методот public void onconnectioninfoavailable(final WifiP2pInfo info) {... во DeviceDetailFragment.java класата откако ќе биде зададен сопственик на групата. Сите задачи тогаш одат во позадински процес каде чекаат за поврзување од сервисите. 25

26 Сервисите се изградени за отворање, поврзување со клиентски сокет и воспоставување конекција помеѓу сервер страните. Кога конекцијата е воспоставена, фајловите и сликите се снимени и копирани во stream каде што се случува трансферот на податоци. Поради неговите природни карактеристики, работи во позадина и чека за возможна трансфер операција. Тие се повикуваат веднаш штом е притиснато соодветното копче. Сервисите влечат вредности од статична класа наречена FileTransferService.java преку дополнителни податоци на intent-от. Тие во главно вклучуваат FileTransferService.EXTRAS_GROUP_OWNER_ADDRESS и FileTransferService.EXTRAS_GROUP_OWNER_PORT. Сервисите и AsyncTasks се користат во учењето заради посебна причина. По дефиниција сервисот се користи доколку е потребно извршување на долги процеси во позадина. Испраќањето на пораки и споделувањето на фотографии се одржува преку процесот каде не се блокира и гарантира дека операцијата нема да биде прекината. Сервисите најдобро доаѓаат до корист кога има сервиси за критични операции како споделување на датотеки или префрлување на податоци. Од друга страна AsyncTasks обезбедува соодветен начин за одржување на процеси во позадина без ракување со детали на пониско ниво. Неговиот callback метод помага за да се закажат задачи и да се направи измена на корисничкиот интерфејс. Поради тоа што испраќањето на пораки и пренесувањето на фотографии е суштински поврзано со корисничкиот интерфејс, користењето на AsyncTasks е најдобро решение Имплементација Проектот е дизајниран во четири делови каде секој дел е одговорен за различни аспекти. Во суштина главната активност се справува со показни методи и пред конфигурациски процеси за WiFi Direct API како peer откривањето, поврзувањето/исклучувањето и статусот на WiFi Direct дали е приклучен или не. Исто така содржи стандардни Android циклусни методи пр. onpause(), onresume() and ondestroy(). Особено, ondestroy() и onkeydown() функциите управуваат со после конфигурациониот процес со цел уредот да се подготви за нормално користење. 26

27 Broadcast Receiver WiFiDirectBroadcastReceiver.java класата проверува за intent-и кои го интересираат корисникот во onreceive() методот. Intent-ите кои се одбиени во оваа класа се накратко објаснети во претходниот дел. Оваа класа претставува имплементација на типичен broadcast receiver кој ги извршува потребните акции кога еден intent е примен. public class WiFiDirectBroadcastReceiver extends BroadcastReceiver { private static final String TAG = public void onreceive(context context, Intent intent) { String action = intent.getaction(); Intent serviceintent = new Intent(context,ConnectionService.class); serviceintent.setaction(action); serviceintent.putextras(intent); context.startservice(serviceintent); WiFiDirectApp класа Класата WiFiDirectApp ја наследува класата Application (основна класа за одржување глобална состојба на апликацијата). Главната намена на WiFiDirectApp класата е проверка дали p2p е овозможен на уредот, креирање на socket-и, поврзување на уредите и пополнување на JSON низа со испратени пораки. Во продолжение следува опис на некои методи и опис на примена на некои променливи. boolean mp2pconnected = false; Променлива која добива состојба true или false, во зависност од тоа дали е воспоставена конекција или не. WifiP2pInfo mp2pinfo = null; Променлива која се подесува кога се достапни информации за конекцијата, а се ресетира при WIFI_P2P_CONNECTION_CHANGED_ACTION. 27

28 List<WifiP2pDevice> mpeers = new ArrayList<WifiP2pDevice>(); Листа која се ажурира при појавување на нов peer. JSONArray mmessagearray = new JSONArray(); Листа во која се сместуваат пораките помеѓу peers уредите. Ограничена е на последните 50 пораки. Генералната намена на методот isp2penabled() e одредување дали е достапен нов p2p уред. public boolean isp2penabled() { String state = AppPreferences.getStringFromPref(this, AppPreferences.PREF_NAME, AppPreferences.P2P_ENABLED); if ( state!= null && "1".equals(state.trim())){ return true; return false; Ако е достапна p2p конекција, сопственикот на групата започнува server socket channel со помош на методот startsocketserver(). public void startsocketserver() { Message msg = ConnectionService.getInstance().getHandler().obtainMessage(); msg.what = MSG_STARTSERVER; ConnectionService.getInstance().getHandler().sendMessage(msg); Ако е достапна p2p конекција, членот кој не е сопственик на групата(клиентот) започнува socket channel за конектирање со сопственикот на групата(group owner). За оваа цел се користи методот startsocketclient(string hostname). public void startsocketclient(string hostname) { Log.d(TAG, "startsocketclient : client connect to group owner : " + hostname); 28

29 Message msg = ConnectionService.getInstance().getHandler().obtainMessage(); msg.what = MSG_STARTCLIENT; msg.obj = hostname; ConnectionService.getInstance().getHandler().sendMessage(msg); Методот getconnectedpeer() проверува дали има конектиран peer. public WifiP2pDevice getconnectedpeer(){ WifiP2pDevice peer = null; for(wifip2pdevice d : mpeers ){ PTPLog.d(TAG, "getconnectedpeer : device : " + d.devicename + " status: " + ConnectionService.getDeviceStatus(d.status)); if( d.status == WifiP2pDevice.CONNECTED){ peer = d; return peer; Методот shiftinsertmessage(string jsonmsg) ја внесува JSON String пораката во JSON низа. При додавање на новите пораки овој метод ги отстранува последните 10 пораки во низата. public void shiftinsertmessage(string jsonmsg){ JSONObject jsonobj = JSONUtils.getJsonObject(jsonmsg); mmessagearray.put(jsonobj); mmessagearray = JSONUtils.truncateJSONArray(mMessageArray, 10); Методот clearmessages() ги отстранува сите пораки, со креирање на празна JSON низа. public void clearmessages() { mmessagearray = new JSONArray(); ChatFragment класа Класата ChatFragment ја наследува класата ListFragment (фрагмент(дел) кој прикажува листа од елементи преку поврзување со извор на податоци, како на пример 29

30 низа или Cursor). Го претставува основниот дел за испраќање на пораки вгнезден во MainActivity. Во продолжение следува опис на некои методи и опис на примена на некои променливи. Променлива/листа која ги содржи chat пораките. private ArrayList<MessageRow> mmessagelist = null; Методот newinstance(activity activity, String groupowneraddr, String msg) се користи за креирање на fragment објект. public static ChatFragment newinstance(activity activity, String groupowneraddr, String msg) { ChatFragment f = new ChatFragment(); mactivity = (MainActivity)activity; Bundle args = new Bundle(); args.putstring("groupowneraddr", groupowneraddr); args.putstring("initmsg", msg); f.setarguments(args); Log.d(TAG, "newinstance :" + groupowneraddr + " : " + msg); return f; Callback методот oncreate() во овој дел се повикува после повикувањето на методот newinstance(activity activity, String groupowneraddr, String msg). public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mapp = (WiFiDirectApp)mActivity.getApplication(); setretaininstance(true); Податоците кои се сместуваат во рамките на Bundle-от outstate во рамки на onsaveinstancestate методот ќе бидат достапни во Bundle-oт кој му се доделува на методот oncreate(bundle savedinstancestate). Овој метод се повикува само ако активноста е уништена од страна на Android платформата. Доколку корисникот ја затвори активноста, овој метод не се повикува. public void onsaveinstancestate(bundle outstate){ super.onsaveinstancestate(outstate); 30

31 outstate.putparcelablearraylist("msg_list", mmessagelist); Log.d(TAG, "onsaveinstancestate. " + mmessagelist.get(0).mmsg); Во рамки на методот oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate), без разлика дали фрагментот е деклариран во рамките на main activity layout, или се додава динамички, потребно е повикување(inflate) на fragment погледот. Овој метод го пополнува fragment layout-от, без разлика што претставува негов container. Дополнително содржи onclick(view v) метод доделен на копче Send чија улога е испраќање на текстуалната порака до серверот. На крај од методот се сетира ListAdapter за пополнување на листата со пораки. public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { View contentview = inflater.inflate(r.layout.chat_frag, container, false); final EditText inputedittext = (EditText)contentView.findViewById(R.id.edit_input); final Button sendbtn = (Button)contentView.findViewById(R.id.btn_send); sendbtn.setonclicklistener(new View.OnClickListener() public void onclick(view v) { String inputmsg = inputedittext.gettext().tostring(); inputedittext.settext(""); InputMethodManager imm = (InputMethodManager)mActivity.getSystemService(Context.INPUT_METHOD_ SERVICE); imm.hidesoftinputfromwindow(inputedittext.getwindowtoken(), 0); MessageRow row = new MessageRow(mApp.mDeviceName, inputmsg, null); appendchatmessage(row); String jsonmsg = mapp.shiftinsertmessage(row); PTPLog.d(TAG, "sendbutton clicked: sendout data : " + jsonmsg); mactivity.pushoutmessage(jsonmsg); ); String groupowneraddr = getarguments().getstring("groupowneraddr"); String msg = getarguments().getstring("initmsg"); 31

32 PTPLog.d(TAG, "oncreateview : fragment view created: msg :" + msg); if( savedinstancestate!= null ){ mmessagelist = savedinstancestate.getparcelablearraylist("msg_list"); Log.d(TAG, "oncreate : savedinstancestate: " + mmessagelist.get(0).mmsg); else if( mmessagelist == null ){ mmessagelist = new ArrayList<MessageRow>(); jsonarraytolist(mapp.mmessagearray, mmessagelist); Log.d(TAG, "oncreate : jsonarraytolist : " + mmessagelist.size() ); else { Log.d(TAG, "oncreate : setretaininstance good : "); madapter = new ChatMessageAdapter(mActivity, mmessagelist); setlistadapter(madapter); PTPLog.d(TAG, "oncreate chat msg fragment: devicename : " + mapp.mdevicename + " : " + getarguments().getstring("initmsg")); return contentview; Методот appendchatmessage(messagerow row) се користи за додавање на текстуалната порака на листата со пораки во формат испраќач:порака. После додавањето на пораката се известуваат прикачениот observer и погледите да се рефрешираат. public void appendchatmessage(messagerow row) { Log.d(TAG, "appendchatmessage: chat fragment append msg: " + row.msender + " ; " + row.mmsg); mmessagelist.add(row); getlistview().smoothscrolltoposition(mmessagelist.size()-1); madapter.notifydatasetchanged(); return; Во парцијалната класа ChatMessageAdapter која наследува ArrayAdapter<MessageRow>, e дефиниран код кој е одговорен за тоа како ќе се прикажуваат податоците во рамките на list fragment list view-то. final class ChatMessageAdapter extends ArrayAdapter<MessageRow> { 32

33 public static final int VIEW_TYPE_MYMSG = 0; public static final int VIEW_TYPE_INMSG = 1; public static final int VIEW_TYPE_COUNT = 2; Променливата VIEW_TYPE_COUNT се користи за пратените или сите дојдовни пораки. private LayoutInflater minflater; public ChatMessageAdapter(Context context, List<MessageRow> objects){ super(context, 0, objects); minflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERV ICE); Методот getview(int position, View convertview, ViewGroup parent) се користи за поставување на секој row view во рамките на list view-то. public View getview(int position, View convertview, ViewGroup parent) { View view = convertview; Се користи за можно искористување на стариот поглед (view). Корисно за хетерогени листи со различен item view тип. MessageRow item = this.getitem(position); boolean mymsg = false; if ( getitemviewtype(position) == VIEW_TYPE_MYMSG){ if( view == null ){ view = minflater.inflate(r.layout.chat_row_mymsg, null); mymsg = true; else { if( view == null ){ view = minflater.inflate(r.layout.chat_row_inmsg, null); TextView sender = (TextView)view.findViewById(R.id.sender); sender.settext(item.msender); 33

34 TextView msgrow = (TextView)view.findViewById(R.id.msg_row); msgrow.settext(item.mmsg); if( mymsg ){ msgrow.setbackgroundresource(r.color.my_msg_background); else{ msgrow.setbackgroundresource(r.color.in_msg_background); TextView time = (TextView)view.findViewById(R.id.time); time.settext(item.mtime); Log.d(TAG, "getview : " + item.msender + " " + item.mmsg + " " + item.mtime); return view; WiFiDirectActivity класа Activity класа која го користи WiFi Direct APIs за откривање и конектирање со достапни уреди. WiFi Direct APIs се асинхрони, подлежат на callback механизам и користат интерфејси за известување на апликацијата за успеси или неуспеси на одредени операции. Апликацијата исто така треба да регистрира BroadcastReceiver за известувања поврзани со WiFi состојбата. public class WiFiDirectActivity extends Activity implements DeviceActionListener { DeviceActionListener, претставува интерфејс кој се користи за повик на callback при одредени акции на апликацијата. Методот oncreate(bundle savedinstancestate) во оваа класа се користи за активирање на сервисот, доколку сеуште не е активиран. Потоа се активира сервисот за конектирање. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mapp = (WiFiDirectApp)getApplication(); 34

35 mapp.mhomeactivity = this; Intent serviceintent = new Intent(this, ConnectionService.class); startservice(serviceintent); Методот onresume() проверува дали се достапни информации за p2p конекцијата. Ако статусот е connected, се овозможува chat сервисот. public void onresume() { super.onresume(); mhasfocus = true; if( mapp.mthisdevice!= null ){ PTPLog.d(TAG, "onresume : redraw this device details"); updatethisdevice(mapp.mthisdevice); if( mapp.mp2pinfo!= null && mapp.mthisdevice.status == WifiP2pDevice.CONNECTED){ onconnectioninfoavailable(mapp.mp2pinfo); else { Методот resetdata() се користи за отстранување на сите peers и чистење на сите полиња. Методот се повикува кога BroadcastReceiver добива настан за промена на состојба. public void resetdata() { runonuithread(new Runnable() public void run() { DeviceListFragment fragmentlist = (DeviceListFragment) getfragmentmanager().findfragmentbyid(r.id.frag_list); DeviceDetailFragment fragmentdetails = (DeviceDetailFragment) getfragmentmanager().findfragmentbyid(r.id.frag_detail); if (fragmentlist!= null) { fragmentlist.clearpeers(); if (fragmentdetails!= null) { 35

36 fragmentdetails.resetviews(); ); Методот updatethisdevice(final WifiP2pDevice device) се користи за процесирање на WIFI_P2P_THIS_DEVICE_CHANGED_ACTION и рефреширање на состојбата на уредот. public void updatethisdevice(final WifiP2pDevice device){ runonuithread(new Runnable() public void run() { DeviceListFragment fragment = (DeviceListFragment)getFragmentManager().findFragmentById(R.id.frag_ list); fragment.updatethisdevice(device); ); Методот onpeersavailable(final WifiP2pDeviceList peerlist) се користи за ажурирање на list fragment-от на уредот со користење на кеширана листа од апликацијата. public void onpeersavailable(final WifiP2pDeviceList peerlist){ runonuithread(new Runnable() public void run() { DeviceListFragment fragmentlist = (DeviceListFragment) getfragmentmanager().findfragmentbyid(r.id.frag_list); fragmentlist.onpeersavailable(mapp.mpeers); DeviceDetailFragment fragmentdetails = (DeviceDetailFragment) getfragmentmanager().findfragmentbyid(r.id.frag_detail); for(wifip2pdevice d : peerlist.getdevicelist()){ if( d.status == WifiP2pDevice.FAILED ){ PTPLog.d(TAG, "onpeersavailable: Peer status is failed " + d.devicename ); fragmentdetails.resetviews(); 36

37 ); Главната намена на овој метод е справување со достапна p2p конекција и ажурирање на UI. public void onconnectioninfoavailable(final WifiP2pInfo info) { runonuithread(new Runnable() public void run() { DeviceDetailFragment fragmentdetails = (DeviceDetailFragment) getfragmentmanager().findfragmentbyid(r.id.frag_detail); fragmentdetails.onconnectioninfoavailable(info); ); Во методот onoptionsitemselected(menuitem item) се дефинирани неколку опции кои изведуваат соодветна акција при избор на опција од менито на апликацијата. public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case android.r.id.home: Log.d(TAG, " navigating up or home clicked."); return true; case R.id.atn_direct_enable: if(!mapp.isp2penabled() ){ startactivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); else { Log.e(TAG, " WiFi direct support : already enabled. "); return true; case R.id.atn_direct_discover: if(!mapp.isp2penabled() ){ 37

38 Toast.makeText(WiFiDirectActivity.this, R.string.p2p_off_warning, Toast.LENGTH_LONG).show(); return true; final DeviceListFragment fragment = (DeviceListFragment) getfragmentmanager().findfragmentbyid(r.id.frag_list); fragment.oninitiatediscovery(); PTPLog.d(TAG, "onoptionsitemselected : start discovering "); mapp.mp2pman.discoverpeers(mapp.mp2pchannel, new WifiP2pManager.ActionListener() public void onsuccess() { Toast.makeText(WiFiDirectActivity.this, "Discovery Initiated", Toast.LENGTH_SHORT).show(); PTPLog.d(TAG, "onoptionsitemselected : discovery succeed... " public void onfailure(int reasoncode) { PTPLog.d(TAG, "onoptionsitemselected : discovery failed!!! " + reasoncode); fragment.clearpeers(); Toast.makeText(WiFiDirectActivity.this, "Discovery Failed, try again... ", Toast.LENGTH_SHORT).show(); ); return true; case R.id.disconnect: PTPLog.d(TAG, "onoptionsitemselected : disconnect all connections and stop server "); ConnectionService.getInstance().mConnMan.closeClient(); ConnectionService.getInstance().mConnMan.closeServer(); return true; case R.id.about: PTPLog.d(TAG, "onoptionsitemselected : about "); 38

39 Toast.makeText(this, "Wifi P2P Chat App", Toast.LENGTH_LONG).show(); return true; case R.id.help: PTPLog.d(TAG, "onoptionsitemselected : help "); Toast.makeText(this, "P2P app / connect, chat, share images and enjoy!", Toast.LENGTH_LONG).show(); return true; default: return super.onoptionsitemselected(item); Main Activity класа Callback методите се декларирани да изведуваат операции помеѓу активните состојби. Активниот lifecycle, со други зборови Activity states е важен аспект од Android OS каде ја осигурува контрола на Activity process. На слика 3.3 дијаграмот на активност е презентиран за полесно разбирање на концептот. MainActivity класата вклучува само четири од овие callbacks, именувани како oncreate(), onpause(), onresume() и ondestroy(). 39

40 Слика 3.3: Activity lifecycle дијаграм Со методот initfragment(string initmsg) се иницијализира фрагментот со можна почетна добиена порака. public void initfragment(string initmsg) { final FragmentTransaction ft = getfragmentmanager().begintransaction(); if( mchatfrag == null ){ mchatfrag = ChatFragment.newInstance(this, null, initmsg); Log.d(TAG, "initfragment : show chat fragment..." + initmsg); ft.add(r.id.frag_chat, mchatfrag, "chat_frag"); ft.settransition(fragmenttransaction.transit_fragment_fade); ft.commit(); 40

41 Методот getview(int position, View convertview, ViewGroup parent) служи за поставување на секој row view во рамките на list view. public View getview(int position, View convertview, ViewGroup parent) { View view = convertview; String item = this.getitem(position); if( view == null ){ view = minflater.inflate(r.layout.msg_row, null); TextView msgrow = (TextView)view.findViewById(R.id.msg_row); msgrow.settext(item); return view; Методот registeractivitytoservice(boolean register) се користи за регистрирање на activity, со цел сервисот да може подоцна да го ажурира list погледот. protected void registeractivitytoservice(boolean register){ if( ConnectionService.getInstance()!= null ){ Message msg = ConnectionService.getInstance().getHandler().obtainMessage(); msg.what = MSG_REGISTER_ACTIVITY; msg.obj = this; msg.arg1 = register? 1 : 0; ConnectionService.getInstance().getHandler().sendMessage(msg); Методот pushoutmessage(string jsonstring) се користи за проследување на порака до сервисот, која се обработува во позадина. public void pushoutmessage(string jsonstring) { Log.d(TAG, "pushoutmessage : " + jsonstring); Message msg = ConnectionService.getInstance().getHandler().obtainMessage(); msg.what = MSG_PUSHOUT_DATA; 41

42 msg.obj = jsonstring; ConnectionService.getInstance().getHandler().sendMessage(msg); Методот showmessage(final MessageRow row) се користи за прикажување на пораката во chat фрагментот. public void showmessage(final MessageRow row){ runonuithread(new Runnable() public void run() { Log.d(TAG, "showmessage : " + row.mmsg); if( mchatfrag!= null ){ mchatfrag.appendchatmessage(row); ); 4. Презентација на апликацијата преку слики Апликацијата е тестирана помеѓу два Samsung уреди. Едниот уред претставува таблет (Samsung Galaxy Tab4), а другиот уред претставува паметен телефон (Samsung Galaxy S4). Во продолжение следува опис преку слики на начинот на кој функционира апликацијата. Почетен екран на апликацијата 42

43 Слика 4.1. a) Samsung Galaxy Tab4 б) Samsung Galaxy S4 Екран после притискање на копчето Discover (започнување на пронаоѓање на достапни уреди - peers) Екран откако се пронајдени уреди 43

44 Слика 4.2. a) Samsung Galaxy Tab4 б) Samsung Galaxy S4 Екран при избирање на уред и притискање на копчето за конектирање Слика 4.3. a) Samsung Galaxy Tab4 (испраќач на барање за конекција) б) Samsung Galaxy S4(примач на барање за конекција) Екран при воспоставување на конекција 44

45 Екран после воспоставување на конекција (кај клиентот се достапни три копчиња, едно за дисконектирање, едно за испраќање на текстуална содржина и едно за испраќање на слика до сервер). Кај серверот се достапни две копчиња (едно за дисконектирање и едно за испраќање на пораки). Слика 4.4. a) Samsung Galaxy Tab4 (клиент) б) Samsung Galaxy S4 (сервер) 45

46 Екран за испраќање на пораки од клиентот до серверот Екран на серверот по пристигнувањето на пораката од клиентот 46

47 Екран при испраќање на слика од клиентот до серверот (повикување на интент кој овозможува избор на слика од сите извори на слики од уредот) Екран по пристигнување на сликата кај серверот (се отвора интент во кој серверот избира како сака да ја отвори сликата) 47

48 Екран во кој се прикажува пристигнатата слика Сликата е зачувана во фолдерот Wifi P2P 48

Implementation of Supply Chain Management (SCM) in pharmaceutical company, general principles and case study

Implementation of Supply Chain Management (SCM) in pharmaceutical company, general principles and case study Macedonian pharmaceutical bulletin, 60 (2) 75-82 (2014) ISSN 1409-8695 UDC: 658.86/.87:661.12 Case study Implementation of Supply Chain Management (SCM) in pharmaceutical company, general principles and

More information

Melbourne 21st - 30th September. Perth 6th October. Newcastle 6th October. Auckland 13th - 14th October. Sydney 24th - 25th November

Melbourne 21st - 30th September. Perth 6th October. Newcastle 6th October. Auckland 13th - 14th October. Sydney 24th - 25th November MFF2012_A2_poster.indd 2 9/16/2012 9:54:24 PM Australasian premiere of Milcho Manchevski s award winning masterpiece Mothers Melbourne 21st - 30th September Perth 6th October Newcastle 6th October Auckland

More information

THREE PERIODS OF HEALTH SYSTEM REFORMS IN THE REPUBLIC OF MACEDONIA (1991 2011)

THREE PERIODS OF HEALTH SYSTEM REFORMS IN THE REPUBLIC OF MACEDONIA (1991 2011) Prilozi, Odd. biol. med. nauki, MANU, XXXIII, 2, s. 175 189 (2012) Contributions, Sec. Biol. Med. Sci., MASA, XXXIII, 2, p. 175 189 (2012) ISSN 0351 3254 UDK: 614.2:005.591.4(497.7)"1991/2011" THREE PERIODS

More information

Getting started with Android and App Engine

Getting started with Android and App Engine Getting started with Android and App Engine About us Tim Roes Software Developer (Mobile/Web Solutions) at inovex GmbH www.timroes.de www.timroes.de/+ About us Daniel Bälz Student/Android Developer at

More information

SEIZURES AFTER USE AND ABUSE OF TRAMADOL. University Toxicology Clinic, Skopje, R. Macedonia 2. University Neurology Clinic, Skopje, R.

SEIZURES AFTER USE AND ABUSE OF TRAMADOL. University Toxicology Clinic, Skopje, R. Macedonia 2. University Neurology Clinic, Skopje, R. Prilozi, Odd. biol. med. nauki, MANU, XXXIII, 1, s. 313 318 (2012) Contributions, Sec. Biol. Med. Sci., MASA, XXXIII, 1, p. 313 318 (2012) ISSN 0351 3254 UDC: 615.212.3.065:616.853 CASE REPORT SEIZURES

More information

Android Development. Marc Mc Loughlin

Android Development. Marc Mc Loughlin Android Development Marc Mc Loughlin Android Development Android Developer Website:h:p://developer.android.com/ Dev Guide Reference Resources Video / Blog SeCng up the SDK h:p://developer.android.com/sdk/

More information

Creating a List UI with Android. Michele Schimd - 2013

Creating a List UI with Android. Michele Schimd - 2013 Creating a List UI with Android Michele Schimd - 2013 ListActivity Direct subclass of Activity By default a ListView instance is already created and rendered as the layout of the activity mylistactivit.getlistview();

More information

Android Architecture. Alexandra Harrison & Jake Saxton

Android Architecture. Alexandra Harrison & Jake Saxton Android Architecture Alexandra Harrison & Jake Saxton Overview History of Android Architecture Five Layers Linux Kernel Android Runtime Libraries Application Framework Applications Summary History 2003

More information

01. Introduction of Android

01. Introduction of Android 01. Introduction of Android Goal Understand the concepts and features of the Android Install the complete Android development environment Find out the one-click install Android development environment

More information

Hello World! Some code

Hello World! Some code Embedded Systems Programming Hello World! Lecture 10 Verónica Gaspes www2.hh.se/staff/vero What could an Android hello world application be like? Center for Research on Embedded Systems School of Information

More information

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna Programming with Android: System Architecture Luca Bedogni Marco Di Felice Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Dalvik Java

More information

EX.VTP.MK.02.01 FAVV-AFSCA 1/5

EX.VTP.MK.02.01 FAVV-AFSCA 1/5 ВЕТЕРИНАРНО ЗДРАВСТВЕН СЕРТИФИКАТ ЗА МЕСО ОД ЖИВИНА ЗА УВОЗ ВО РЕПУБЛИКА МАКЕДОНИЈА Health Certificate for meat of poultry (POU) for dispatch to the Republic of Macedonia Certificat sanitaire pour les

More information

70 th fiaf Congress 04 th 10 th May 2014. Skopje. Newsletter No.2

70 th fiaf Congress 04 th 10 th May 2014. Skopje. Newsletter No.2 Newsletter No.2 70 th fiaf Congress 04 th 10 th May 2014 Skopje Министерство за култура на Република Македонија Ministry of Culture of the Republic of Macedonia Кинотека на Македонија Cinematheque of Macedonia

More information

How to develop your own app

How to develop your own app How to develop your own app It s important that everything on the hardware side and also on the software side of our Android-to-serial converter should be as simple as possible. We have the advantage that

More information

Ad-hoc Data Transfer for Android Devices

Ad-hoc Data Transfer for Android Devices Master Degree Project Ad-hoc Data Transfer for Android Devices Author: Emre Baykal Date: 2013-03-17 Subject: Ad-hoc Data Transfer for Android Devices Level: Master Course code: 5DV00E Abstract With the

More information

Cloud Computing and Mobile Web Applications (120 ЕCTS)

Cloud Computing and Mobile Web Applications (120 ЕCTS) Study program Faculty Cycle Cloud Computing and Mobile Web Applications (120 ЕCTS) Contemporary Sciences and Technologies Postgraduate ECTS 120 Offered in Skopje Description of the program The study program

More information

Chapter 2 Getting Started

Chapter 2 Getting Started Welcome to Android Chapter 2 Getting Started Android SDK contains: API Libraries Developer Tools Documentation Sample Code Best development environment is Eclipse with the Android Developer Tool (ADT)

More information

ODROID Multithreading in Android

ODROID Multithreading in Android Multithreading in Android 1 Index Android Overview Android Stack Android Development Tools Main Building Blocks(Activity Life Cycle) Threading in Android Multithreading via AsyncTask Class Multithreading

More information

Graduate presentation for CSCI 5448. By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu )

Graduate presentation for CSCI 5448. By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu ) Graduate presentation for CSCI 5448 By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu ) Content What is Android?? Versions and statistics Android Architecture Application Components Inter Application

More information

Smartphone market share

Smartphone market share Smartphone market share Gartner predicts that Apple s ios will remain the second biggest platform worldwide through 2014 despite its share deceasing slightly after 2011. Android will become the most popular

More information

Android Basics. Xin Yang 2016-05-06

Android Basics. Xin Yang 2016-05-06 Android Basics Xin Yang 2016-05-06 1 Outline of Lectures Lecture 1 (45mins) Android Basics Programming environment Components of an Android app Activity, lifecycle, intent Android anatomy Lecture 2 (45mins)

More information

Android Programming and Security

Android Programming and Security Android Programming and Security Dependable and Secure Systems Andrea Saracino andrea.saracino@iet.unipi.it Outlook (1) The Android Open Source Project Philosophy Players Outlook (2) Part I: Android System

More information

Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources. Recap: TinyOS. Recap: J2ME Framework

Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources. Recap: TinyOS. Recap: J2ME Framework Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources Homework 2 questions 10/9/2012 Y. Richard Yang 1 2 Recap: TinyOS Hardware components motivated design

More information

4. The Android System

4. The Android System 4. The Android System 4. The Android System System-on-Chip Emulator Overview of the Android System Stack Anatomy of an Android Application 73 / 303 4. The Android System Help Yourself Android Java Development

More information

Android 5.0: Lollipop OS

Android 5.0: Lollipop OS IJISET - International Journal of Innovative Science, Engineering & Technology, Vol. 2 Issue 6, June 2015. www.ijiset.com Android 5.0: Lollipop OS ISSN 2348 7968 Meenakshi M.Tech Student, Department of

More information

@ME (About) Marcelo Cyreno. Skype: marcelocyreno Linkedin: marcelocyreno Mail: marcelocyreno@gmail.com

@ME (About) Marcelo Cyreno. Skype: marcelocyreno Linkedin: marcelocyreno Mail: marcelocyreno@gmail.com Introduction @ME (About) Marcelo Cyreno Skype: marcelocyreno Linkedin: marcelocyreno Mail: marcelocyreno@gmail.com Android - Highlights Open Source Linux Based Developed by Google / Open Handset Alliance

More information

Android For Java Developers. Marko Gargenta Marakana

Android For Java Developers. Marko Gargenta Marakana Android For Java Developers Marko Gargenta Marakana Agenda Android History Android and Java Android SDK Hello World! Main Building Blocks Debugging Summary History 2005 Google buys Android, Inc. Work on

More information

Programming with Android

Programming with Android Praktikum Mobile und Verteilte Systeme Programming with Android Prof. Dr. Claudia Linnhoff-Popien Philipp Marcus, Mirco Schönfeld http://www.mobile.ifi.lmu.de Sommersemester 2015 Programming with Android

More information

ANDROID. Programming basics

ANDROID. Programming basics ANDROID Programming basics Overview Mobile Hardware History Android evolution Android smartphone overview Hardware components at high level Operative system Android App development Why Android Apps? History

More information

CS378 -Mobile Computing. Android Overview and Android Development Environment

CS378 -Mobile Computing. Android Overview and Android Development Environment CS378 -Mobile Computing Android Overview and Android Development Environment What is Android? A software stack for mobile devices that includes An operating system Middleware Key Applications Uses Linux

More information

060010702 Mobile Application Development 2014

060010702 Mobile Application Development 2014 Que 1: Short question answer. Unit 1: Introduction to Android and Development tools 1. What kind of tool is used to simulate Android application? 2. Can we use C++ language for Android application development?

More information

An Android-based Instant Message Application

An Android-based Instant Message Application An Android-based Instant Message Application Qi Lai, Mao Zheng and Tom Gendreau Department of Computer Science University of Wisconsin - La Crosse La Crosse, WI 54601 mzheng@uwlax.edu Abstract One of the

More information

Introduction to Android SDK Jordi Linares

Introduction to Android SDK Jordi Linares Introduction to Android SDK Introduction to Android SDK http://www.android.com Introduction to Android SDK Google -> OHA (Open Handset Alliance) The first truly open and comprehensive platform for mobile

More information

Lecture 1 Introduction to Android

Lecture 1 Introduction to Android These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy

More information

Android. Learning Android Marko Gargenta. Tuesday, March 11, 14

Android. Learning Android Marko Gargenta. Tuesday, March 11, 14 Android Learning Android Marko Gargenta Materials Sams Teach Yourself Android Application Development in 24 Hours (Amazon) Android Apps for Absolute Beginners (Amazon) Android Development Tutorial (http://

More information

directory to "d:\myproject\android". Hereafter, I shall denote the android installed directory as

directory to d:\myproject\android. Hereafter, I shall denote the android installed directory as 1 of 6 2011-03-01 12:16 AM yet another insignificant programming notes... HOME Android SDK 2.2 How to Install and Get Started Introduction Android is a mobile operating system developed by Google, which

More information

Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University

Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University Android OS Open-source mobile OS (mostly Apache licence) Developed by Google + Open Handset Alliance

More information

Università Degli Studi di Parma. Distributed Systems Group. Android Development. Lecture 2 Android Platform. Marco Picone - 2012

Università Degli Studi di Parma. Distributed Systems Group. Android Development. Lecture 2 Android Platform. Marco Picone - 2012 Android Development Lecture 2 Android Platform Università Degli Studi di Parma Lecture Summary 2 The Android Platform Dalvik Virtual Machine Application Sandbox Security and Permissions Traditional Programming

More information

How To Develop Android On Your Computer Or Tablet Or Phone

How To Develop Android On Your Computer Or Tablet Or Phone AN INTRODUCTION TO ANDROID DEVELOPMENT CS231M Alejandro Troccoli Outline Overview of the Android Operating System Development tools Deploying application packages Step-by-step application development The

More information

Boardies IT Solutions info@boardiesitsolutions.com Tel: 01273 252487

Boardies IT Solutions info@boardiesitsolutions.com Tel: 01273 252487 Navigation Drawer Manager Library H ow to implement Navigation Drawer Manager Library into your A ndroid Applications Boardies IT Solutions info@boardiesitsolutions.com Tel: 01273 252487 Contents Version

More information

An Introduction to Android Application Development. Serdar Akın, Haluk Tüfekçi

An Introduction to Android Application Development. Serdar Akın, Haluk Tüfekçi An Introduction to Android Application Serdar Akın, Haluk Tüfekçi ARDIC ARGE http://www.ardictech.com April 2011 Environment Programming Languages Java (Officially supported) C (Android NDK Needed) C++

More information

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Who am I? Lo Chi Wing, Peter Lecture 1: Introduction to Android Development Email: Peter@Peter-Lo.com Facebook: http://www.facebook.com/peterlo111

More information

Introduction to Android Development. Daniel Rodrigues, Buuna 2014

Introduction to Android Development. Daniel Rodrigues, Buuna 2014 Introduction to Android Development Daniel Rodrigues, Buuna 2014 Contents 1. Android OS 2. Development Tools 3. Development Overview 4. A Simple Activity with Layout 5. Some Pitfalls to Avoid 6. Useful

More information

Basics. Bruce Crawford Global Solutions Manager

Basics. Bruce Crawford Global Solutions Manager Android Development Basics Bruce Crawford Global Solutions Manager Android Development Environment Setup Agenda Install Java JDK Install Android SDK Add Android SDK packages with Android SDK manager Install

More information

Android Services. Android. Victor Matos

Android Services. Android. Victor Matos Lesson 22 Android Victor Matos Cleveland State University Notes are based on: Android Developers http://developer.android.com/index.html Portions of this page are reproduced from work created and shared

More information

MMI 2: Mobile Human- Computer Interaction Android

MMI 2: Mobile Human- Computer Interaction Android MMI 2: Mobile Human- Computer Interaction Android Prof. Dr. michael.rohs@ifi.lmu.de Mobile Interaction Lab, LMU München Android Software Stack Applications Java SDK Activities Views Resources Animation

More information

Presenting Android Development in the CS Curriculum

Presenting Android Development in the CS Curriculum Presenting Android Development in the CS Curriculum Mao Zheng Hao Fan Department of Computer Science International School of Software University of Wisconsin-La Crosse Wuhan University La Crosse WI, 54601

More information

Frameworks & Android. Programmeertechnieken, Tim Cocx

Frameworks & Android. Programmeertechnieken, Tim Cocx Frameworks & Android Programmeertechnieken, Tim Cocx Discover thediscover world atthe Leiden world University at Leiden University Software maken is hergebruiken The majority of programming activities

More information

Google s Android: An Overview

Google s Android: An Overview Google s Android: An Overview Yoni Rabkin yonirabkin@member.fsf.org This work is licensed under the Creative Commons Attribution 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.5/.

More information

Android Programming Tutorial. Rong Zheng

Android Programming Tutorial. Rong Zheng Android Programming Tutorial Rong Zheng Outline What is Android OS Setup your development environment GUI Layouts Activity life cycle Event handling Tasks Intent and broadcast receiver Resource What is

More information

What is Android? originally purchased from Android, Inc. in 2005

What is Android? originally purchased from Android, Inc. in 2005 What is Android? mobile operating system maintained by Google originally purchased from Android, Inc. in 2005 runs on phones, tablets, watches, TVs,... based on Java (dev language) and Linux (kernel) the

More information

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile

More information

Spring Design ScreenShare Service SDK Instructions

Spring Design ScreenShare Service SDK Instructions Spring Design ScreenShare Service SDK Instructions V1.0.8 Change logs Date Version Changes 2013/2/28 1.0.0 First draft 2013/3/5 1.0.1 Redefined some interfaces according to issues raised by Richard Li

More information

Praktikum Entwicklung Mediensysteme (für Master)

Praktikum Entwicklung Mediensysteme (für Master) Praktikum Entwicklung Mediensysteme (für Master) An Introduction to Android An Introduction to Android What is Android? Installation Getting Started Anatomy of an Android Application Life Cycle of an Android

More information

How To Write A File Station In Android.Com (For Free) On A Microsoft Macbook Or Ipad (For A Limited Time) On An Ubuntu 8.1 (For Ubuntu) On Your Computer Or Ipa (For

How To Write A File Station In Android.Com (For Free) On A Microsoft Macbook Or Ipad (For A Limited Time) On An Ubuntu 8.1 (For Ubuntu) On Your Computer Or Ipa (For QtsHttp Java Sample Code for Android Getting Started Build the develop environment QtsHttp Java Sample Code is developed using ADT Bundle for Windows. The ADT (Android Developer Tools) Bundle includes:

More information

Android Concepts and Programming TUTORIAL 1

Android Concepts and Programming TUTORIAL 1 Android Concepts and Programming TUTORIAL 1 Kartik Sankaran kar.kbc@gmail.com CS4222 Wireless and Sensor Networks [2 nd Semester 2013-14] 20 th January 2014 Agenda PART 1: Introduction to Android - Simple

More information

Mobile Application Development

Mobile Application Development Mobile Application Development (Android & ios) Tutorial Emirates Skills 2015 3/26/2015 1 What is Android? An open source Linux-based operating system intended for mobile computing platforms Includes a

More information

Introduction to Android Programming (CS5248 Fall 2015)

Introduction to Android Programming (CS5248 Fall 2015) Introduction to Android Programming (CS5248 Fall 2015) Aditya Kulkarni (email.aditya.kulkarni@gmail.com) August 26, 2015 *Based on slides from Paresh Mayami (Google Inc.) Contents Introduction Android

More information

TomTom PRO 82xx PRO.connect developer guide

TomTom PRO 82xx PRO.connect developer guide TomTom PRO 82xx PRO.connect developer guide Contents Introduction 3 Preconditions 4 Establishing a connection 5 Preparations on Windows... 5 Preparations on Linux... 5 Connecting your TomTom PRO 82xx device

More information

Android App Development. Rameel Sethi

Android App Development. Rameel Sethi Android App Development Rameel Sethi Relevance of Android App to LFEV Would be useful for technician at Formula EV race course to monitor vehicle conditions on cellphone Can serve as useful demo of LFEV

More information

Table of Contents. Adding Build Targets to the SDK 8 The Android Developer Tools (ADT) Plug-in for Eclipse 9

Table of Contents. Adding Build Targets to the SDK 8 The Android Developer Tools (ADT) Plug-in for Eclipse 9 SECOND EDITION Programming Android kjj *J} Zigurd Mednieks, Laird Dornin, G. Blake Meike, and Masumi Nakamura O'REILLY Beijing Cambridge Farnham Koln Sebastopol Tokyo Table of Contents Preface xiii Parti.

More information

1. Introduction to Android

1. Introduction to Android 1. Introduction to Android Brief history of Android What is Android? Why is Android important? What benefits does Android have? What is OHA? Why to choose Android? Software architecture of Android Advantages

More information

Developing Android Applications Introduction to Software Engineering Fall 2015. Updated 7 October 2015

Developing Android Applications Introduction to Software Engineering Fall 2015. Updated 7 October 2015 Developing Android Applications Introduction to Software Engineering Fall 2015 Updated 7 October 2015 Android Lab 1 Introduction to Android Class Assignment: Simple Android Calculator 2 Class Plan Introduction

More information

Islamic University of Gaza. Faculty of Engineering. Computer Engineering Department. Mobile Computing ECOM 5341. Eng. Wafaa Audah.

Islamic University of Gaza. Faculty of Engineering. Computer Engineering Department. Mobile Computing ECOM 5341. Eng. Wafaa Audah. Islamic University of Gaza Faculty of Engineering Computer Engineering Department Mobile Computing ECOM 5341 By Eng. Wafaa Audah June 2013 1 Setting Up the Development Environment and Emulator Part 1:

More information

Title: Appium Automation for Mac OS X. Created By: Prithivirajan M. Abstract. Introduction

Title: Appium Automation for Mac OS X. Created By: Prithivirajan M. Abstract. Introduction Title: Appium Automation for Mac OS X Created By: Prithivirajan M Abstract This document aims at providing the necessary information required for setting up mobile testing environment in Mac OS X for testing

More information

App Development for Smart Devices. Lec #4: Services and Broadcast Receivers Try It Out

App Development for Smart Devices. Lec #4: Services and Broadcast Receivers Try It Out App Development for Smart Devices CS 495/595 - Fall 2013 Lec #4: Services and Broadcast Receivers Try It Out Tamer Nadeem Dept. of Computer Science Try It Out Example 1 (in this slides) Example 2 (in this

More information

Android Fundamentals 1

Android Fundamentals 1 Android Fundamentals 1 What is Android? Android is a lightweight OS aimed at mobile devices. It is essentially a software stack built on top of the Linux kernel. Libraries have been provided to make tasks

More information

Android Java Live and In Action

Android Java Live and In Action Android Java Live and In Action Norman McEntire Founder, Servin Corp UCSD Extension Instructor norman.mcentire@servin.com Copyright (c) 2013 Servin Corp 1 Opening Remarks Welcome! Thank you! My promise

More information

Developing an Android App. CSC207 Fall 2014

Developing an Android App. CSC207 Fall 2014 Developing an Android App CSC207 Fall 2014 Overview Android is a mobile operating system first released in 2008. Currently developed by Google and the Open Handset Alliance. The OHA is a consortium of

More information

Parte I: Informazioni sulla partita spedita /Дел I: Детали за испратената пратка

Parte I: Informazioni sulla partita spedita /Дел I: Детали за испратената пратка CERTIFICATO VETERINARIO ВЕТЕРИНАРНО ЗДРАВСТВЕН СЕРТИФИКАТ Health Certificate MP-PR/ MP-PR per i prodotti a base di carne e stomaci, vesciche ed intestini trattati destinati all esportazione verso la Repubblica

More information

RESTAURANT MENU AND MANAGEMENT SYSTEM

RESTAURANT MENU AND MANAGEMENT SYSTEM 2/23/2014 CARLETON UNIVERSITY RESTAURANT MENU AND MANAGEMENT SYSTEM COMP 4905 Trevor Oberhammer ABSTRACT Many people have experienced going to a restaurant where the service is poor and there is a lack

More information

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android Why Android? ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android Dr Dimitris C. Dracopoulos A truly open, free development platform based on Linux and open source A component-based

More information

PROGRAMMING IN ANDROID. IOANNIS (JOHN) PAPAVASILEIOU OCTOBER 24 2013 papabasile@engr.uconn.edu

PROGRAMMING IN ANDROID. IOANNIS (JOHN) PAPAVASILEIOU OCTOBER 24 2013 papabasile@engr.uconn.edu PROGRAMMING IN ANDROID IOANNIS (JOHN) PAPAVASILEIOU OCTOBER 24 2013 papabasile@engr.uconn.edu WHAT IS IT Software platform Operating system Key apps Developers: Google Open Handset Alliance Open Source

More information

Tutorial: Setup for Android Development

Tutorial: Setup for Android Development Tutorial: Setup for Android Development Adam C. Champion CSE 5236: Mobile Application Development Autumn 2015 Based on material from C. Horstmann [1], J. Bloch [2], C. Collins et al. [4], M.L. Sichitiu

More information

Tutorial #1. Android Application Development Advanced Hello World App

Tutorial #1. Android Application Development Advanced Hello World App Tutorial #1 Android Application Development Advanced Hello World App 1. Create a new Android Project 1. Open Eclipse 2. Click the menu File -> New -> Other. 3. Expand the Android folder and select Android

More information

Android Application Development

Android Application Development Android Application Development Self Study Self Study Guide Content: Course Prerequisite Course Content Android SDK Lab Installation Guide Start Training Be Certified Exam sample Course Prerequisite The

More information

Mobile Phones Operating Systems

Mobile Phones Operating Systems Mobile Phones Operating Systems José Costa Software for Embedded Systems Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2015-05-28 José Costa (DEI/IST) Mobile Phones Operating

More information

Mobile Application Development Android

Mobile Application Development Android Mobile Application Development Android MTAT.03.262 Satish Srirama satish.srirama@ut.ee Goal Give you an idea of how to start developing Android applications Introduce major Android application concepts

More information

Q1. What method you should override to use Android menu system?

Q1. What method you should override to use Android menu system? AND-401 Exam Sample: Q1. What method you should override to use Android menu system? a. oncreateoptionsmenu() b. oncreatemenu() c. onmenucreated() d. oncreatecontextmenu() Answer: A Q2. What Activity method

More information

TUTORIAL. BUILDING A SIMPLE MAPPING APPLICATION

TUTORIAL. BUILDING A SIMPLE MAPPING APPLICATION Cleveland State University CIS493. Mobile Application Development Using Android TUTORIAL. BUILDING A SIMPLE MAPPING APPLICATION The goal of this tutorial is to create a simple mapping application that

More information

Overview. The Android operating system is like a cake consisting of various layers.

Overview. The Android operating system is like a cake consisting of various layers. The Android Stack Overview The Android operating system is like a cake consisting of various layers. Each layer has its own characteristics and purpose but the layers are not always cleanly separated and

More information

Here to take you beyond Mobile Application development using Android Course details

Here to take you beyond Mobile Application development using Android Course details Here to take you beyond Mobile Application development using Android Course details Mobile Application Development using Android Objectives: To get you started with writing mobile application using Android

More information

Developing for MSI Android Devices

Developing for MSI Android Devices Android Application Development Enterprise Features October 2013 Developing for MSI Android Devices Majority is the same as developing for any Android device Fully compatible with Android SDK We test using

More information

Hello World. by Elliot Khazon

Hello World. by Elliot Khazon Hello World by Elliot Khazon Prerequisites JAVA SDK 1.5 or 1.6 Windows XP (32-bit) or Vista (32- or 64-bit) 1 + more Gig of memory 1.7 Ghz+ CPU Tools Eclipse IDE 3.4 or 3.5 SDK starter package Installation

More information

Programmazione di sistemi mobili e tablet

Programmazione di sistemi mobili e tablet Programmazione di sistemi mobili e tablet Android Development Carlo Menapace carlo.menapace@factorymind.com Jonny Fox WHO WE ARE Factory Mind is a young cooperative company formed by a team of engineers

More information

App Development for Smart Devices. Lec #2: Android Tools, Building Applications, and Activities

App Development for Smart Devices. Lec #2: Android Tools, Building Applications, and Activities App Development for Smart Devices CS 495/595 - Fall 2011 Lec #2: Android Tools, Building Applications, and Activities Tamer Nadeem Dept. of Computer Science Objective Understand Android Tools Setup Android

More information

ITG Software Engineering

ITG Software Engineering Basic Android Development Course ID: Page 1 Last Updated 12/15/2014 Basic Android Development ITG Software Engineering Course Overview: This 5 day course gives students the fundamental basics of Android

More information

Developing NFC Applications on the Android Platform. The Definitive Resource

Developing NFC Applications on the Android Platform. The Definitive Resource Developing NFC Applications on the Android Platform The Definitive Resource Part 1 By Kyle Lampert Introduction This guide will use examples from Mac OS X, but the steps are easily adaptable for modern

More information

06 Team Project: Android Development Crash Course; Project Introduction

06 Team Project: Android Development Crash Course; Project Introduction M. Kranz, P. Lindemann, A. Riener 340.301 UE Principles of Interaction, 2014S 06 Team Project: Android Development Crash Course; Project Introduction April 11, 2014 Priv.-Doz. Dipl.-Ing. Dr. Andreas Riener

More information

J A D E T U TO R I A L

J A D E T U TO R I A L J A D E T U TO R I A L J A D E P R O G R A M M I N G F O R A N D R O I D USAGE RESTRICTED ACCORDING TO LICENSE AGREEMENT. last update: 14 June 2012. JADE 4.2.0 Authors: Giovanni Caire (Telecom Italia S.p.A.)

More information

Programming with Android

Programming with Android Praktikum Mobile und Verteilte Systeme Programming with Android Prof. Dr. Claudia Linnhoff-Popien Michael Beck, André Ebert http://www.mobile.ifi.lmu.de Wintersemester 2015/16 Überblick: Themen des Praktikums

More information

Android Environment SDK

Android Environment SDK Part 2-a Android Environment SDK Victor Matos Cleveland State University Notes are based on: Android Developers http://developer.android.com/index.html 1 2A. Android Environment: Eclipse & ADT The Android

More information

How To Develop An Android App On An Android Device

How To Develop An Android App On An Android Device Lesson 2 Android Development Tools = Eclipse + ADT + SDK Victor Matos Cleveland State University Portions of this page are reproduced from work created and shared by Googleand used according to terms described

More information

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет Технологии Java Android: Введение Санкт-Петербургский Государственный Политехнический Университет Кузнецов Андрей Николаевич 1 2 Архитектура ОС Android See http://www.android-app-market.com/android-architecture.html

More information

OpenCV on Android Platforms

OpenCV on Android Platforms OpenCV on Android Platforms Marco Moltisanti Image Processing Lab http://iplab.dmi.unict.it moltisanti@dmi.unict.it http://www.dmi.unict.it/~moltisanti Outline Intro System setup Write and build an Android

More information

Introduction to Android

Introduction to Android Introduction to Android Poll How many have an Android phone? How many have downloaded & installed the Android SDK? How many have developed an Android application? How many have deployed an Android application

More information

AndroLIFT: A Tool for Android Application Life Cycles

AndroLIFT: A Tool for Android Application Life Cycles AndroLIFT: A Tool for Android Application Life Cycles Dominik Franke, Tobias Royé, and Stefan Kowalewski Embedded Software Laboratory Ahornstraße 55, 52074 Aachen, Germany { franke, roye, kowalewski}@embedded.rwth-aachen.de

More information

Android 多 核 心 嵌 入 式 多 媒 體 系 統 設 計 與 實 作

Android 多 核 心 嵌 入 式 多 媒 體 系 統 設 計 與 實 作 Android 多 核 心 嵌 入 式 多 媒 體 系 統 設 計 與 實 作 Android Application Development 賴 槿 峰 (Chin-Feng Lai) Assistant Professor, institute of CSIE, National Ilan University Nov. 10 th 2011 2011 MMN Lab. All Rights Reserved

More information

Jordan Jozwiak November 13, 2011

Jordan Jozwiak November 13, 2011 Jordan Jozwiak November 13, 2011 Agenda Why Android? Application framework Getting started UI and widgets Application distribution External libraries Demo Why Android? Why Android? Open source That means

More information