Licenta Android Matea Andrei(1) [302801]

[anonimizat]-[anonimizat]. Virginia Niculescu

Absolvent: [anonimizat]

2018

CUPRINS

INTRODUCERE……………………………………………………………..

CAPITOLUL 1. Sistemul de operare Android…………………………..

1.1 Introducere in Android……………………………………………

1.2 [anonimizat]………………………………………….

1.2.1 [anonimizat]…………………..

1.2.2 Aplicații native vs. [anonimizat]……………………….

1.2.3 [anonimizat]……………..….

1.3 Istoria sistemului de operare Android

1.3.1 Fondarea Android

1.3.2 Lansarea Android 1.0

1.3.3 Android si dulciurile

1.3.4 Logo-ul Android

CAPITOLUL 2. Tehnologii folosite………………………………………….

2.1 Android Studio……………………………………………

2.2 Firebase………………………………………………………

2.3 Picasso……………………………………………………….

CAPITOLUL 3. Prezentarea aplicației……………………………………….

3.1 Prezentarea ideii……………………………………..

3.2 Descrierea aplicației……………………………………………………..

3.3 Dezvoltarea aplicației…………………………………………..

3.4 Aspecte diferite……………………………………………..

CAPITOUL 4. Concluzii………………………………………………………

CAPITOLUL 5. Bibliografie………………………………………………….

Introducere

Industria telefoanelor mobile a avut o dezvoltare și o creștere rapidă de-a lungul ultimilor ani. [anonimizat], sunt înlocuite de cele noi care beneficiază de o tehnologie mult mai avansată care le permite să suporte o gamă mult mai largă de servicii destinate acestora. O aplicație mobilă este o [anonimizat], tablete și dispozitive mobile. Termenul de aplicație mobilă a [anonimizat]-o continuă creștere. Cererea din partea publicului larg a [anonimizat] a [anonimizat]. Acestea pot facilita sau îmbunătăți aspecte ale vieții utilizatorilor printr-o [anonimizat], [anonimizat], [anonimizat].

În cadrul acestui proiect s-a urmărit răspunsul la întrebarea “Ce faci sau cum procedezi atunci când vrei să faci ceva și toți prietenii tăi nu pot din diferite motive?”. Astfel, în urma unui răspuns s-a [anonimizat], dar și în viața reală. Ideea de bază a acestei aplicații este de a înlătura bariera creată de disconfortul de a cunoaște și de a întâlni persoane noi în viața reală care au aceleași modalități de a se relaxa sau de aș petrece timpul liber. Prin intermediul aplicației “MeetYouUp” [anonimizat], [anonimizat], [anonimizat], plus multe altele. Pe lângă opțiunea de a [anonimizat]-și creeze evenimentele sale pe care le poate gestiona cum dorește, să invite doar anumite persoane sau să fie un eveniment public, cu sau fără număr limită de persoane, cu sau fără acceptul său.

Din cele prezentare mai sus, aplicația “MeetYouUp” este astfel, o aplicație prin intermediul căreia se dorește medierea întâlnirii în viața reală a utilizatorilor care împart aceleași hobby-uri; încurajând utilizatorii să se cunoască între ei și să participe la cât mai mute evenimente de diferite tipuri, create de diferiți utilizatori, permițând și facilitând astfel lărgirea cercului de prieteni și de cunoștințe ale acestora.

Aplicația va stoca datele personale ale utilizatoriilor, cum ar fi nume, prenume, adresa de email, locația și diferite cuvinte cheie pentru tipurile de evenimente la care doresc sa participe în cadrul unui server, folosind toate aceste informații pentru o bună funcționare și o accesare rapidă, ele fiind totodată publice pe profilul fiecărui utilizator pentru a ajuta utilizatorii să se identifice și să se cunoască mai ușor.

Specifications

Pentru realizarea acestei aplicații se vor folosi sistemul de operare Android și platforma Firebase din următoarele motive:

Sistemul de operare Android este mult mai folosit de către utilizatori indiferent de mediul de proveniență

Google API: Google oferă o varietate de API-uri care se pot folosi gratis; în cadrul aplicației “MeetYouUp” se folosesc Google Maps, Location, Google Cloud Messaging.

Folosirea platformei Firebase este pentru facilitarea creării aplicației deoarece nu se ia în considerare infrastructura și prin existența unor funcționalități precum baza de date, mesajele și spațiul de stocare se permite concentrarea mai mult asupra utilizatorilor.

Milestones

În continuare se vor prezenta capitolele ce urmează, specificându-se despre ideile principale:

Capitolul 1: Sistemul de operare Android ; în cadrul acestui capitol se discută despre sistemul de operare Android în cadrul căruia se va dezvolta aplicația. Sunt aduse informații referitoare la istoria acestuia, tipurile de aplicații ce pot rula pe acest sistem de operare și câteva curiozități.

Capitolul 2: Tehnologiile folosite ;

Capitolul 3: Prezentarea aplicației ;

Capitolul 4: Concluziile finale ; în acest capitol se vor relua subiectele mari din capitolele anterioare și se va prezenta o ideea personală a autorului despre acestea.

Capitolul 5: Bibliografie ; aici se vor prezenta sursele bibliografice ale lucrării de licență.

Capitolul 1

Sistemul de operare Android

1.1 Introducere in Android

Sistemul de operare Android este un sistem de operare pentru telefoanele mobile, mai exact smarthphone-uri, dezvoltat de Google LLC ( LLC însemnând “ Limited Liability Company”, tradus în limba română, societate cu răspundere limitată. Precum o corporație, o societate cu răspundere limitată, este o entitate legală separată și distinctă, în cadrul căreia proprietarii sunt parteneri). Acest sistem de operare se bazează pe o versiune modificată a nucleului Linux și alte programe software open source, fiind proiectat în primul rând pentru telefoane mobile cu ecran tactil, cum ar fi smarthphone-uri și tablete. Față de cum a început, Android a fost creat și pentru televizoare, Android TV, automobile, Android Auto, și pentru ceasuri de mână, Wear OS.

Inițial dezvoltat de către Android Inc. , pe care Google a cumpărat-o în 2005, Android a fost dezvăluit publicului în 2007, cu prima reclamă pentru un dispozitiv Android lansată în 2008. Sistemul de operare a trecut de atunci prin diferite lansări majore de versiuni, versiunea curentă fiind 8.1 “Oreo”, lansată în decembrie 2017. Nucleul codului sursă este cunoscut sub numele de “Android Open Source Project (AOSP)”, fiind în primul rând licențiat de către “Apache Licence”.

Android este cel mai bine vândut sistem de operare pentru smarthphone-uri din 2011 și pentru tablete din 2013. În mai 2017 a avut peste doua miliarde de utilizatori activi pe lună, iar magazinul pentru aplicații, Google Play, având stocate peste 1 milion de aplicații.

