Мобилни ад-хок мрежи и QoS рутирање кај мобилни апликации
|
|
- Margaret Butler
- 7 years ago
- Views:
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
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 informationMelbourne 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 informationTHREE 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 informationGetting 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 informationSEIZURES 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 informationAndroid 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 informationCreating 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 informationAndroid 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 information01. 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 informationHello 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 informationProgramming 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 informationEX.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 information70 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 informationHow 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 informationAd-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 informationCloud 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 informationChapter 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 informationODROID 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 informationGraduate 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 informationSmartphone 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 informationAndroid 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 informationAndroid 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 informationAdmin. 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 information4. 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 informationAndroid 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
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 informationAndroid 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 informationProgramming 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 informationANDROID. 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 informationCS378 -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 information060010702 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 informationAn 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 informationIntroduction 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 informationLecture 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 informationAndroid. 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 informationdirectory 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 informationIntroduction 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 informationUniversità 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 informationHow 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 informationBoardies 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 informationAn 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 informationANDROID 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 informationIntroduction 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 informationBasics. 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 informationAndroid 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 informationMMI 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 informationPresenting 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 informationFrameworks & 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 informationGoogle 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 informationAndroid 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 informationWhat 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 informationSpecialized 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 informationSpring 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 informationPraktikum 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 informationHow 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 informationAndroid 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 informationMobile 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 informationIntroduction 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 informationTomTom 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 informationAndroid 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 informationTable 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 information1. 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 informationDeveloping 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 informationIslamic 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 informationTitle: 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 informationApp 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 informationAndroid 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 informationAndroid 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 informationDeveloping 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 informationParte 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 informationRESTAURANT 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 informationECWM511 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 informationPROGRAMMING 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 informationTutorial: 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 informationTutorial #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 informationAndroid 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 informationMobile 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 informationMobile 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 informationQ1. 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 informationTUTORIAL. 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 informationOverview. 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 informationHere 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 informationDeveloping 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 informationHello 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 informationProgrammazione 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 informationApp 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 informationITG 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 informationDeveloping 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 information06 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 informationJ 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 informationProgramming 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 informationAndroid 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 informationHow 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: Введение Санкт-Петербургский Государственный Политехнический Университет Кузнецов Андрей Николаевич 1 2 Архитектура ОС Android See http://www.android-app-market.com/android-architecture.html
More informationOpenCV 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 informationIntroduction 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 informationAndroLIFT: 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 informationAndroid 多 核 心 嵌 入 式 多 媒 體 系 統 設 計 與 實 作
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 informationJordan 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