Codul sursă Android este lansat de Google sub licența unei surse deschise, natura lui deschisă încurajând o mare comunitate de programatori și entuziaști să folosească codul sursă pentru proiectele bazate pe comunitate, care oferă actualizări pentru dispozitivele mai vechi, adaugă noi caracteristici pentru utilizatorii avansați sau aduce Android la dispozitivele livrate inițial cu un alt sistem de operare[1]. Aceste versiuni dezvoltate de comunitate oferă de multe ori noi caracteristici și actualizări ale dispozitivelor mai rapid decât prin intermediul canalelor oficiale de producție / operator, cu un nivel comparabil al calității[2].

Aplicațiile care extind funcționalitățile dispozitivelor sunt scrise folosind kit-ul de dezvoltare software Android, “Android software development kit” (SDK) și folosind limbajul de programare Java. În combinații cu Java se pot folosi de asemenea si C/C++, Go, cu toate ca pentru acesta exista un set limitat de interfețe de programare a aplicațiilor (API) și Kotlin. SDK pentru Android include diferite unelte pentru dezvoltarea apliciațiilor, cum ar fi debugger, librării software, diferite emulatoare, documentații, mostre de cod sursă și bineînțeles, tutoriale. Inițial, Google a susținut modul de dezvoltare integrat (IDE – “Integrated development enviroment”) în Eclipse folosind conectorul Android Development Tools (ADT). În decembrie 2014 Google a lansat Android Studio, bazat pe IntelliJ IDEA, ca mod de dezvoltare integrat pentru dezvoltarea de aplicații Android.

Android are o continuă creștere a aplicațiilor de tip third-party. Acestea pot fi achiziționate de utilizatori prin descărcarea și instalarea fișierului APK (pachet de aplicații Android) al aplicației sau prin descărcarea acestora utilizând un program de magazin de aplicații care le permite utilizatorilor să instaleze, actualizeze și să elimine aplicații de pe dispozitivele lor. Magazinul Google Play este magazinul principal de aplicații instalat pe dispozitivele Android care respectă cerințele de compatibilitate Google și licențiază software-ul Google Mobile Services.[3]

Android încorporează caracteristici de securitate importante din industrie și lucrează cu dezvoltatorii și producătorii de dispozitive pentru a menține platforma Android și ecosistemul în siguranță. Un model robust de securitate este esențial pentru a permite un ecosistem puternic al aplicațiilor și dispozitivelor construite pe și în jurul platformei Android și susținute de serviciile cloud. Prin urmare, prin întregul ciclu de viață al dezvoltării, Android a fost supus unui program riguros de securitate[4]. În 2013 Adrian Ludwing, șeful departamentului Android pentru securitate, a spus că “mai puțin de 0,001% din instalațiile de aplicații de pe Android sunt capabile să se sustragă sistemului de apărare multistrat și să dăuneze utilizatorilor”. În alte cuvinte, Android are mai multe straturi de apărare pentru a se proteja împotriva atacurilor malware, după cum putem și observa în graficul de mai jos, figura 1.1.1, prezentat de Ludwing. Doar pentru a fi instalat, o aplicație trebuie să treacă prin Google Play sau un avertisment despre surse necunoscute (dacă este activat pe telefonul dvs.) și un utilizator care confirmă instalarea. După aceasta, trebuie să treacă peste funcția de securitate Google "Verify Apps", care verifică un fișier APK în baza sa proprie de date de malware înainte de a putea fi instalat. Apoi, aplicația este împachetată cu sandbox-uri și se limitează la permisiunile acordate acesteia, iar verificările de securitate proprii ale Android se reiau ori de câte ori se execută aplicația.

Figura 1.1.1[5]

1.2 Aplicații de tip third-party

Cea mai simplă definiție a unei aplicații de tip third-party este o aplicație creată de un furnizor (companie sau persoană fizică) care este diferită de producătorul dispozitivului și / sau al sistemului său de operare. Aplicațiile de tip third-party sunt denumite uneori aplicații pentru dezvoltatori, deoarece multe sunt create de dezvoltatori independenți sau companii de dezvoltare de aplicații.[6]

1.2.1 Cum se definesc aplicațiile de tip third-party?

Aplicațiile de tip third-party se pot împărți în trei categorii și anume:

Aplicații create pentru magazinele oficiale (în cazul Android, creat de Google, și anume Google Play Store, iar in cazul iOS, creat de Apple, Apple’s App Store) de către alți furnizori, în afara celor menționați mai sus, cu condiția ca acestea să respecte și să urmeze criteriile de dezvoltare impuse de către magazinele oficiale. De exemplu, astfel de aplicații sunt Facebook (fig. 1.2.1.1), Snapchat (fig. 1.2.1.2), etc.

Figura 1.2.1.1[7] Figura 1.2.1.2[8]

Aplicații oferite prin intermediul magazinelor de aplicații third-party sau de pe diferite site-uri web. Aceste magazine de aplicații nu sunt afiliate cu magazinele oficiale ale dispozitivelor sau ale sistemului de operare și oferă doar aplicații de tip third-party. Astfel, în cadrul acestei categorii de aplicații pot apărea riscuri mai mari în ceea ce privește securitatea.

O aplicație care se conectează la un serviciu sau la o altă aplicație. Un exemplu pentru această categorie sunt aplicațiile care, pentru a putea fi folosite, cer permisiunea de a accesa o anumită parte din profilul de Facebook al utilizatorului, Quizzstar de exemplu. În cadrul acestei categorii, aplicațiile nu sunt întotdeauna descărcate, ci doar acordându-li-se acces asupra unor informații delicate.

Aplicațiile de acest tip fac parte dintr-o categorie vastă de aplicații; fiecare din utilizatorii unui smarthpone poate deja a folosit o astfel de aplicație sau cel mai probabil o să folosească. Jocurile, aplicațiile muzicale , aplicațiile pentru cumpărături sau afaceri create de alte surse în afara producătorului dispozitivului sau a producătorului sistemului de operare, toate acestea reprezintă aplicații third-party.

1.2.2 Aplicații native VS. Aplicații third-party

Aplicațiile native sunt aplicații care sunt create și distribuite de către producătorul dispozitivului sau creatorul software pentru un anumit dispozitiv. Câteva exemple de astfel de aplicații în cazul producătorului Apple, pentru iPhone, sunt iTunes, iMessage, iBooks, iar în cazul Google pentru dispozitivele cu sistem de operare Android sunt Gmail, Google Drive, Google Chrome.

Indiferent dacă o aplicație este o aplicație nativă sau nu, acest lucru nu înseamnă neapărat că nu poate fi întâlnită și pe alte tipuri de dispozitive. De exemplu, majoritatea aplicațiilor Google au o versiune care funcționează pe iPhone și iPad oferite în magazinul oficial Apple.

1.2.3 Problemele de securitate la folosirea aplicațiilor third-party

De fiecare dată când o aplicație third-party accesează diferite informații ale utilizatorului, poate reprezenta o problemă de securitate, pentru că în cazul acestei categorii de aplicații ele pot stoca informații delicate ale utilizatorului sau pot provoca publicitate rea sau chiar afecta alte apilciații.

Fără să își dea seama, un utilizator poate cumpăra astfel de aplicații în cadrul magazinelor neoficiale la prețuri mai avantajoase și să pună în pericol informații delicate acestuia. Exemple de informații delicate extrase prin intermediul magazinelor de aplicații third-party includ numere de telefon, informații despre dispozitive și adrese de e-mail.

Cu toate acestea, magazinele neoficiale de aplicații third-part nu sunt restricționate, însemnând că nu pot fi controlate de sistemul de operare. Astfel de magazine sunt atractive pentru dezvoltatori din cauza acestei lipse de restricții. Dezvoltatorii ar putea viza publicul lor în moduri pe care nu le pot face prin magazinele oficiale de aplicații.[9]

1.3 Istoria sistemului de operare Android

De multe ori timpul trece foarte repede și avem impreisa că unele lucruri le avem dintotdeauna, cum ar fi cazul sistemului de operare Android. Astfel, sunt mai puțini de 10 ani de la apariția pe piață a primului telefon cu sistem de operare Android, iar faptul că Google a decis ca acest sistem de operare să fie unul open-source a făcut să devină foarte popular printre producătorii de dispozitive third-party. În ziua de azi, Android a devenit cel mai popular sistem de operare pentru smarthphone-uri, depășind competitori precum Apple, Symbian, BlackBerry, Palm OS, webOS și Windows Phone, acest lucru putând fi observat și în figura 1.3.1:

Figura 1.3.1[10]

1.3.1 Fondarea Android

În octombrie 2003, cu mult înainte ca termenul de "smartphone" să fi fost folosit de cea mai mare parte a publicului, și de mai mulți ani înainte ca Apple să fi anunțat iPhone și primul său sistem de operare, compania Android Inc a fost fondată în Palo Alto, California. Cei patru fondatori au fost Rich Miner, Nick Sears, Chris White, și Andy Rubin. La momentul fondării sale publice, Rubin a fost citat ca spunând că Android Inc urma să dezvolte “dispozitive mobile mai inteligente, care sunt mai conștiente de locația proprietarului și preferințele sale.” Figura 1.3.1.1 îl prezintă pe Andy Robin în timpul unei conferințe.[11]

Figura 1.3.1.1[11]

În momentul de față, cuvintele lui Robin descriu un smarthphone normal, dar atunci aceste cuvinte reprezentau o provocare, deoarece sistemul de operare Android a fost inițial creat pentru a îmbunătăți sistemul de operare al camerelor digitale. Echipa responsabilă de Android nu se gândea la crearea unui sistem de operare pentru telefoane mobile, dar faptul că piața camerelor digitale era în scădere a determinat Android Inc să transforme sistemul de operare, inițial creat pentru camere digitale, într-unul pentru smarthphone-uri, care ulterior o să devină cel mai folosit sistem de operare.

Anul 2005 a reprezintă începerea unui nou capitol pentru sistemul de operare Android, deoarece atunci Android Inc a fost cumpărată de Google. Rubin împreună cu alți membri fondatori au continuat dezvoltarea sistemului de operare, hotărându-se ca Linux să fie baze de formare a acestuia. Astfel Android urma să fie oferit altor producători de telefoane mobile gratis, mizându-se că o să aducă profit oferind alte servicii sau aplicații ce folosesc sistemul de operare.

1.3.2 Lansarea Andorid 1.0

În anul 2007 Apple a lansat primul iPhone, acest lucru deschizând o nouă ușă în ceea ce privește telefoanele mobile. În același timp, Google lucra la Android în secret, dar în luna noiembrie a acelui an, a început să prezinte planurile sale de contra-atac împotriva Apple și a altor platforme mobile. Tot în acest an a fost prezentat și Open Handset Alliace, ceea ce reprezintă un grup de 84 de companii tehnologice și de telefoane mobile care si-au unit forțele pentru a accelera inovația telefoanelor mobile și să ofere utilizatorilor o experiență mai bogată, mai ieftină și mai bună. Unele din companiile fondatoare sunt producătorii de telefoane HTC și Motorola, producătorii de cipuri Qualcom și Texas Instruments și operatorii de transport, inclusiv T-Mobile. Prin intermediul acestora s-a facilitat prezentarea primului telefon Android.

În septembrie 2008 a fost lansat primul telefon Android, T-Mobile G1, cunoscut ca “Visul HTC” în alte parți ale lumii. A putut fi achiziționat în Statele Unite ale Americii începând cu luna octombrie a aceluiași an. Design-ul telefonului, cu un ecran de 3.2 inch, touchscreen și o tastatura qwerty fizică nu era ceva nemaivăzut. Per total, telefonul a primit review-uri rele din partea criticilor tehnologici. G1 nu avea nici mufă jack, ceea ce în ziua de azi e destul de întâlnit, dar atunci aceasta reprezenta o caracteristica necesara implementată de competitorii Android.

Oricum, sistemul de operare Android 1.0 avea marca comercială a planului Google, având integrate diferite servicii și aplicații ale companiei, cum ar fi Google Maps, Youtbe și un browser HTML (pre-Chrome) care folosea servicii de căutare Google. Android 1.0 includea de asemenea și prima versiune de Android Market, magazinul de aplciații, ce urma să aibe o varietate de aplicații unice Android.

Poate toate acestea par destul de mărunte în comparație cu tehnologia din ziua de azi, dar ele reprezintă doar începutul creșterii Android pe piața dispozitivelor mobile.

1.3.3 Android și dulciurile

Majoriatea variantelor de soft pentru Android au numele de cod ca diferite dulciuri sau feluri de desert. Cu toate acestea, Android 1.0 nu a avut nici un nume de cod, conform spuselor inginerului Android Jean-Baptise Queru în 2012. Android 1.1, lansat in februarie 2009 nu a avut un nume public, dar, cu toate acestea avea un nume intern de “Petit four” în cadrul dezvoltării sale Google. Acest nume se referă la un nume de desert franțuzesc.

Câteva luni mai târziu, în aprilie 2009, a fost lansat Android 1.5, acesta versiune a sistemului de operare având numele public, și anume: “Cupcake” (Figura 1.3.3.1). Denumirea versiunilor soft pentru Andorid după dulciuri sau deserturi îi revine managerului de proiect de la Google, Ryan Gibson, însă aceasta decizie era una încă necunoscută la acel timp. La lansarea Android 4.4 KitKat (Figura 1.3.3.2) din partea Google a fost oferită o declarație oficială cu privire la numele de cod al variantelor soft pentru sistemul de operare, spunând că “din moment de aceste ne fac viețile atât de dulci, fiecare versiune Android este numită după un desert”.[11]

Figura 1.3.3.1[11] Figura 1.3.3.2[11]

1.3.4 Logo-ul Android

Bine-cunoscutul logo al sistemului de operare Android, care se aseamănă cu o combinație între un robot și un mic gândac verde, a fost creat de către Irina Blok. Acesta a spus revistei “The New York Times” în 2013 că singura directivă primită în vederea creării logo-ului a fost să se asemene unui robot. Irina Block spune că design-ul final a fost inspirat din logo-urile toaletelor, reprezentând “Bărbați” și “Femei”.

Google împreună cu Irina Block au decis ca roboțelul Andorid sa fie un proiect cu sursă deschisă. În principiu, fiecare mare companie ar dori ca logo-ul său sau mascota sa să fie nu fie modificată de alte părți, dar acesta a fost o decizie pentru a susține caracterul cu sursă deschisă al sistemului de operare Android.

Mai jos este prezentat logo-ul pentru diferite versiuni de soft (Figura 1.3.4.1) și o imagine generală (Figura 1.3.4.2):

Figura 1.3.4.1[12]

Figura 1.3.4.2[12]

Capitolul 2

Tehnologii folosite

2.1 Android Studio

Android Studio este mediul de dezvoltare integrat pentru sistemul de operare Android. Acesta are la bază software-ul IntelliJ IDEA, creat de JetBrains, special proiectat pentru dezvoltarea de aplicații Android, fiind disponibil pentru sistemele de operare Windows, macOS și Linux. Android Studio este un înlocuitor al vechiului mediu de dezvoltare integrat, Eclipse Android Development Tools, primul de acest tip pentru aplicații Android native.

Android Studio a fost prezentat publicului larg în 16 mai 2013 la conferința Google I/O. Acesta a fost în etapa de previzualizare începând cu versiunea 0.1 din mai 2013, apoi a intrat în epata beta începând de la versiunea 0.8, lansată în iunie 2014. Prima versiune stabilă a fost lansată în decembrie 2014, versiunea 1.0, iar versiunea curentă a acestuia este 3.1 lansată în martie 2018.

În continuare vom prezenta unele din funcționalitățile care fac Android Studio un software atât de fiabil și de calitate pentru crearea de aplicații Android:

Scrierea de cod sursă și iterarea acestuia rapidă

Instant Run: Această funcționalitate propagă schimbările de cod sursă sau de resurse direct în aplicația pornită, funcționând într-un mod inteligent astfel că în unele situații schimbările nu necesită restartarea aplicației sau reconstruirea APK (Pachet de aplicații Android).

Editor de cod sursă: Editorul de cod sursă al Android Studio ajută dezvoltatorii de aplicații Android să scrie linii de cod mai rapide și mai bune oferind completări avansate de cod sursă, refactorizare și analiză a codului; pe măsură ce un dezvoltator scrie cod sursă, acesta primește sugestii de completare din partea Android Studio.

Android Emulator: Această funcționalitate permite instalarea de dispozitive mobile, tablete sau dispozitive Android și funcționarea acestora virtuală precum un dispozitiv adevărat, limitările fiind unele foarte mici.

Instrumente ajutătoare pentru a asigura productivitatea

Șabloane de cod și mostre de aplicații: Android Studio conține șabloane de cod care fac folosirea unor modele de proiectare mult mai accesibilă, permite folosirea unor mostre de cod din cadrul API-urilor folosite și chiar importarea de aplicații complet funcționale de pe GitHub.

Lintelligence: Un framework robust de analiză statică care presupune analiza codului sursă și semnalizarea dezvoltatorului în cazul unor erori de programare, diferite probleme, fie ele de performanță sau securitate, sau construcții de cod care pot fi optimizate, toate acestea putând fi corectate foarte ușor.

Instrumente de testare: Android Studio oferă instrumente pentru testarea aplicațiilor prin JUnit 4 și framework-uri pentru testarea funcțională a interfeței utilizator. Cu ajutorul Espresso Test Recorder se pot genera test pentru interfața utilizator care înregistrează interacțiunile cu un dispozitiv sau cu emulatorul.

Folosirea de resurse externe, cum ar fi Firebase

Asistentul Firebase din cadrul Android Studio ajută dezvoltatorii să își conecteze aplicația la Firebase și să adauge servicii acesteia prin proceduri pas-cu-pas. Unele din serviciile menționate anterior sunt: statistici, autentificare, notificări, baza de date, spațiu de stocare online. Acest subiect va fi reluat în continuare în cadrul subcapitolului “2.2 Firebase”.

Un editor de layout puternic care permite drag-and-drop pentru componentele din interfața utilizator, precum și opțiunea de a previzualiza layout-urile pe mai multe configurații de ecran

Toate proiectele Android Studio au un model de construcție bazat pe Gradle

Gradle este un instrument de automatizare a proiectelor care a înlocuit Apache Ant ca sistem de construcție primară pentru aplicații Android. Acesta a are o popularitate crescută în rândul dezvoltatorilor Android deoarece prin intermediul său se pot configura toate fazele de construire ale unui proiect cu ajutorul plugin-urilor, se asigură conectarea folosind configurarea corectă, administrarea dependințelor externe, reutilizarea de cod sursă și resurse, etc.

După prezentarea funcționalităților și posibilităților din cadrul Android Studio urmează prezentarea conceptelor de bază ale acestuia, aceste informații fiind menite să aducă în prim-plan modul de realizare al aplicației “MeetYouUp” :

Activitate: O activitate este un modul unic, independent de funcționalitatea aplicației, care de obicei se corelează direct cu un singur ecran din interfața utilizatorului și cu funcționalitatea corespunzătoare. Activitățile din sistem sunt gestionate sub forma unei stive de activități. Când o activitate nouă este pornită, ea este plasată în vârful stivei și devine activitatea în desfășurare (activă), activitatea anterioară rămâne întotdeauna sub cea activă în cadrul stivei, iar aceasta din urmă intră din nou în prim-plan doar la ieșirea din acesta a activității în desfășurare. O activitate are în esență 4 stări:

Dacă o activitate este în prim-planul ecranului, atunci ea este o activitate în desfășurare sau activă.

Dacă o activitate nu mai este în prim-plan, dar totuși este vizibilă, atunci ea este întreruptă. O activitate întreruptă este în continuare viabilă, dar ciclul său de viață poate fi oprit de către sistem în caz de lipsă de memorie.

Dacă o activitate este complet ascunsă de o altă activitate, ea este oprită. Încă mai păstrează toate stările și informațiile, însă nu mai este vizibilă pentru utilizator, astfel încât fereastra sa este ascunsă și adesea ciclul său de viață va fi oprit de către sistem când memoria este necesară în altă parte.

Dacă o activitate este întreruptă sau oprită, sistemul poate elimina activitatea din memorie. În acest caz, când va fi din nou afișată utilizatorului aceasta trebuie să fie complet reluată și restaurată la starea sa anterioară.

Intenție (în continuare vom folosi termenul din limba engleză pentru a ne referi la aceasta – “intent”): Componentele aplicațiilor Android se pot conecta la alte componente din cadrul aplicațiilor Android. Această conexiune se bazează pe o descriere a sarcinii reprezentată de un obiect Intent. Intents (ro. – Intențiile) sunt mesaje asincrone care permit componentelor aplicației să solicite funcționalitate de la alte componente Android. Intențiile permit să interacționarea cu componente din aceleași aplicații, precum și cu componentele contribuite de alte aplicații. De exemplu, o activitate poate începe o activitate externă pentru a face o fotografie.

Vizualizare (în continuare vom folosi termenul din limba engleză pentru a ne referi la aceasta – “view”): Această clasă reprezintă elementul de bază pentru componentele interfeței utilizator. Un “View” ocupă o zonă dreptunghiulară pe ecran și este responsabilă de desen și de manipularea evenimentelor. “View” este clasa de bază pentru widget-uri, care sunt folosite pentru a crea componente interactive din interfața utilizatorului (butoane, câmpuri de text, etc.). Subclasa ViewGroup este clasa de bază pentru machete (en. – “layouts”), care sunt containere invizibile care dețin alte Vizualizări (sau alte ViewGroups) și definesc proprietățile lor de aspect.

Machetă (în continuare vom folosi termenul din limba engleză pentru a ne referi la aceasta – “layout”): Layout este o vizualizare a unui container care este proiectat pentru a controla modul în care elementele derivate din view sunt poziționate pe ecran. Unele layout-uri sunt LinearLayout, TableLayout, RelativeLayout, GridLayout, CoordinatorLayout, ConstraintLayout, FrameLayout etc. În mod implicit, Android Studio 3.0 va suporta ConstraintLayout.

Resurse: Conține resurse, cum ar fi șiruri de caractere, imagini, fonturi și culori care apar în interfața cu utilizatorul, împreună cu reprezentarea XML a layout-urilor interfeței utilizator. Tot textul dintr-o interfață de utilizator este conținut în fișierele de resurse (implicit este șirDeCaractere.xml).

2.2 Firebase

Firebase este o platformă de dezvoltare a aplicațiilor mobile și web care oferă dezvoltatorilor o multitudine de instrumente și servicii pentru ai ajuta să dezvolte aplicații de înaltă calitate, să își dezvolte baza de utilizatori și să câștige mai mult profit.

Înapoi în 2011, înainte ca Firebase să fie Firebase, a fost un startup numit Envolve. În calitate de Envolve, a oferit dezvoltatorilor un API care a permis integrarea funcționalității de chat online pe site-ul lor. Ce este interesant este faptul că publicul larg a folosit Envolve pentru a transmite datele aplicației care erau mai mult decât mesaje de chat. Dezvoltatorii utilizau Envolve pentru a sincroniza datele aplicației în timp real pentru utilizatorii lor. Acest lucru a condus fondatorii Envolve, James Tamplin și Andrew Lee, pentru a separa sistemul de chat și arhitectura în timp real. În aprilie 2012, Firebase a fost creat ca o companie separată care a furnizat Backend-as-a-Service cu funcționalitate în timp real.

După ce a fost achiziționat de Google în 2014, Firebase a evoluat rapid în moneda multifuncțională a unei platforme mobile și web pe care o deține astăzi. În Figura 2.2.1 se poate observa logo-ul Firebase:

Figura 2.2.1[13]

Firebase ajută dezvoltatorii de aplicații mobile sau web să treacă peste anumite aspecte de implementare, astfel dorindu-se ca aceștia să se axeze mai mult asupra realizării de experiențe fantastice pentru utilizatori. Folosind Firebase, un dezvoltator software nu trebuie să țină cont de gestionarea serverelor necesare aplicației sale; nu este nevoie de scrierea API-urilor. Toate acestea plus multe alte funcționalități, care vor fi prezentate mai jos, reprezintă avantajele folosirii Firebase.

Serviciile puse la dispoziția publicului larg se pot împărți în 2 mari categorii, după cum se observa în Figura 2.2.2:

Figura 2.2.2[14]

În continuare vom prezenta mai amănunțit serviciile Firebase folosite în cadrul aplicației “MeetYouUp”:

Baza de date în timp real (Realtime Database):

Una din deciziile primordiale pentru dezvoltarea unei aplicații este folosirea unei baze de date de tipul SQL sau NoSQL. Convenționalele baze de date SQL sunt concepute pentru tranzacții fiabile și interogări ad-hoc, având un sistem de consistență al datelor mare, dar totodată limitat de proprietățile ACID (4 proprietăți referitoare la consistența datelor și anume: atomicitate, consistență, izolare și durabilitate), iar această limitare afectează viteza și scalabilitatea operațiilor asupra datelor. Ca un răspuns asupra acestor limitări a apărut bazele de date NoSQL care lasă în urmă aceste principii. Sistemele NoSQL stochează și gestionează datele în moduri care permit o viteză operațională ridicată și o mare flexibilitate din partea dezvoltatorilor. Multe dintre ele au fost dezvoltate de companii precum Google, Amazon, Yahoo și Facebook, care căutau modalități mai bune de a stoca conținuturi sau de a procesa date pentru site-uri masive. Spre deosebire de bazele de date SQL, multe baze de date NoSQL pot fi scalate orizontal în sute sau mii de servere.

Firebase Realtime Database este o bază de date care are o arhitectură NoSQL. Acesta este o bază de date găzduită în cloud. Datele sunt stocate ca JSON și sincronizate în timp real cu fiecare client conectat. La construirea aplicațiilor cross-platform cu kiturile Firebase SDK pentru iOS, Android și JavaScript, toți clienții partajează o instanță a bazei de date Realtime și primesc automat actualizări cu cele mai noi date.

Capacitățile cheie sunt:

În timp real (Realtime): În locul cererilor tipice HTTP, baza de date Firebase Realtime utilizează sincronizarea datelor – de fiecare dată când se schimbă datele, orice dispozitiv conectat primește această actualizare în milisecunde. Astfel se oferă experiențe colaborative și imersive fără gândul la codul de rețea. Această funcționalitate este prezentată în Figura 2.2.3.

Offline: Aplicațiile Firebase rămân active chiar și atunci când sunt offline, deoarece fișierul SDK pentru baza de date în timp real Firebase persistă informațiile pe disc. Odată ce conectivitatea este restabilită, dispozitivul client primește toate modificările pe care le-a ratat, sincronizând-o cu starea curentă a serverului.

Accesibile direct de pe dispozitivele client: Baza de date Firebase Realtime poate fi accesată direct de pe un dispozitiv mobil sau browser web; nu este nevoie de un server al aplicației. Securitatea și validarea datelor sunt disponibile prin regulile Firebase Realtime Database Security, reguli bazate pe expresii care sunt executate atunci când datele sunt citite sau scrise.

Figura 2.2.3[15]

Autentificare: Majoritatea aplicațiilor trebuie să știe identitatea unui user. Știind identitatea unui user îi permite unei aplicații să salveze în siguranță datele utilizatorului în cloud și oferă aceeași experiență personalizată pe toate dispozitivele utilizatorului. Firebase Authentication oferă servicii backend, SDK-uri ușor de folosit și biblioteci UI gata de utilizare pentru a autentifica utilizatorii în aplicația dvs. Acesta susține autentificarea utilizând parole, numere de telefon, furnizori de diferite servicii cum ar fi Google, Facebook și Twitter și multe altele.

Stocare (Cloud Storage): În cadrul stocării Firebase, toate informațiile sunt stocate în cloud. Aceasta este folosită de către dezvoltatori în cadrul aplicațiilor în momentul în care se dorește stocarea de conținut din partea utilizatorilor, cum ar fi fotografii sau videoclipuri. Cloud Storage pentru Firebase este un serviciu de stocare a obiectelor puternic, simplu și eficient, construit pentru Google. SDK-urile Firebase pentru spațiul de stocare în Cloud adaugă securitatea Google pentru încărcarea și descărcarea de fișiere pentru aplicațiile Firebase, indiferent de calitatea rețelei. Se pot utiliza SDK-urile Firebase pentru a stoca imagini, audio, video sau alte conținuturi generate de utilizatori. În continuare vom prezenta capacitățile cheie:

Operații robuste: SDK-urile pentru Cloud Storage efectuează încărcări și descărcări indiferent de calitatea rețelei. Încărcările și descărcările sunt robuste, ceea ce înseamnă că repornește unde s-au oprit, salvând utilizatorilor timpul și lărgimea de bandă.

Securitate puternică: SDK-urile pentru Cloud Storage se integrează cu autentificarea Firebase pentru a oferi autentificare simplă și intuitivă dezvoltatorilor. Se poate utiliza modelul de securitate declarativ pentru a permite accesul bazat pe numele fișierului, dimensiunea, tipul de conținut și alte metadate.

Scalabilitate ridicată: Cloud Storage pentru Firebase este construit pentru scală exabyte atunci când aplicația devine virală. Se poate realiza cu ușurință creșterea de la prototip la producție folosind aceeași infrastructură care are putere Spotify și Google Photos.

2.3 Picasso

Picasso este o bibliotecă de imagini pentru sistemul de operare Android. Aceasta este creată și întreținută de către compania “Square”, scopul său fiind încărcarea și procesarea de imagini, simplificând foarte mult vizualizarea de imagini ce provin din surse externe, mai exact; adesea doar câteva linii de cod duc la implementarea acestei librării. Picasso strălucește pentru afișarea imaginilor la distanță, biblioteca ocupându-se de fiecare etapă a procesului, de la cererea inițială HTTP la cache-ul imaginii.

În cazul folosirii Android Studio pentru dezvoltarea de aplicații Android, instalarea bibliotecii Picasso este una simplistă, tot ce este necesar fiind adăugarea unei dependințe în fișierul Gradle, și anume:

‘implementation 'com.squareup.picasso:picasso:2.71828’[16].

În continuare se va prezenta modul de lucru intern al acestei biblioteci (Figura 2.3.1) și explicat pe componente:

Figura 2.3.1[17]

Printr-o declarație similară cu acea ce urmează, unde URL reprezintă url-ul imaginii dorite, biblioteca Picasso încarcă imaginea dintr-o sursă externă direct în interiorul aplicației; de asemenea putând fi adăugate diferite argumente, cum ar fi redimensionarea imaginii, centrarea acesteia, posibilitatea efectului de “fade-in” , etc:

Picasso.get().load(URL).into(imageView);

Înainte de a stabili operațiile de încărcare a imaginii se vor prezenta aspectele de creare ale unui obiect de tip Picasso:

public Picasso build() {
Context context = this.context;

if (downloader == null) {
downloader = new OkHttp3Downloader(context);
}
if (cache == null) {
cache = new LruCache(context);
}
if (service == null) {
service = new PicassoExecutorService();
}
if (transformer == null) {
transformer = RequestTransformer.IDENTITY;
}
Stats stats = new Stats(cache);
Dispatcher dispatcher = new Dispatcher(context, service, HANDLER, downloader, cache, stats);
return new Picasso(context, dispatcher, cache, listener, transformer, requestHandlers, stats,
defaultBitmapConfig, indicatorsEnabled, loggingEnabled);
}[17]

După cum putem observa, obiectul Picasso este creat din diferite componente, cum ar fi: downloader, cache, executor, transformer, etc. Biblioteca oferă programatorului o implementare personalizată a acestor componente, dar și una implicită.

ExecutorService: Picasso gestionează mai multe solicitări de imagini cu ajutorul unui executor. Implementarea implicită are următoarele responsabilități:

Ajustarea numărului de thread-uri

Executorul va prelua sarcina de încărcare a imaginii pe baza priorității sale. În implementarea implicită, Picasso suportă doar trei tipuri de priorități – LOW, NORMAL și HIGH

Cache

Picasso folosește clasa LruCache pentru furnizarea implementării memoriei cache. Această clasă alocă dimensiunea maximă a cache-ului la aproximativ 15% din dimensiunea totală a mărimii aplicației atribuite. Această memorie cache se utilizează pentru a stoca Bitmap-uri ale imaginilor încărcate.

Downloader

Principala responsabilitate a acestei clase este implementarea funcției load () care ia okhttp3.Request ca intrare și returnează okhttp3.Response ca ieșire. Această clasă are, de asemenea, grijă de memoria cache a discului.

RequestTransformer

Conform documentației Picasso, această clasă este invocată imediat înainte de depunerea fiecărei cereri. Aceasta poate fi utilizată pentru a modifica orice informație despre o solicitare.

După obținerea unui obiect Picasso, urmează încărcarea imaginii într-un ImageView; sarcinile pentru a realiza acest aspect sunt realizate de către clasele:

RequestCreator: Aceasta încarcă imaginea, iar la încărcarea acesteia într-un ImageView se creeză un obiect de tip Action, fiecare dintre aceste obiecte având o cheie de solicitare și fiind expediat clasei Dispatcher.java.

Dispatcher: Această clasă stochează toate cheile de solicitare într-un dicționar. Dacă cheia nu este găsită în dicționar, dispecerul creează un obiect BitmapHunter (Runnable) și îl trimite la PicassoExecutorService. Dacă cheia este deja prezentă, atunci atașează ImageView-ului obiectul BitmapHunter.

BitmapHunter: Această clasă extinde interfața Runnable și rulează pe executor. Principalele responsabilități sunt:

Returnează bitmap-ul din memoria cache dacă cheia este deja prezentă în memoria cache.

Dacă cheia nu este în memoria cache, atunci îi cere unui obiect de tip NetworkRequestHandler să returneze fluxul de date al imaginii.

Odată ce rezultatul este returnat de la obiectul NetworkRequestHandler, această clasă decodează fluxul la bitmap și stochează bitmap-ul în memoria cache.

NetworkRequestHandler:

Returneză fluxul imaginii de pe cache-ul discului dacă cheia se află deja în cache.

Dacă cheia nu se află cache-ul discului, atunci obiectul de tip Downloader inițiază solicitare de rețea.

Odată ce solicitarea de rețea s-a produs cu succes, obiectul de tip Downloader stochează fluxul imaginii pe disc și dă mai departe rezultatul către clasa BitmapHunter.

Capitolul 3

Prezentarea aplicației

3.1 Prezentarea ideii

“Știința și tehnologia au avut un impact major asupra societății, iar acest impact este în creștere. Prin schimbarea drastică a mijloacelor de comunicare, a modului de lucru, a gospodăriei, a hainelor, și mâncării, mijloacelor de transport, și, într-adevăr, chiar și durata și calitatea vieții însăși, știința a generat schimbări în ceea ce privește valorile morale și filozofiile de bază ale omenirii.

Începând cu plugul, știința a schimbat a schimbat modul în care trăim și ceea ce credem. Făcând viața mai ușoară, știința a dat omului șansa de a urmări preocupările sociale cum ar fi etica, estetica, educația și justiția; să creeze culturi; și să îmbunătățească condițiile umane. Dar, de asemenea, ne-a plasat în poziția unică de a fi capabili să ne distrugem.”[18]

Din ce în ce mai mult, generație după generație, oamenii se apropie tot mai mult de tehnologie, caută să aibe sau să cunoască detalii despre ultimele dispozitive referitoare la aria lor interes, dar nu numai. Omul modern îmbrățișează tot mai ușor tehnologia, iar în ziua de azi, aproape orice detaliu al vieții este trecut prin prisma digitală.

“Televiziunea sau radioul au fost implementate după zeci de ani de muncă, în timp ce internetul sau computerele au fost integrate în mai puțin de un deceniu, după spusele inventatorului și vizionarului Ray Kurzweii în cadrul conferinței TED Global din 2005.

Primele telefoane mobile (pe care mulți le numesc azi „cărămizi”) nu erau numai voluminoase, grele și dificil de utilizat, dar aveau și o durată de viață a bateriei foarte scăzută. De exemplu, telefonul pe care Martin Cooper (Motorola) l-a folosit în 1973 pentru a efectua primul apel telefonic cu ajutorul unui dispozitiv fără fir avea mai mult de un kilogram (2,5 pounds), măsura 25,4 centimetri, iar bateria nu ținea mai mult de 20 de minute.

Implementarea telefoanelor mobile a durat în jur de opt ani, în timp ce telefoanele cu fir au apărut după jumătate de secol de teste și cercetări, susține Kurzweil. Procesul de revoluționare tehnologică a fost posibil tocmai datorită folosirii tehnologiilor de ultimă generație în crearea viitoarelor tehnologii, completează el.”[19]

Referitor la prima parte a acestui capitol și la evoluția telefoanelor mobile, un număr foarte mic din beneficiarii procesului tehnologic nu dispune în ziua de azi de un smarthphone. Acest dispozitiv a devenit de la un obiect foarte practic, utilizarea lui de bază fiind să comunici cu alte persoanele aflate la distanță, la un lucru indispensabil pentru mulți dintre noi, iar dacă considerați această afirmație eronată supuneți-vă unui test, cât timp reușiți să petreceți fără a vă folosi smarthphone-ul? Ideea pe care doresc să o evidențiez este că telefonul mobil s-a transformat dintr-un produs într-un prieten tehnologizat.

Folosirea tehnologiei în viața de zi cu zi au dus, mai mult sau mai puțin, la reducerea interacțiunilor în societatea umană, fiind mult mai ușor să suni pe cineva, fie audio sau fie video, cu ideea de a fi la curent cu viața respectivului sau respectivei. Oamenii petrec mai mult timp în casă bucurându-se de beneficiile tehnologiei, acest lucru fiind după bunul plac al fiecăruia, fie că au sau nu posibilitatea de a socializa cu alte persoane sau nu.

Punctul culminant unde doresc să îndrept acest subiect este momentul când dispui de tehnologie, dar se dorește interacțiunea cu alte persoane, persoane pe care nu le cunoști și pe care în circumstanțe normale nici nu o să realizezi acest lucru. Să presupunem că într-o zi ai dori să mergi la o piesă de teatru, la un meci de fotbal, la o plimbare prin parc, să mergi într-o expediție sau pur și simplu dorești să cunoști persoane noi și nici unul dintre prietenii sau prietenele tale nu dorește sa te acompanieze, sau le este imposibil din diferite motive, acest lucru simbolizând un impas. În astfel de situații facem compromisuri asupra lucrurilor ce ne face plăcere sa le facem în deficitul lipsei de companie.

Soluția ce o aduc în discuție pentru a trata această problemă, acest impas, este aplicația mobile pentru telefoanele ce suportă sistemul de operare Android, și anume MeetYouUp. Această aplicație presupune crearea unui cont individual din partea fiecărui utilizator, după care permite accesul la diferite tipuri de evenimente create de către alți utilizatori. Evenimentele pot fi situate pe orice ramură de interes (de exemplu teatru, operă, activități sportive, gaming, petreceri, etc.), iar participarea la acestea fiind la latitudinea utilizatorului. Astfel, un utilizator ce folosește pentru prima dată această aplicație nu trebuie să își facă probleme dacă o să aibe cunoștințe sau nu ce vor participa la eveniment, scopul aplicației fiind acela de a încuraja interacțiunile între utilizatori, de a crește cercurile de prieteni ale acestora și în același timp de a satisface dorințele de a-și petrece petrece timpul liber în felul său al fiecărui utilizator.

În viziunea mea, principalele aspecte îmbunătățite după implementarea și folosirea de către publicul larg ale aplicației sunt:

Creșterea numărului de cunoștințe/prieteni ale/ai utilizatorului

Organizarea ușoară de evenimente cu interes comun pentru mai mulți utilizatori

Încurajarea de interacțiunilor între utilizatori în afara aplicației

Mărirea cercului de persoane cu interese comune cu ale utilizatorului

Posibilitatea de a participa la activități noi/diferite

3.2 Descrierea aplicației

În cadrul acestui subcapitol se va dori prezentarea a doua aspecte, și anume, enunțul problemei, specificându-se totodată și funcționalitățile aplicației, și proiectarea aplicației.

3.2.1 Enunțul problemei

Precum am menționat anterior, scopul acestei aplicații este de a ajuta utilizatorii să găsească sau să creeze evenimente de diferite tipuri pentru timpul liber și să încurajeze interacțiunea dintre aceștia.

Vom formula în continuare o posibilă cerință a problemei:

Să se creeze o aplicație mobile pentru sistemul de operare Android care să permită gestionarea de evenimente create de un user. Un user pentru a putea folosi aplicația trebuie sa fie înregistrat cu email, parolă, nume, o descriere a profilului său, data nașterii, un șir de cuvinte cheie și o poză de profil.

Un user poate crea evenimente în care să seteze numărul limită de persoane ce o sa participe sau în care fiecare participant trebuie să obțină mai întâi acceptul administratorului de eveniment pentru a participa. Detaliile oferite pentru crearea unui eveniment sunt: nume, descriere, locație, oră, cuvinte cheie și o imaginea de copertă a evenimentului. Un user trebuie să aibe acces la evenimentele create de acesta, cât și la evenimentele la care dorește să participe.

Pe lângă crearea unui eveniment, un user poate să caute evenimente după cuvinte cheie sau după o anumită locație, evenimente la care dacă dorește să poată participa.

Pentru evenimentele la care se dorește participarea, un user poate lăsa un comentariu public, afișat în lista de comentarii a evenimentului.

O altă funcționalitate este crearea de grupuri. Un grup are următoarele caracteristici: nume, descriere, număr de membri și o imagine de copertă. Orice grup trebuie să suporte funcționalitatea de adăugare a altor useri în grup. În cadrul unui grup se pot distribui evenimente de către userii membrii.

Pe lângă cele menționate mai sus, un user este capabil să își schimbe parola contului prin resetarea acesteia via email și să își editeze informațiile referitoare asupra profilului său.

3.2.2 Proiectarea aplicației

da

Capitolul 6

Bibliografie

[1] – Mc Ferran Damien: “Best custom ROMs for the Samsung Galaxy S2”, CNET, CBS Iteractive, 17 Aprilie 2012:

https://web.archive.org/web/20120419194709/http://reviews.cnet.co.uk/mobile-apps/best-custom-roms-for-the-samsung-galaxy-s2-50007658

[2] – Russakovskii Artem: “Custom ROMs For Android Explained – Here Is Why You Want Them”, Android Police, 1 Mai 2010:

https://www.androidpolice.com/2010/05/01/custom-roms-for-android-explained-and-why-you-want-them/

[3] – Wikipedia The Free Encyclopedia, “Android (operating system)” :

https://en.wikipedia.org/wiki/Android_(operating_system)

[4] – Android Source: “Security”:

https://source.android.com/security/

[5] – Alan Henry, “How Secure Is Android, Really?”, 16 Octombrie 2013:

https://lifehacker.com/how-secure-is-android-really-1446328680

[6] – Renée Lynn Midrack, “What is a Third-Party App?”, 9 Decembrie 2017:

https://www.lifewire.com/what-is-a-third-party-app-4154068

[7] – Andrea López, “Lo que necesitas saber sobre los nuevos botones de Facebook”, 24 Februarie 2016:

http://tecreview.itesm.mx/lo-que-necesitas-saber-sobre-los-nuevos-botones-de-facebook/

[8] – Cella Lao Rousseau, “How to use Snapchat on Android”, 3 Iulie 2016:

https://www.androidcentral.com/how-use-snapchat-android

[9] – Authored by a Symantec employee, “The Risks of Third Party App Stores”:

https://us.norton.com/internetsecurity-mobile-the-risks-of-third-party-app-stores.html

[10] – Jeff Dunn, “There’s no hope of anyone catching up to Android and iOS”, 22 August 2016:

http://www.businessinsider.com/smartphone-market-share-android-ios-windows-blackberry-2016-8

[11] – John Callaham, “The history of Android OS: its name, origin and more”, 26 Martie 2018:

https://www.androidauthority.com/history-android-os-name-789433/

[12] – Nicolas Colin, “Infography on Android logo history”, 17 Noiembrie 2014:

https://yunmai.wordpress.com/tag/android-logo-history/

[13] – GeekyAnts, “Introduction to Firebase”, 28 Decembrie 2017 (informații preluate în 29 Mai 2018):

https://hackernoon.com/introduction-to-firebase-218a23186cd7

[14] – Yasin Çetiner, “Firebase Services”, 18 August 2016 (informații preluate în 31 Mai 2018):

https://www.slideshare.net/Yasinetiner/firebase-services

[15] – Pablo A. Martínez, “Lessons learnt (the hard way) using Firebase RealTime Database”, 24 Februarie 2018 (informații preluate în 31 Mai 2018):

https://pamartinezandres.com/lessons-learnt-the-hard-way-using-firebase-realtime-database-c609b52b9afb

[16] – Picasso website (informații preluate în 10 Iunie 2018):

http://square.github.io/picasso/

[17] – Anshul Jain, “Decoding Picasso library- one image at a time.”, 9 Ianuarie 2018 (nformații preluate în 10 Iunie 2018):

https://medium.com/mindorks/decoding-picasso-library-one-image-at-a-time-c28e97e28e92

[18] – James Burke, Jules Bergman, Isaac Asimov: “The impact of science on society”, University Press of the Pacific, 1 Iunie 2005:

https://history.nasa.gov/sp482.pdf

[19] – Semnele Timpului, “Cum ne-a schimbat evoluția tehnologică viața”, 12 Aprilie 2013 (informații preluate în 10 Iunie 2018):

https://semneletimpului.ro/stiinta/tehnologie/cum-ne-a-schimbat-evolutia-tehnologica-viata.html

[20] –

Similar Posts