Elaborarea Unui Agregator A Fluxurilor Web Pentru Android
ELABORAREA UNUI AGREGATOR A FLUXURILOR WEB PENTRU ANDROID
CUPRINS
INTRODUCERE
1. Capitolul i. Analiză și fundamentare teoretică
1.1. Informația. Clasificare și proprietăți
1.1.1. Tipuri de informație
1.1.2. Purtători de informație
1.1.3. Proprietățile informației
1.2. Informația mixtă. Tipuri de informație mixtă pe internet
1.2.1. Știrile
1.2.2. Facturile
1.2.3. Prognoza meteorologică
1.2.4. Cursul valutar
1.2.5. Horoscop
1.2.6. Podcasting
1.3. Modalități de primire automată a informației
1.3.1. Abonare pe Email
1.3.2. Fluxurile WEB
1.4. Serviciile WEB
1.4.1. WEB API. REST
1.5. XML – Standart pentru marcarea datelor structurare
1.6. Sistemele de operare
1.3.1. Sistemele de operare mobile
1.3.2. Evoluția consumului de internet pe mobil contra desktop
2. CApitolul II. Proiectare de detaliu și implementare
2.1. Tehnologii utilizate
2.1.1. Sistemul de operare Android
2.1.2. Elemente componente a unei aplicații pe Android
2.1.3. Procese și fire de execuție în Android
2.1.4. Ciclul de viață a unei aplicații în Android
2.1.5. Google feeds API
2.1.6. Google Translate text-to-speech
2.1.7. Yandex Translate
2.1.8. Material design
2.2. Tool-uri folosite
2.2.1. Android Studio
2.2.2. Gradle
2.2.3. Android SDK
2.2.4. Google APIs add-on
3. capitolul iii. Utilizarea aplicației
3.1. Descrierea aplicației
3.2. Scenarii de utilizare
3.2. Ghid de instalare
CONCLUZII
BIBLIOGRAFIE
ANEXA 1.Codul sursă
INTRODUCERE
Cînd vine vorba de evenimente sau știri importante, toată lumea vrea să aibă informații la zi. Site-urile interesante sunt la tot pasul, dar e greu de a le urmări mereu pe cele preferate. Bineînțeles, este posibil de a face o colecție de bookmark-uri, doar că metoda aceasta e cea mai anevoioasă. În primul rând, utilizatorul trebuie să facă toate acțiunile, ceea ce ia timp pe lîngă faptul că lucrurile se complică atunci când are multe site-uri favorite salvate în lista de bookmark-uri. În plus, este posibilitatea de a pierde știri și informații importante dacă nu le verifică manual tot timpul.
Din fericire, datorită dezvoltării platformelor și dispozitivelor mobile, există posibilitatea de a crea o soluție comodă care ar rezolva problema dată. Cea mai simplă dintre toate este o aplicație care întrunește în sine toate fluxurile care vin de pe site-urile preferate. Majoritatea site-urilor oferă acces la flux-urile sale care aduc toate noutățile pe loc, făcând acest lucru pentru utilizator.
Deseori se întîmplă ca informația de ultimă oră să apară sau există doar pe resurse în limbi străine. Această problemă poate fi rezolvată prin implementarea funcționalității de a o traduce în orice limbă aleasă de utilizator. Mai mult, datorită API-urilor publice de la marii giganți IT, putem multiplica experiența de captare a informației prin redarea acesteia în voce de către aplicație. Aceste funcționalități sunt utile, dar lipsesc la agregatoarele de fluxuri care deja există.
Lucrarea elaborată este structurată pe 3 capitole.
Capitolul I – prezintă definiții și noțiuni cu privire la ceea ce este informația, criteriile de clasificare a acesteia precum și evoluția și modalitățile de consumare a informației din trecut pîn în prezent. Internetul este privit ca cea mai modernă și utilizată sursă pentru răspîndirea informației. La fel sunt descrise cele mai pupulare modalități de transmitere a informației pe internet, mijloacele utilizate și standartele în acest domeniu. A fost pus accentul pe faptul că consumul informației de pe internet este efectuat din ce în ce mai mult de pe device-urile mobile, fapt fiind demonstrat de datele statistice puse la dispoziție de cele mai mari resurse de noutăți.
În Capitolul II sunt descrise soluțiile software de proiectare și dezvoltare a aplicațiilor pentru sistemul de operare Android: carcaterizarea însăși a sistemului de operare care găzduiește aplicația, care sunt principalele componente a unei aplicații și modul de funcționare a acestora. De asemenea au fost prezentate tehnologiile utilizate care au ajutat implementarea principalelor funcționalități a softului: Google feeds API, Google Translate Text-To-Speech și Yandex Translate API. În capitolul dat au fost expuse și caracteristicile ultimii tendințe de design de la Google: Material Design. Tot în acest capitol au fost enumerate și descrise tool-urile care au fost folosite la dezvoltarea aplicației.
Capitolul III – În acest capitol se descrie aplicația, cîteva scenarii de utilizare a acesteia și modul de instalare a acesteia pe orice dispozitiv care rulează sistemul de operare Android.
În cadrul acestui proiect se urmărește realizarea unei aplicații software proiectată pentru a rula pe smartphone-uri cu sistemul de operare Android, care să reprezinte un agregator pentru toate fluxurile web a utilizatorului.
Aplicația ar pune la dispoziția utilizatorului următoarele funcționalități:
Posibilitățile de manipulare cu fluxurile web, astfel utilizatorul va avea posibilitatea de adaugare, ștergere a propriilor fluxuri.
Posibilitatea căutării resurselor care l-ar interesa pe utilizator în baza unor cuvinte cheie. În baza integrării în aplicație a Google Feeds API, există posibilitatea de a căuta un flux web în baza unor cuvinte cheie. Acestea pot fi numele site-ului, o categorie de știri, un tip de informație, etc. (de exemplu: unimedia, sport, curs valutar).
Posibilitatea vizualizării conținutului formatat așa cum este pe sursa de unde acesta vine, precum și funcționalitatea de deschidere în browser a link-ului de unde provine informația.
Posibilitatea de a alege modul de formatare a textului de către aplicație.
Posibilitatea de a putea salva și de a vizualiza offline (în lipsa internetului) articolele alese de utilizator.
Posibilitatea de face share pe rețelele de socializare sau în alte aplicații a link-ului de unde vine informația.
Posibilitatea de a traduce conținutul itemilor în una din cele 32 de limbi puse la dispoziție de API-ul public de la Yandex Translate și de a reveni oricînd la conținutul original.
Posibilitatea de a reda cu voce conținutul itemilor folosind Google Translate Text-To-Speech API.
Crearea unei interfețe grafice intuitive de tip Material Design după ultemele recomandări și guideline-uri de la Google.
CAPITOLUL I. ANALIZĂ ȘI FUNDAMENTARE TEORETICĂ
1.1 Informația. Clasificare și proprietăți
Informația este o comunicare scrisă, orală sau de altă natură, care îmbogățește cunoștințele noastre despre mediul înconjurător (despre obiecte, evenimente, situații etc.). [1]
Informația neprelucrată poartă denumirea de date.
Prin prelucrarea informației se înțeleg reguli, metode, proceduri de înregistrare, stocare, păstrare, transformare, transmitere și repartizare a informației.
Caracteristicile conținutului informației sunt:
actualitate;
valoare;
autenticitate;
claritate;
plinătate;
cantitate.
Dacă informația reflectă real diferite situații sau fapte, ea este autentică. Pentru că orice informație posedă proprietate de învechire, informția autentică cu timpul poate să divină falsă. Dacă nu trebuie să fie completată pentru a lua o decizie, informația se soacoate a fi plină. Doar informația actuală poate aduce folosul așteptat. La fel, atît prezentarea prematură a informației, cît și cea întîrziată, nu sunt de dorit. [1]
Importanța informației pentru rezolvarea unor probleme și de faptul cît de aplicabilă va fi aceasta in continuare determină valoarea informației. Chiar și o informație valoare și actuală, fiind exprimată neclar, devine inutilă. Dacă informația este exprimată intr-o formă sau limbă cunoscută destinatarilor, se spune că informația este clară.
Volumul informației este exprimat în numărul de litere, cuvinte, cărți; în lungimea și calitatea sunetului; in lungimea și calitatea secvențelor video etc. De volum, depinde cantitatea informației caracterizează
1.1.1 Tipuri de informație
Criteriile de clasificare a informației sunt diverse, dar ele cele mai importante sunt: natura, forma, și suportul informației.
După forma concretă, informația poate fi:
analogică: reprezentarea imaginilor, sunetelor, fenomenelor fizice și imaginilor în mișcare așa cum sunt ele înțelese de dispozitivele tehnice de înregistrare, fără a fi necesară o codificare sau conversie a acestora înainte de memorare sau transmitere pe suporturile tehnice de informații. Exemple: înregistrarea cu ajutorul casetofonului a mesajelor sonore pe o bandă magnetică, filmarea unor evenimente cu ajutorul echipamentelor analogice de imagine și sunet (de exemplu camere de luat vederi);
digitală: pornind de la fenomenul real sau de la forma analogică a acestuia, are loc o codificare numerică. Pe suport tehnic, informația se reprezintă ca o succesiune de valori binare (0 și 1) ordonate după un sistem de reguli, numit cod. Pentru a putea fi efectuată procesarea computerizată a informației, este necesar de a efectua conversia din formă analogică în formă digitală.
Din punct de vedere a naturii sale, informația poate fi prezentată sub formă de:
date (numerice, alfanumerice, alfabetice), care apar in toate domeniile: , cercetare științifică, activitate economică, administrație, proiectare tehnologică, statisticăetc. Asupra datelor se aplică operații logice și aritmetice, precum și diverse funcții;
texte, organizate sub formă de pagini, documente, paragrafe, fraze, caractere și cuvinte. Această informație este destinată prelucrării cu programe de editare și tehnoredactare a textelor, control sintactic (gramatical) al cuvintelor. Urmează punerea în formă și apoi în pagină a textului redactat. O pagină de text ocupă circa 6 kB;
documente grafice (imagini fixe), destinate perceperii vizuale de către utilizator, scrierii la imprimantă sau la alte dispozitive de realizare a desenelor (plotter), microfotografierii. Un astfel de document poate conține imagini prelucrate grafic, date sub formă de rapoarte și situații, texte explicative, reprezentări grafice, desene, schițe tehnice, imagini foto etc.;
secvențe audio, generate de vocea umană, fenomene ale naturii, instrumente muzicale sau sintetizatoare electronice.
secvențe video de natură animată sau filme, percepute de camerele de luat vederi sau generate de programe de grafică bi- sau tridimensională. Acestea sunt de cele mai multe ori însoțite de informație sonoră (voce sau alte sunete)
După suportul de informație, distingem:
informație aflată pe suporturi tehnice de informații, clasificate la rîndul lor în:
magnetice: benzi, discuri, cartele magnetice;
optice: dispozitive de tipul CD-urilor.
informație aflată pe suporturi grafice de informații, clasificate la rîndul lor în:
suporturi opace realizate din hîrtie, pentru: documente clasice, documente informatice sau birotice obținute la imprimantă, documente realizate cu ajutorul mesei de desen tip plotter. În locul hîrtiei se pot utiliza înlocuitori sintetici cu caracteristici și calități grafice asemănătoare sau superioare, toate avînd menirea de a fi consultate vizual de către utilizator, sau multiplicate tipografic sau xerografic;
suporturi transparente realizate din peliculă fotografică, de film, microfilm etc. Acest gen de suport poate fi utilizat numai după operația de mărire a imaginii înregistrate.
1.1.2 Purtători de informație
Obiectul utilizat pentru păstrarea, transmiterea sau prelucrarea informației se numește purtător de informație. Purtătorii de informație se clasifică, de asemenea, după mai multe criterii, dintre ele cele mai importante sunt: după modul de înscriere a informației și după modul de transmitere a informației [1].
După modul de inscriere purtătorii pot fi manuali și automați. Pe cei manuali informația se înregistrează de către om cu mîna, de exemplu papirusul, hîrtia de scris și de desen liniar, tabla etc. Pe purtătorii automați informația se înregistrează de către dispozitive special concepute pentru aceasta.
După modul de transmitere a informației purtătorii se clasifică în statici și dl CD-urilor.
informație aflată pe suporturi grafice de informații, clasificate la rîndul lor în:
suporturi opace realizate din hîrtie, pentru: documente clasice, documente informatice sau birotice obținute la imprimantă, documente realizate cu ajutorul mesei de desen tip plotter. În locul hîrtiei se pot utiliza înlocuitori sintetici cu caracteristici și calități grafice asemănătoare sau superioare, toate avînd menirea de a fi consultate vizual de către utilizator, sau multiplicate tipografic sau xerografic;
suporturi transparente realizate din peliculă fotografică, de film, microfilm etc. Acest gen de suport poate fi utilizat numai după operația de mărire a imaginii înregistrate.
1.1.2 Purtători de informație
Obiectul utilizat pentru păstrarea, transmiterea sau prelucrarea informației se numește purtător de informație. Purtătorii de informație se clasifică, de asemenea, după mai multe criterii, dintre ele cele mai importante sunt: după modul de înscriere a informației și după modul de transmitere a informației [1].
După modul de inscriere purtătorii pot fi manuali și automați. Pe cei manuali informația se înregistrează de către om cu mîna, de exemplu papirusul, hîrtia de scris și de desen liniar, tabla etc. Pe purtătorii automați informația se înregistrează de către dispozitive special concepute pentru aceasta.
După modul de transmitere a informației purtătorii se clasifică în statici și dinamici.
Purtătorii statici sunt acei purtători care păstrează informația un timp îndelungat, în așa fel, ei se utilizează pentru transmiterea informației în timp. De exemplu, hard-disc, dischetă, compact disc, flash, banda magnetică, hirtie etc. [1]
Purtătorii dinamici sunt acei purtători care în fiecare moment de timp conțin informații diferite, adică informația se schimbă dinamic. Așa purtători de informație se utilizează pentru transmiterera informației în spațiu. De exemplu, unde electromagnetice, tensiuni și curenți electrici etc. [1]
1.1.3 Proprietățile informației
Informația posedă următoarele proprietăți:
atributive – care presupune existența unui purtător de informație, cărui i se atribuie informația respectivă și a unui limbaj prin care se exprimă informația;
pragmatice – care caracterizează utilitatea informației;
dinamice care la rîndul lor se impart in:
a) proprietăți de creștere;
b) proprietăți de utilizare multiplă;
c) proprietăți de distribuție multiplă;
d) proprietăți de învechire;
e) proprietăți de dispariție.
1.2 Informația mixtă. Tipuri de informație mixtă pe internet
În viața de zi cu zi, cel mai des ne întîlnim cu informația mixtă. Informația mixtă este informația obținută prin îmbinarea a mai multor tipuri de informație (de exemplu: text și desen, desen și text, text și fotografie, fotografie și secvență sonoră, etc.). Documentul ce conține informație mixtă, are aceleași proprietăți ca și un document obișnuit, iar tipul lui este determinat de instrumentul cu care a fost format sau prelucrat.
Informațiile produse se prezintă într-o multitudine de forme, și anume: invenții, inovații, raționalizări, studii și documentații, programe de calculator, sisteme moderne de organizare și management, proiecte Know-how, studii de fezabilitate, asistență tehnică, consultanță etc. Toate acestea reprezintă bunuri create în sectorul producător de informații al economiei naționale, și anume sectorul cuaternar. Acesta reprezintă sectorul cel mai tînăr, dar care cunoaște o dezvoltare tot mai accentuată în economiile moderne orientate spre informatizare. În țările dezvoltate acest sector înregistrează ritmuri de creștere mult superioare celorlalte sectoare din economie (primar, secundar, terțiar). [2]
1.2.1 Știrile.
Știrea, este un gen publicistic care prezintă realitatea actuală, pe care o pune într-o formă comunicabilă, transmisă apoi, prin intermediul unor tehnici moderne de difuzare în masă. [3]
Definițiile date știrii sunt numeroase, ele aparținând diferitelor școli de presă și reflectă o anumită concepție despre presă, despre funcțiile și poziția socială a ziaristului și a presei. Într-un manual cehoslovac de ziaristică, știrea este definită ca fiind o comunicare scurtă, operativă a unui fapt social nou sau nou constatat, a unui proces social sau a rezultatelor lui, a unei cunoștințe inedite sau a unei manifestări de idei.
Conform altor afirmații, știrea este o "noutate", relatarea unor evenimente recente. Pentru a avea caracterul de știre, ceea ce se relatează trebuie să fie: actual, în curs, la zi; important, semnificativ sau neobișnuit. Știrea mai este definită și ca un fapt sau o idee precisă care va interesa un număr mare de cititori. Știrea este orice comunicare făcută la momentul oportun, deoarece este interesantă și semnificativă. Ea reprezintă o relatare a aspectelor semnificative ale unei întâmplări de actualitate, care este interesantă pentru cititorii sursei unde se publică relatarea. Știrea este prima relatare a evenimentelor semnificative, care prezintă interes pentru public.
Din aceste definiții putem extrage două calificative: interesul și semnificația drept trăsături de bază ale unei relatări ce poate fi considerată o știre. Sintetizând opiniile exprimate privind trăsăturile caracteristice ale știrii, se poate formula următoarea definiție: știrea de presă este o relatare concisă a unor fapte, evenimente, idei semnificative, de actualitate, noi, relatare ce prezintă interes pentru public.
Structura unei știri [3]
O știre este formată în mod obligatoriu din introducerea sau capul și corpul știrii, care dezvoltă introducerea.
Introducerea sau lead-ul știrii ce sintetizează principalele informații și reprezintă nucleul informativ esențial. Funcțiile pe care le îndeplinește aceasta sunt: surprinde esența evenimentului, acroșează cititorul la lectură și conține răspunsurile la întrebările cine?, ce?, unde?, când?.
Corpul știrii conține datele care aprofundează și explică introducerea. În corpul știrii reprezintă dezvoltarea fiecărui punct inclus în introducere, în ordine identică cu cea în care au fost enunțate. Pe lîngă aceasta, corpul unei știri trebuie să conțină explicații care ajută la situarea evenimentului, faptului prezentat într-un context determinat, punându-se cititorul, asculătorul în legătură directă cu circumstanțele și antecedentele acțiunii. În lipsa unor astfel de caracterizări ale contextului (numite în engleză background), este greu de sesizat înțelesul multor știri. Detaliile secundare, de mai mică însemnătate, ce nu sunt cuprinse în introducere, vor fi integrate în corpul știrii, acestea având misiunea să completeze imaginea despre evenimentul, faptul prezentat.
În presă se utilizează mai multe tipuri de introducere. Această diversitate conferă publicației un plus de atractivitate, sporește interesul cititorului pentru informația publicată. Astfel în introducere poate fi prezentată esența evenimentului, elementul senzațional al știrii sau poate cuprinde prezentarea unei imagini a evenimentului. În această situație, autorul va prezenta în prima frază elementele definitorii ale acțiunii pe care o va relata în știre, totodată în introducere se poate introduce prezentarea unor personalități, cu condiția ca numele folosite sunt bine cunoscute publicului. În caz general, abundența de nume într-o știre trebuie evitată pentru că dipersează atenția cititorului și nu-i dă posibilitatea să rețină esențialul.
Titlul reprezintă puntea dintre știre și citire. Titlul știrii are funcția de a scoate în relief însemnătatea subiectului abordat, să sugereze conținutul știrii și să incinte la lectură. Titlul trebuie să fie un element grafic și să contribuie la crearea unui context atrăgător în pagină. Titlul știrii trebuie să exprime ideea de bază și esența știri cu cuvinte cît mai puține.
Clasificarea mijlocurilor de comunicare a știrilor [3]
În prezent, există următoarea clasificare mijlocurilor de comunicare a știrilor:
Ziarele. Ziarul este o publicație care conține știri, informații și publicitate, de obicei tipărită pe foaie de ziar, o hârtie de o calitate inferioară și la un cost redus.
Ziarul poate fi general sau de un interes special, de cele mai multe ori publicat zilnic sau săptămânal. Primul ziar tipărit a fost publicat în 1605 și s-a dezvoltat chiar și când a fost în competiție cu tehnologii noi, precum radioul și televiziunea. Dezvoltarea recentă a Internetului este o amenințare reală pentru materia ziarului, însă cumpărarea ziarelor scade în cele mai multe țări, în timp ce câștigurile din publicitate, care măresc considerabil veniturile ziarului, se măresc, treptat forma tipărită înlocuindu-se cu cea online.
Radioul. Radioul prin apariția sa, la începutul anilor ’20, a marcat intrarea într-o nouă eră, pe care McLuhan avea să o numească „galaxia”. Radioul este mijlocul de informare cel mai accesibil și, deci, și foarte utilizat, chiar și în țările dezvoltate. El nu necesită infrastructuri și solicită puține investiții din partea celor care îl folosesc și care, în plus, nu au nevoie să fie alfabetizați. Programele radio sunt diverse și se adresează tuturor categoriilor de ascultători: muzică, știri, dezbateri, foiletoane, teatru radiofonic, emisiuni culturale, jocuri și concursuri, transmisii sportive sau de la diferite manifestații, etc.
După apariția televiziunii, radioul a trebuit sa-i cedeze supremația, specializându-se pe muzică, informații și educație, dar radioul are un viitor sigur și un public fidel.
Televiziunea. Televiziunea a fost lansată în anii ’40 și este „regina mass-media moderne”. Datorită impactului emoțional al imaginilor video, în țările dezvoltate, 95% din locuințe sunt echipate cu un aparat TV. Toate țările care au un teatru sau o industrie cinematografică, produc pentru micul ecran, chiar și țări relativ sărace ca India sau Egipt. Începând din anii ’70, televiziunea folosește tot mai mult sateliții de comunicare pentru a-și transporta programele pe distanțe lungi, pentru distanțe scurte folosind în continuare rețeaua hertziană și prin cablu. La sfârșitul secolului, se pregătea digitizarea, care avea să mărească de zeci de ori numărul de programe disponibile, făcând posibilă comprimarea semnalelor.
Internetul ca mijloc mass-media. Internetul constituie astăzi cea mai mare arteră pe care circulă informațiile de care profită și beneficiarii enumerați mai sus: ziarele, radioul, companiile de televiziune. Acestea nu se mai mulțumesc să ajungă la beneficiarul final doar prin intermediul obișnuitelor canale mass-media, ci și-au deschis prin intermediul Internetului site-uri unde oricine poate prelua informațiile, știrile, programele lor. Pe lângă acestea, s-au dezvoltat resurse și companii mass-media care activează doar pe internet. Rezultă că pe lîngă informația care este la televizor, radio sau în ziare, pe internet mai putem găsi și conținut unic, care poate lipsi parțial sau în întregime la sursele enumerate mai sus.
Internetul asigură o gamă largă de servicii, text, video, audio, foto, inaugurînd astfel o nouă eră a manipulării informației.
Avantajele utilizării internetului ca mijloc mass-media:
Este un mijloc rapid și ușor accesibil, folosit pentru informare de un număr din ce în ce mai mare de persoane;
Este un mijloc de comunicare extrem de flexibil, care poate modifica imediat conținutul mesajului, având capacitatea de a reacționa imediat sub imboldul presiunii concurențiale;
Este un instrument perfect de cercetare, având capacitatea de a măsura cu exactitate câte persoane au accesat o anumită pagină web sau un magazin virtual și câte dintre ele au cumpărat efectiv un anume produs;
Prezintă avantajul că poate „transporta” mesaje publicitare complexe, ce pot conține simultan text, sunet și imagine, în proporția dorită (multimedia);
În momentul de față, costurile publicității pe Internet sunt scăzute în comparație cu celelalte modalități de promovare de produs/serviciu/marcă;
În actualul peisaj oferit de mass-media, Internetul reprezintă canalul cu cea mai mare rază de acțiune ce poate fi utilizat pentru realizarea unor campanii de publicitate globale.
Internetul cumulează la ora actuală toate posibilitățile de transmitere și distribuție a știrilor, integrînd televiziuni, canale de radio, presa scrisă, într-un tot unitar oferind beneficiarului posibilitatea să selecteze ce anume îl interesează. Marele avantaj este că selecția poate elimina agresiunea vizuală și, în același timp, elimină timpul pierdut în trecerea peste lucrurile care nu ne interesează. Ne putem imagina un scenariu în care fiecare va găsi dimineața pe smartphone-ul său strict ce își dorește să afle, fără să treacă incomodul ziar plin de reclame de la unul la altul.
1.2.2 Facturile
Factura este un document contabil emis de o companie (furnizorul), către o altă companie sau persoană (clientul), document ce conține lista cu produsele vândute sau serviciile prestate clientului de către furnizor. O factură mai conține datele de identificare fiscală a clientului (emitentul), datele furnizorului (persoană fizică sau juridică), cota de TVA, precum și prețul, cantitatea și valoarea fiecărui produs vândut. [4]
Începând cu 2007, au apărut aplicații online bazate exact pe facturare. Diferența între programele online și programele de facturare/contabilitate clasice este că programul online funcționează ca un website, deci se accesează prin browserul pentru navigare pe internet sau o aplicație ce suportă fluxuri web și poate fi accesat de la orice calculator. Autentificarea se face pe bază de nume de utilizator și parolă, în timp ce programele clasice se instalează pe calculator.
Avantaje
nu necesită instalarea niciunui program – se pot folosi direct din browser sau prin intermediul unei aplicații ce suportă fluxuri web;
se pot folosi concomitent din mai multe sedii sau puncte de lucru din locații diferite;
este ușor accesabil din orice locație cu Internet;
nu depinde de sistemul de operare sau de specificațiile calculatorului respectiv;
în general datele utilizatorilor au backup zilnic (copie de siguranță);
Dezavantaje
este necesară o conexiune permanentă la Internet;
nu se pot emite facturi «pe teren», fără calculator și imprimantă;
dependență de firma care oferă serviciul;
este mai lent decât programele de facturare off-line.
1.2.3 Prognoză meteorologică
Prognoza meteorologică reprezintă punerea în practică a unor tehnologii în scopul emiterii unor ipoteze de prevedere a stării vremii. Datele sunt obținute în urma studierii mai multor parametri numiți condiții atmosferice, ce constituie obiectul de studiu al meteorologiei. Chiar și la nivelul actual de dezvoltare a domeniului, prognozele emise de către specialiști pot propune evoluții eronate ale vremii. [5]
Prognoza meteorologică este adusă la cunoștința populației prin mijloace diverse de propagare, care presupun însă o receptare în scurt timp (ziare, reviste, radiodifuziune, Internet). O soluție foarte răspândită este buletinul meteorologic, un scurt program de radiodifuziune (radio, TV) care se ajută de folosirea unor hărți și diagrame sugestive pentru a anunța prognoza următoarelor câteva zile.
1.2.4 Cursul valutar
Cursul de schimb sau cursul valutar reprezintă prețul unei unități monetare din moneda unei țări, exprimat în unități monetare ale altei țări. O definiție mai exactă a cursului de schimb ia în considerare tipul de cotație care leagă cele două monede participante la raportul de schimb. [6]
Cursul valutar poate fi fix sau flexibil. Un curs de schimb este fix atunci când două țări cad de acord să-l mențină astfel, prin intermediul politicii monetare. Cel mai cunoscut sistem valutar fix a fost etalonul – aur; spre sfârșitul anilor 1850, o uncie de aur valora 20 de dolari americani și 4 lire sterline, de unde rezulta o rată de schimb de 5 dolari pentru o liră. Un curs de schimb este flexibil dacă două țări convin să permită ca fluctuațiile pieței internaționale să determine cursul, prin intermediul cererii și ofertei. Cursul de schimb fluctuează odată cu exporturile și importurile unei țări. Majoritatea comerțului mondial se desfășoară cu cursul valutar flexibil, ce variază între limite relativ fixe. [6]
Practic, cursul valutar este prețul în baza căruia o valută se schimbă cu alta, respectiv raportul dintre o monedă națională și una străină.
1.2.5 Horoscop
Horoscopul este o previziune astrologică pentru o anumită perioadă de timp, acesta se realizează în urma unor analize a planetelor. Horoscopul este o previziune generală, pentru o previziune individualizată este necesară analiza astrogramei natale suprapusă peste astrograma zilei respective. [7]
1.2.6 Podcasting
Podcasting este o metodă de distribuție pe internet a fișierelor în format multimedia (audio dar și video), prin intermediul formaturilor de sindicalizare de conținut RSS și ATOM. Fișierele pot fi descărcate și redate pe echipamente mobile sau calculatoare ce acceptă formatul în care acestea au fost create. Un autor de podcast este de obicei denumit podcaster. [8]
Siturile de podcasting (de obicei servere) pot oferi fișierele spre descărcare și ascultare off-line sau pentru redare directă on-line. Metoda de bază este totuși aceea de descărcare prin intermediul unui cititor de conținut RSS sau Atom.
1.3 Modalități de primire automată a informației
Datorită dezvoltării internetului au fost dezvoltate tehnologii, cu ajutorul cărora tipurile de informații enumerate mai sus vin singure la utilizator, și nu invers. Astfel se poate vizualiza rapid ce a fost publicat recent pe siturile preferate și citi integal doar articolele care îl interesează pe utilizator.
1.3.1 Abonare pe Email
Abonarea pe Email reprezintă o convenție prin care o persoană obține, pe o anumită perioadă, dreptul de a primi pe adresa sa de poștă electronică un buletin de știri, horoscopul, prognoza meteo, etc. Aceasta este mai des utilizată în cazul cînd este necesar de transmis o oarecare informație la un interval mare de timp (de exemplu factura de telefon). De regulă, informația apare și se actualizează la intervale mici de timp. Pentru așa tip de informație se utilizează cel mai des fluxurile web.
1.3.2 Fluxurile WEB
Un flux web (în engleză: feed) este un format de date ce include conținutul sau și sumarurile de conținut web, împreună cu legături către conținutul complet al respectivei surse de informații și alte metadate din Internet, actualizate frecvent. [9]
Fluxurile web oferă această informație sub forma unui fișier XML. În plus față de facilitarea sindicalizării, feed-urile web permit cititorilor fideli anumitor pagini să fie informați despre fiecare actualizare a conținutului de pe aceste pagini web, prin folosirea unui soft special numit agregator sau în engleză feed reader. [9]
În scenariul tipic de folosire a fluxurilor, un distribuitor de conținut publică un link spre un flux la care utilizatorii se pot abona folosind un agregator, care poate fi un serviciu online sau un program ce rulează pe calculatorul utilizatorului. Acest program verifică periodic feed-urile și anunță dacă apar itemuri noi.
Tipurile de conținut livrate printr-un flux web sunt de obicei extrase sau simple linkuri spre paginile web de unde provine conținutul.
Fluxurile web sunt folosite de numeroase site-uri de știri, blog-uri și producători de podcast-uri.
RSS
RSS este o familie de formate de fluxuri web, realizate în format XML și folosite pentru Web syndication. RSS este folosit (printre altele) pentru știri, weblog-uri și podcasting. Abreviația este folosită pentru a face referință la următoarele standarde:
Really Simple Syndication (RSS 2.0)
Rich Site Summary (RSS 0.91, RSS 1.0)
RDF Site Summary (RSS 0.9 și 1.0)
Web feed-urile oferă conținut web sau sumare de conținuturi web împreună cu legături către conținutul complet al respectivei surse de informații și alte metadate. RSS oferă această informație sub forma unui fișier XML numit feed RSS, webfeed, stream RSS sau canal RSS. În plus, față de facilitarea partajării știrilor (termen american: "syndication") , feed-urile web permit cititorilor fideli a anumitor pagini să fie informați la actualizarea conținutului de pe aceste pagini web, prin folosirea unui soft special numit aggregator. [10]
În paginile web, feed-urile web (RSS sau Atom) sunt de obicei legate de cuvântul "subscribe" ("subscrie"), un pătrat portocaliu, un icon de feed, sau de literele XML sau RSS.
Utilizare [10]
În timp ce partea cea mai importantă a mass-mediei încă încearcă să înțeleagă potențialul RSS, redactorii de știri folosesc RSS ca să ocolească sursele de știri tradiționale. Prin sistemul RSS, utilizatorii și jurnaliștii au la dispoziție surse constante de informație, fără să mai fie nevoiți să petreacă timp căutând.
Un program cunoscut sub numele de "feed reader" poate să verifice o listă de surse de informație în numele utilizatorului și să afișeze informația pe care o găsește. Deseori siturile cunoscute au feed-uri, dar și cele mai mici au adoptat această tehnologie. Anumite situri chiar le permit utilizatorilor să aleagă între feed-uri formatate RSS sau formatate Atom; altele oferă numai feed-uri RSS sau numai Atom.
Programele care folosesc RSS sunt disponibile pentru diferite sisteme de operare. Partea de client e proiectata ca program de sine stătător sau ca extensie pentru programele existente, precum browserele. Browser-ele precum Microsoft Internet Explorer, Mozilla Firefox, Safari sau Opera au integrat sistemul de feed RSS.
Softurile-client pentru feed-uri integrate în pagini web nu solicită software special instalat pe calculatorul utilizatorului și permit acestora să aibă feed-urile disponibile pe orice calculator ar lucra, dacă acesta este conectat la internet. Există agregatoare care combină mai multe feed-uri în unul singur, exemplu fiind un feed despre fotbal care grupează mai multe surse de știri în una singură. Există de asemenea și motoare de căutare de conținut publicat prin feed-uri web, precum Feedster sau Blogdigger.
Atom
Atom reprezintă denumirea comună a două tehnologii web legate una de alta: formatul pentru descrierea resurselor de pe un site și a protocolului pentru publicarea acestora.
Formatul Atom se bazează pe XML și permite să descrie un set de resurse web – de exemplu, știri, articole pe blog și altele. El rezolvă aceleași probleme ca RSS, dar a apărut mai târziu și a luat în considerare multe dintre dezavantajele RSS-ului. Formatul este descris în RFC 4287 și este sprijinit activ de Google în multe dintre proiectele sale. [11]
Protocolul de publicare Atom (de asemenea AtomPub, din limba engleză: Atom Publishing Protocol) este bazat pe HTTP și permite crearea, ștergerea și modificarea resurselor colectate în colecții pe site (exemplu de colecție poate servi un blog). Conținutul colecțiilor este descris în formatul Atom, iar lucrul cu el are loc ca și cu protocolul HTTP.
Compararea RSS și Atom [11]
Atât RSS și Atom sunt larg susținute și sunt compatibile cu toate aplicațiile majore de tip feed reader. RSS are o utilizare mai largă din cauza că acesta a apărut mai devreme, însă din punct de vedere tehnic, Atom are mai multe avantaje: licențiere mai puțin restrictivă, XML namespace-uri, suport URI, suport Relax NG.
Tabelul 1.1 prezină elemente RSS alături de elemente Atom în cazul în care acestea sunt echivalente. Notă: caracterul asterisc (*) indică faptul că un element trebuie să fie furnizat în mod obligatoriu, cu excepția elementelor Atom "autor" și "link", care sunt necesare numai în anumite condiții.
Tabelul 1.3.1 Compararea elementelor RSS cu elementele Atom
1.4 Serviciile WEB
Un serviciu web este un serviciu pus la dispoziție utilizatorilor pe Internet. Multitudinea de protocoale și standarde disponibile începând de la sfârșitul secolului trecut în sfera Internetului au dat posibilitatea comunicării între aplicații pe sisteme aflate la distanțe mari, cu acces la Internet. Astfel, există sisteme ce oferă servicii de informare și procesare a informațiilor care în general sunt independente de platforma hardware; accesul la acestea se face prin servicii web. [12]
Exemple clasice de servicii web de informare sunt aflarea cursului de bursă momentan al unei acțiuni anume sau aflarea condițiilor climaterice într-un anumit punct de pe glob. Serviciile de prelucrare de informații pornesc de la cele mai banale servicii, cum ar fi execuția de operații aritmetice asupra unor numere, și până la servicii complexe cum ar fi serviciile de autentificare, serviciile de traducere a unui text dintr-o limbă în alta (de exemplu: Google Translate, Yandex Tranlate, Microsoft Bing Tranlator), serviciile text-to-spech.
Un serviciu web este o componentă software descrisă print-un modul WSDL care oferă posibilitatea să fie accesată folosind protocoale de rețea standard de genul SOAP și HTTP. [12]
Un serviciu web este un software care se pune la dipoziție pe Internet și care folosește un sistem de mesaje standardizat bazat pe XML. Pentru a găsi serviciul dorit și interfața publică a acestuia trebuie să existe mecanisme simple.
Un serviciu web este o colecție de protocoale și standarde folosite pentru schimbul de date între aplicații sau sisteme. Aplicațiile software scrise în limbaje de programare diferite și care rulează pe diverse platforme pot folosi serviciile web pentru a face schimb de date pe rețea (Internet), într-o manieră oarecum asemănătoare comunicării între procesele de pe un singur calculator. Interoperabilitatea se datorează folosirii unor standarde publice adecvate. [12]
In ultima vreme ideea de serviciu web a luat o amploare în rândul siturilor web care oferă din ce în ce mai multe protocoale pentru trimiterea diverselor date către diferite tipuri și categorii de utilizatori. De la simple protocoale de RPC (destinate actualizării blog-urilor), RSS și Atom (descrise mai sus), motoare sociale, meme-agregatoare, statistică și analiză, canale de feed-uri și multe alte servicii care se dezvoltă beneficind de arhitecturile avansate, totuși flexibile, puse la dispoziție de tehnica modernă.
1.4.1 Web API. REST
Un Web API reprezintă o metodă de dezvoltare în Serviciile Web unde accentul a fost pus pe un simplu REST request. REST (Representational State Transfer) reprezintă o metodă de interacțiune între componentele unei aplicații distribuite pe Internet, în care un apel de procedură la distanță este un simplu HTTP-request (de obicei GET sau POST, o astfel de solicitare se numește REST-request), iar datele necesare sunt transmise ca parametru de interogare. Această metodă este o alternativă la metodele mai complexe, cum ar fi SOAP, CORBA și RPC. [13]
În serviciile web care se bazează pe arhitectura REST, informațiile despre metoda apelată sunt date de metoda HTTP folosită, iar argumentele metodei sunt date de URI-ul folosit. Combinația este puternică, astfel din prima linie a unei cereri HTTP făcută unui serviciu web în manieră REST (”GET /reports/open-bugs HTTP/1.1”) este ușor de înțeles ce dorește clientul să facă. Restul cererii sunt doar detalii. Dacă metoda HTTP nu corespunde cu metoda pe care o apelează clientul, atunci serviciul web nu este RESTful.
Dacă ne îndreptăm atenția spre serviciul web Flickr, observăm că am putea avea un URI: http://www.flickr.com/services/rest?api_key=xxx&method=flickr.photos.search&tags=dog. Argumentele sunt transmise prin URI (fotografii cu eticheta dog) la fel ca orice alt serviciu bazat pe arhitectura REST. API-ul web Flickr cere clienților să folosească HTTP GET și atunci când încearcă să modifice date de pe server. Pentru a șterge o poză de pe Flickr trebuie să facem o cerere GET pentru un URI care include “method=flickr.photos.delete”.
Principiile REST [13]:
Resurse. Existența resurselor este un concept important care ține de arhitectura REST. O resursă este o entitate care poate fi stocată într-un computer și poate fi reprezentată printr-un șir de biți: un rând dintr-o bază de date, un document, sau rezultatul rulării unui algoritm. O resursă poate să fie și un obiect fizic cum ar fi un copac, însă reprezentările unor astfel de resurse sunt de regulă dezamăgitoare. Fiecare resursă are atașat un identificator global (un URI). Pentru a manipula cu resurse, componentele rețelei (clienții și serverele) comunică printr-o interfață standardizată (de exemplu HTTP) și schimbă reprezentările resurselor (documentele ce transportă informațiile). De exemplu, o resursă care este un pătrat ar putea accepta și returna o reprezentare care specifică un perimetru și un număr de laturi, formatată în SVG, dar poate accepta și returna o reprezentare care specifică trei puncte diferite situate pe pătrat, delimitate prin virgulă.
URI. Orice resursă trebuie să aibă cel puțin un URI. Numele și adresa resursei URI-ul. Despre o informație ce nu are un URI, nu se poate spune că este o resursă și nu se află pe Web. URI-urile trebuie să fie descriptive. Între un URI și o resursă trebuie să existe o corespondență intuitivă. Iată câteva exemple bune de URI-uri pentru unele resursele:
http://www.harti.ro/harta/rutiera/Romania/Brasov
http://www.example.com/vanzari/2005/T4
http://en.wikipedia.org/wiki/Leadership
http://www.example.com/nextprime/1024
Adresabilitate. O aplicație este adresabilă dacă expune aspecte interesante legate de setul său de date ca și resurse. Cum resursele sunt expuse prin URI-uri, o aplicație adresabilă expune un URI pentru orice informație care s-ar putea dovedi de folos. De obicei, se ajunge la un număr foarte mare de URI-uri.
Fără stare. Lipsa stării se traduce prin faptul că orice cerere HTTP se întâmplă într-o izolare completă. Atunci când un client face o cerere HTTP, include informațiile necesare pentru ca serverul să îndeplinească acea cerere. Serverul nu se bazează niciodată pe cereri precedente.
Reprezentări. Atunci când împărțim aplicația în resurse, mărim zona de interacțiune cu clienții, utilizatorii își pot construi un URI potrivit pentru a accesa exact datele de care au nevoie. Dar resursele nu sunt datele, ci doar ideea arhitectului despre cum să împartă datele. Un server web nu poate transmite o idee, trebuie să trimită octeți, într-un anumit format de fișier, care este reprezentarea unei resurse. O resursă este o sursă de reprezentări, iar o reprezentare este formată din date despre starea curentă a unei resurse. Serverul ar putea prezenta resursa printr-un document XML, o pagină web sau text simplu.
Interfața uniformă. În spațiul World Wide Web, sunt doar câteva acțiuni care pot fi făcute cu o resursă. HTTP oferă patru metode de bază pentru cele mai comune operații:
Returnarea unei reprezentări a unei resurse: HTTP GET
Crearea unei noi resurse: HTTP PUT unui nou URI, or HTTP POST unui URI existent
Modificarea unei resurse: HTTP PUT unui URI existent
Ștergerea unei resurse: HTTP DELETE
Siguranța și idempotența. Dacă în dezvoltarea unui serviciu web folosim ca interfață uniformă HTTP, obținem două proprietăți folositoare. Când sunt folosite corect, cererile GET și HEAD sunt sigure. Iar cererile GET, HEAD, PUT și DELETE sunt idempotente (invariabile).
1.5 XML – standart pentru marcarea datelor structurate
Prin date structurate întelegem lucruri ca spreadsheets, liste de contacte, parametri de configurație, tranzacții financiare sau desene tehnice. XML este un set de reguli pentru a crea formate text care permit structurarea datelor. XML nu este un limbaj de programare și nu trebuie de a fi programator pentru a-l învăța și folosi. Cu XML, unui calculator îi este ușor să genereze și să citească datele, cît și să se asigure că structura datelor este corectă. XML evită problemele obișnuite ale limbajelor de programare: este extensibil, independent de platformă și suportă internaționalizarea și localizarea. XML este complet compatibil cu Unicode. [14]
XML a fost utilizat pentru crearea de alte limbaje de marcare, cum ar fi XHTML, RDF, RSS, MathML, SVG, OWL etc. Aceste limbaje formează familia de limbaje XML.
Documentele XML sunt realizate din unități de stocare numite entități, ce conțin date parsate sau neparsate. Datele parsate sunt realizate din caractere, unele dintre ele formînd date caracter iar altele ca marcaje. Marcajele codifică o descriere a schemei de stocare a documentului și structura logică. XML furnizează un mecanism pentru a impune constrîngeri asupra schemei de stocare și a structurii logice. [14]
XML a fost elaborat pentru:
separarea sintaxei de semantică pentru a furniza un cadru comun de structurare a informației
construirea de limbaje de mark-up pentru aplicații din orice domeniu
structurarea informației în viitor
asigurarea independenței de platformă și suport pentru internaționalizare
Un document XML este un arbore ordonat etichetat și conține:
date caracter – noduri frunză ce conțin datele
noduri elemente etichetate cu
un nume (adesea numit si tipul elementului) și
mulțime de atribute, fiecare din ele avînd un nume și o valoare
acestea pot conține unu sau mai mulți copii.
Structura documentelor XML [14]
Un document XML este format din marcaje (tag-uri) și date caracter.
Cuvîntul marcaj (markup) a fost folosit inițial pentru a descrie anumite adnotări, note marginale în cadrul unui text cu intenția de a indica tehnoredactorului cum trebuie listat un anumit pasaj. Generalizînd, putem defini marcajul drept orice acțiune de a interpreta explicit o porțiune de text.
Un marcaj (tag) este un șir de caractere delimitat de caracterele "<" și ">". Datele caracter reprezintă conținutul marcajelor.
În XML, marcajele nu sunt folosite pentru afișarea datelor continute, ci au alte scopuri printre care:
asigură o sintaxă simplă și standardizată pe care analizoarele XML o pot folosi pentru a utiliza informația stocată
asigură o metodă de a descrie structura ierarhică a conținutului prin împărțirea informației (datele caracter) în părți numite elemente care mai departe sunt descrise prin atribute. Structura ierarhică a întregului document este pusă în evidență prin utilizarea marcajelor.
Un fișier XML cuprinde următoarele secțiuni:
Prolog
Definitia tipului de document (opțională)
Elementul rădăcină
Exemplu. Fișierul mail.xml
<?xml version="1.0" encoding="UTF-8"?> 1
<!DOCTYPE MAIL SYSTEM "MAIL.DTD">2
<MAIL id="10" date="12-06-2015">3
<FROM>[anonimizat]</FROM>
<TO>user1@@gmail.com</TO>
<SUBJECT>Hello</SUBJECT>
<BODY>
Hello User1
</BODY>
</MAIL>
Prologul:
<?xml version="1.0" encoding="UTF-8"?>
Este o instrucțiune de procesare. Ea informează că urmează descrierea unui fișier XML ce respectiva versiune de specificație 1.0 iar setul de caractere utilizat este encodat UTF-8
Definiția tipului de document
<!DOCTYPE MAIL SYSTEM "MAIL.DTD">
Precizează că fișierul MAIL.DTD conține declarația tipului de document (DTD-ul), document ce are ca radacină tag-ul MAIL. Acesta este un set de reguli ce definesc structura unui fișier XML.
Elementul radacină
<MAIL id="10" date="12-06-2015">
<FROM> [anonimizat]</FROM>
<TO>[anonimizat] </TO>
<SUBJECT>Hello</SUBJECT>
<BODY>
Hello User1
</BODY>
</MAIL>
Acesta este elementul radacină al documentului XML.
1.6 Sistemele de operare
Sistemul de operare al unui telefon reprezintă un ansamblu de programe, special creat pentru a mijloci relația dintre partea hardware a telefonului și utilizatorul acestuia. Ca și în cazul computerelor personale, sistemele de operare se caracterizează prin viteza de lucru, stabilitatea și suita de programe standard.
1.6.1 Sistemele de operare mobile
Android / Google – liderul incontestabil
Android domină piața smartphone-urilor. Niciun alt sistem de operare nu-i stă pe aproape. Poate fi rulat de telefoane de top cât și de entry-level. Acesta a fost unul dintre elementele ce l-a propulsat. Totuși, multe dintre telefoanele ce rulează Android sunt de top.
Google Play are peste 700.000 de aplicații. Mare parte dintre ele sunt gratuite sau cu un preț de achiziție redus. Un developer poate face bani din sistemul de reclame, plata per aplicație sau in-app-purchase. Sunt sute de mii de jocuri, unele dintre ele cu adevărat captivante și aplicații care ușurează task-urile de zi cu zi.
Marea problemă a Android ar fi legată de update-urile software ce vin destul de greu și acest aspect negativ se menține și la telefoanele de top. Excepția de la regulă este adusă de seria de telefoane și tablete Nexus. Pe de altă parte nici experiența diferită oferită de telefoanele Android nu este tocmai cea mai bună latură a lui. Lipsește o oarecare uniformitate iar interfețele grafice pe care le portează companiile ce produc hardware Android se dovedesc a fi deseori slab optimizate, stricând interfața Android nativă ce este destul de apreciată. [15]
iOS / Apple – experiență unitară
iOS – numărul doi și raiul dezvoltatorilor de aplicații. Dorința celor care dețin un iPad sau iPhone spre a cumpăra aplicații este mult mai mare decât în cazul Android. Acest sistem de operare este de aproape două ori mai restrâns ca market share față de Android, dar este apreciat pentru simplitate, faptul că update-urile software vin rapid, pe placul celor care nu doresc o evoluție rapidă de la o versiune a sistemului de operare la alta. Aplicațiile și jocurile beneficiază de puterea de procesare oferită de CPU și GPU, multe jocuri rulează mult mai bine decât versiunile similare pe telefoane Android de top. Restricție la telefoanele Apple este inexistența de configurații hardware ca la sistemul de operare mobil al Google.
Sunt foarte multe aplicații și în App Store, peste 700.000, iar peste 300.000 sunt optimizate pentru tablete. [15]
Windows Phone 8 / Microsoft – campion fără public
Prima versiune a sistemului de operare mobil de la Microsoft a fost Windows Phone 7 dezvoltat pe Windows CE și a urmat Windows Phone 8 dezvoltat ca și Windows RT și Windows 8 pe Windows NT. A fost lansat în ultima parte a lui 2013 și este instalat pe un număr foarte mic de telefoane.
Acesta vine cu o interfață originală bazată pe Modern UI. În Windows Phone Marketplace sunt peste 100.000 de aplicații, fiind preluate și cele de la Windows Phone 7, iar calitatea lor lasă de dorit. [15]
TIZEN OS, Firefox OS, Sailfish OS – concepte ce vor intra în practică, șanse mici de afirmare
TIZEN OS – relansare a Bada de la Samsung
Este un sistem de operare ce reprezintă ambițiile unui gigant de a fi prezent în mod serios și pe sisteme de operare mobile, Samsung. Este bazat pe Linux kernel și poate fi instalat pe telefoane, tablete, televizoare smart, calculatoare, camere foto.
Firefox OS – HTML5 în stare pură
Reprezintă un Linux cu Firefox pus peste el ce permite rularea oricărei aplicații redactată în HTML5.
Sailfish OS – MeeGo reinterpretat
Mare parte din echipa MeeGo a părăsit Nokia și a întemeita Jolla care la rândul său a prezentat proiectul Sailfish OS cu scopul de a integra interfața bazată pe swipe de la MeeGo.
1.6.2 Evoluția consumului de internet pe mobil contra desktop
În ultimul timp se atestă o tranziție a utilizatorilor de la desktop la device-urile mobile.
Tendința este însă tot mai vizibilă și se observă inclusiv pe site-urile de video-on-demand, cum e Voyo.ro, unde raportul traficului desktop – aplicații s-a inversat în ultimul an:
Traficul desktop contra mobil pe Voyo.ro:
Q1 2014: desktop – 51.5% aplicații – 48.5%
Q4 2014: desktop – 39.6% aplicații – 60.4%
Pînă în 2019 se estimează că smartphone-urile vor atrage trei sferturi din traficul pe mobil și că numărul device-urilor conectate va fi mai mare de 7 miliarde, ceea ce e mai mult decît populația globului în prezent. [16]
Creșterea traficului pe mobil este caracteristică și pentru site-urile de știri. Conform figurii 1.6.1 observăm că traficul generat de device-urile mobile pe stirileprotv.ro prevalează traficul generat de desktop-uri.
Figura 1.6.1 Raportul accesării site-ului stirileprotv.ro
Conform StatCounter Android este lider detașat, ajungând la 63% cotă de piață în septembrie 2014. Numărul mare de terminale disponibile, diversitatea ofertei și varietatea de prețuri sunt principalele motoare care pun Android-ul în mișcare și totodată principalele mijloace de diferențiere față de iOS.
De cealaltă parte, iOS, care a lansat recent versiunea 8, cu cele două locomotive ale sale – iPhone și iPad, deține numai 26% din piață. Cu doar câteva modele de telefoane și tablete, Apple nu are cum să țină pasul cu numeroșii producători din toate colțurile lumii care se înghesuie să producă telefoane cu Android de toate felurile și pentru toate gusturile, dar se revanșează la alte capitole.
Diferența dintre cele două sisteme a crescut în ultimul an și sunt toate șansele să crească și în perioada următoare. iOS era în urmă cu un an la 31.51%, în timp ce Android deținea 49.11% din piață. [16]
Figura 1.6.2 Topul celor mai populare sisteme mobile
CAPITOLUL 2. PROIECTARE DE DETALIU ȘI IMPLEMENTARE
2.1 Tehnologii utilizate
În cele ce urmează vor fi detaliate tehnologiile folosite în realizarea proiectului. Proiectul a fost dezvoltat folosind tehnologii și tool-uri open-source, bine documentate, larg răspândite și care au în spate comunități de utilizatori și dezvoltatori preocupați de utilizarea eficientă și dezvoltarea continuă a acestora.
Această alegere prezintă următoarele avantaje:
cost redus privind dezvoltarea aplicației, nefiind necesară achitarea unor taxe de licențiere pentru tehnologiile folosite;
există suport din partea comunităților care susțin tehnologiile respective cum ar fi tutoriale, forum-uri de discuții pe diverse tematici (erori, practici bune) și access la diverse resurse precum librării specializate.
Aplicația a fost proiectată pentru dispozitive mobile ce rulează sistemul de operare Android prin urmare, aceasta a fost realizată folosind Android SDK. Mediul de programare ales este Android Studio. Codul sursă a fost scris în limbajul Java iar pentru implementarea anumitor functionalități ale aplicației au fost folosite servicii oferite de Google prin intermediul Google API și de Yandex prin intermediul Yandex API.
Detalii legate de tehnologiile utilizate în realizarea aplicației vor fi detaliate în cele ce urmează.
2.1.1 Sistemul de operare Android
Android este un sistem de operare mobil bazat pe o versiune modificată de Linux (pentru gestiunea componentelor hardware, a proceselor și a memoriei) și biblioteci Java (pentru telefonie (audio/video), conectivitate, grafică, programarea interfețelor cu utilizatorul). Este un produs open-source (putând fi dezvoltat de producătorii de dispozitive mobile cu extensii proprietare pentru a-și particulariza platforma), dezvoltat în prezent de compania Google, conceput pe ideea transformării dispozitivelor mobile în adevărate mașini de calcul. Google încearcă totuși să realizeze tranziția de la AOSP (Android Open Source Project) către GMS (Google Mobile Services), peste care sunt construite cele mai multe aplicații, în încercarea de a-și apăra acest proiect în fața concurenței. În acest sens, a fost dezvoltat proiectul Google One, prin care este oferit un set de specificații (ecran de 4.5 inchi – 845×480 pixeli, procesor quad-core, memorie 1GB RAM, spațiu de stocare 4GB, suport pentru dual sim) pe care producătorii de dispozitive mai ieftine trebuie să le respecte astfel încât acestea să fie compatibile cu un sistem Android, fără a întâmpina probleme de performanță. Acesta include toate aplicațiile și serviciile Google, la care se pot adăuga și altele, furnizate de producător sau operatorul de telefonie mobilă. În acest fel, se asigură calitatea (păstrând renumele Android) și controlul asupra veniturilor. Comunitatea Android este în creștere, mai multe companii renunțând la propriul sistem de operare în favoarea acestuia, pentru a putea face față fenomenului iPhone. [17]
În condițiile în care pe piața dispozitivelor mobile aplicațiile sunt cele care aduc avantajul competițional, beneficiul Android este reprezentat de abordarea unitară pentru dezvoltarea aplicațiilor. Cu alte cuvinte, o aplicație dezvoltată conform API-ului Android va putea rula pe mai multe dispozitive mobile pe care este instalat sistemul de operare respectiv.
Caracteristici Android [17]
Printre elementele caracteristice ale sistemului Android se numără următoarele :
Platformă open-source. Android este un produs open source, distribuit sub licența Apache
License versiunea 2 (cu excepția nucleului de Linux care se află sub licență GPL versiunea 2), o licență destul de permisivă ce oferă libertatea de a copia, distribuii și modifica continuțul în mod liber fără nici un cost de licențiere, rămânând la alegerea dezvoltatorilor dacă distribuie sursele modificate sub aceeași licența sau nu. Singurul element din Android care face excepție de la această regula este nucleul de Linux care se afla sub licență GPL versiunea 2 ce presupune că orice modificare a surselor trebuie sa fie făcută publică și ditribuită în continuare gratuit sub licenta GPL versiunea 2.
Portabilitatea rulării pe o gamă largă de hardware curente şi viitoare. Toate programele sunt scrise în Java şi executate pe maşina virtuală Dalvik, existȃnd posibilitatea portării codului pe ARM, x86 şi alte arhitecturi. Interfețele utilizator pot fi adaptate la orice rezoluție pe care o pot avea dispozitivele.
Arhitectură bazată pe componente ce permite reutilizarea componentelor în diverse aplicații precum și înlocuirea acestora.
Oferă suport pentru grafică 2D și 3D utilizând OpenGL ES 1.0
Posibilitatea de a stoca datele sub forma unor baze de date de tip SQLite.
Suport pentru formate media uzuale audio, video, și imagini (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
De asemenea Android-ul pune la dispoziția dezvoltatorilor o serie de unelte utile pentru
dezvoltarea aplicațiilor precum un emulator, unelte pentru debugging, pentru măsurarea performanțelor aplicațiilor, și posibilitatea de integrare cu Eclipse IDE sau Android Studio.
Android este dezvoltat continuu, fiecare versiune lansată aduce îmbunătățiri la diverse componente deja existente precum și elemente și funcționalități noi care să utilizeze cât mai bine resursele fizice ale dispozitivelor.
Funcționalități a sistemului de operare Android [17]
Deoarece Android este un produs open-source, iar producătorii au posibilitatea de a-l modifica în mod gratuit, nu există oarecare configurații software sau hardware standard. Cu toate acestea, sistemul de operare Android implementează următoarele funcționalități:
stocare – folosește SQLite, o bază de date relațională ce nu necesită multe resurse
conectivitate – suportă GPRS, GSM/CDMA, 3G, IDEN, EV-DO, EDGE, UMTS, Bluetooth (inclusiv AVRCP și A2DP), WiFi, LTE, WiMAX
WiFi Direct – tehnologie care permite aplicațiilor să formeze o conexiune punct-la-punct între ele, având lățime de bandă mare
Android Beam – o tehnologie bazată pe NFC (Near Field Communication) care permite utilizatorilor ce posedă dispozitive cu NFC, să partajeze informații instant, prin apropierea dispozitivelor mobile respective
mesagerie – SMS și MMS
navigare pe Internet – bazat pe WebKit, un motor open source pentru navigare, împreună cu motorul JavaScript de la Chrome, ce suportă standartele HTML5 și CSS3
multimedia – suportă o mulțime de formate, printre care se numără: H.263, H.264 (într-un container 3GP sau MP4), MPEG-4 SP, AMR, AMR-WB (într-un container 3GP), AAC, HE-AAC (într-un container MP4 sau 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF si BMP
grafică – 2D optimizată, 3D (OpenGL ES)
senzori – cameră foto, accelerometru, busolă digitală, senzor de proximitate, GPS / AGPS
multi-touch – suportă ecrane ce au posibilitate de contact în mai multe puncte în același timp
multi-tasking – suportă rularea de aplicațiilor cu mai multe fire de execuție
GCM (Google Cloud Messaging) – serviciu de la Google, ce permite dezvoltatorilor de aplicații să trimită date de dimensiuni mici către utilizatori pe dispozitivele cu Android, fără a avea nevoie de a implementa o soluție de sincronizare proprie
multi-Language – suport pentru text bidirecțional și unidirecțional
suport pentru aplicații Flash (până în versiunea 4.3)
legătură la Internet – oferă posibilitatea de a partaja conexiunile la Internet ca punct de distribuție cu fir sau fără fir
Cerințe pentru dezvoltarea unei aplicații pentru Android
Pentru dezvoltarea unei aplicații Android sunt necesare:
kit-ul de dezvoltare pentru limbajul de programare Java
SDK-ul de Android, pentru care se descarcă definițiile corespunzătoare unuia sau mai multor niveluri de API
un mediu integrat de dezvoltare (IDE):
Elipse Luna SR1a (4.4.1), cu plugin-ul pentru Android
Android Studio
un dispozitiv pe care să se ruleze aplicațiile
un emulator:
Genymotion
Android Virtual Device (livrat împreună cu SDK-ul de Android)
un telefon mobil cu sistemul de operare Android pentru care s-a dezvoltat aplicația. Pentru a se putea rula o aplicație pe un dispozitiv mobil fizic, trebuie să se activeze posibilitatea de depanare prin USB, din Dev Tools → Developer options → Debugging → USB debugging.
Versiuni [18]
Fiecare versiune de Android lansată reprezintă un nivel API (API level) și este un criteriu important de care trebuie ținut cont în procesul de proiectare a aplicațiilor pentru această platformă. Astfel, dacă o aplicație este proiectată pentru un nivel API mare corespunzatoare unei versiuni recente de Android atunci aceasta nu va putea funcționa pe dispozitive ce rulează versiuni anterioare, iar dacă o aplicație este proiectată pentru un nivel API mic, aceasta va putea rula pe mai multe dispozitive ce au instalate versiuni superioare de Android însă nu vor beneficia de toate facilitățile oferite de versiunile superioare.
Versiunea 4, precum și versiunile superioare, de Android face disponibile aplicaţiilor pentru smartphone-uri o serie de elemente ce înainte se regăseau doar în versiunea 3 (o versiune destinată strict tabletelor), elemente ce permit realizarea unor interfețe grafice flexibile și performante și care îmbunătățesc experiența utilizatorului precum și alte elemente care îmbunătațesc performanța aplicațiilor. Pe baza acestui criteriu s-a ales ca cerință minimă a versiunii să fie Android 4.03 – Ice Cream Sandwich corespunzător nivelului API 15 ca și platformă țintă. În tabelul 2.1.1 sunt enumerate toate versiunile de Android precum și răspăndirea în rândul dispozitivelor ce rulează pe această platformă.
Figura 2.1.1 Grafic distribuție versiuni Android
Tabel 2.1.1 Versiuni de Android
Vedere de ansamblu [19]
Android este structurat, conform figurii 2.1.2, pe mai multe nivele, fiecare nivel depinzând de functionalitățile oferite de nivelul inferior acestuia.
Figura 2.1.2 Structura sistemului de operare Android
Nucleu de linux (linux kernel)
La baza arhitecturii Android se află un nucleu de Linux 2.6 care asigură functionalități de bază ale sistemului precum gestionarea sistemului de fișiere, gestionarea proceselor, a memoriei, a elementelor ce țin de rețelistică și a driverelor. [19]
Librării [19]
Al doilea nivel al arhitecturii constă într-un set de librării C/C++ ce stau la baza funcționării diverselor componente ale sistemului Android.
Printre aceste librării se numără:
Un subset al librariei standard C (libc) special adaptată pentru dispozitive mobile pe care rulează Linux.
O serie de librării media ce oferă suport pentru formate audio și video uzuale precum MPEG4, H.264, MP3, AAC, AMR, JPG și PNG
Suport pentru grafica 2D (funcționalități oferite de către motorul grafic SGL) și 3D (funcționalități oferite de libraria OpenGL ES 1.0)
FreeType – o librărie ce asigură redarea fonturilor vectoriale sau de tip bitmap
SQLite – Baza de date cu ajutorul căreia se pot stoca datele persistente.
SQLite [20]
SQLite este o bibliotecă, scrisă în ANSI-C, în cadrul căreia se găsește implementarea unui motor de baze de date (database engine) tranzacțional, de sine-stătător, care nu necesită server sau configurări speciale pentru a rula.
În SQLite citirea, respectiv scrierea datelor se face direct pe disk. O bază de date completă SQL cu mai multe tabele, indexi, triggere şi vederi, va fi stocată pe disk sub forma unui singur fișier. Formatul fișierelor în care este stocată o baza de date SQLite este conceput astfel încît să fie cross-platform facilitând portarea bazei de date între sistemele 32-bit şi 64-biţi sau între arhitecturi big-endian si little-endian.
SQLite este o bibliotecă compactă. Având toate caracteristicile activate, dimensiunea bibliotecii poate fi mai mică de 350KiB, (depinzând de platforma ţintă şi setările de optimizarea a compilatorului). În cazul în care funcţiile opţionale sunt omise, dimensiunea bibliotecii SQLite poate fi mai mică de 200KiB. Astfel SQLite devine motor SQL ideal pentru dispozitive cu memorie limitată, precum telefoane mobile, PDA-uri, playere MP3.
Proiectul SQLite este administrat de o echipă internaţională de dezvoltatori care continuă să extindă capacităţile SQLite cu scopul de a spori fiabilitatea şi performanţele acestuia, menţinând în acelaşi timp compatibilitate cu interfaţa publică, sintaxa SQL, baze de date şi formatul de fişier.
Tipurile de date ce pot fi folosite in SQLite sunt TEXT (echivalentul tipului de date String din Java), INTEGER (echivalentul tipului de date long din Java) și REAL (echivalentul tipului de date double din Java) însa nu se face validarea automată a tipurilor de date înainte ca acestea să fie introduse în baza de date.
În Android se regăsește SQLite versiune 3, fiecare baza de date SQLite fiind salvată în memoria dispozitivului în directorul:
DATA/data/NUMELE_APLICATIEI/databases/NUMELE_BAZEI_DE_DATE.
SDK-ul de Android pune la dispoziția devoltatorilor o serie de clase java prin intermediul cărora pot fi acesat SQLite și efectuate diverse operații asupra bazelor de date. Aceste clase se regăsesc în pachetele android.database și android.database.sqlite.
Din punct de vedere legal, SQLite este încadrat în domeniului public făcând astfel posibilă utilizarea codulului în orice scop (atât comercial cât și privat) fără nici o constrângere din punct de vedere legal.
Android runtime
Android include un set de librării care susţin o mare parte din funcţionalitatea pusă la dispoziţie de limbajul de programare Java. Mai exact pune la dispoziție un set restrâns de functionalități oferite de Java SE 1.7 din care au fost excluse elementele ce țin de swing și awt.
Elementele .class sunt convertite de sistemul Android in fisiere .dex (Dalvik executable, un tip special de bytecode optimizat pentru a rula pe dispozitive mobile necesitând puține resurse și consum mic de energie). Fisierele .dex sunt rulate de către mașina virtuala Dalvik. Fiecărei aplicații fiindu-i alocate o instanța a mașinii virtuale Dalvik. [17]
Application Framework
Acest nivel oferă dezvoltatorilor toate funcționalitățile necesare utilizării resurselor oferite de sistem precum și dezvoltarea de aplicații care să le folosească. Este organizat pe componente astfel încît să permită ca functionalitățile unei aplicații să poată fi utilizate de către alte aplicații cu condiția de a respecta constrângerile de securitate impuse de framework. [17]
Tot în cadrul acestui nivel al ierarhiei sistemului se pot găsi o serie de servicii și mecanisme ce stau la baza funcționării tuturor aplicațiilor precum:
un set bogat de componente UI ce pot fi folosite de către dezvoltator în proiectarea interfețelor grafice pentru aplicații.
Activity Manager : controlează ciclul de viaţă al aplicaţiilor, modul de comunicare dintre acestea, precum și navigarea între aplicații.
Resource Manager : controlează accesul la resursele non-cod, cum ar fi: string-uri, layout-uri, imagini etc.
Content providers : Aceste componente permit ca datele unei aplicații să fie folosite de către alte aplicații
Notification Manager : permite diferite modalități de notificare a utilizatorilor.
Aplicațiile
Ultimul nivel este reprezentat de aplicațiile propriuzise, create de către dezvoltatori și care pot fi folosite de către utilizatorii finali. Androidul vine implicit cu o serie de aplicații pre-instalate însă alte aplicații pot fi descărcate de pe Google Play sau alte surse online.
O aplicație constă într-un fișier .apk (android package) și conține, de obicei, 3 componente:
Fisierul executabil Dalvik – reprezintă codul sursă Java compilat pentru a obține executabilul și care e rulat de mașina virtuala Dalvik
Resurse – orice nu este cod sursă este o resursă. Aplicația poate să conțină imagini, fișiere audio/video și numeroase fișiere XML care descriu layout-ul, etc.
Librării native – Opțional, aplicația poate conține librării native, C/C++, care sunt incluse în fișierul .apk
Aplicaţiile Android sunt scrise în limbajul de programare Java. Codul compilat împreună cu resursele statice (imagini, texte etc.) sunt stocate cu ajutorul unui instrument numit appt într-un pachet Android cu extensia .apk (android package). Android este un sistem multi utilizator în care fiecare aplicație e vazută ca un utilizator (fiecărei aplicații fiindu-i atribuit un ID de utilizator unic de către sistem), astfel fiecare aplicație instalată rulează într-un proces Linux separat. Fiecare proces are propria instanță a mașinii virtuale Dalvik, astfel că aplicaţiile Android rulează izolat una faţă de cealaltă. Un alt avantaj al aplicaţiilor Android este acela că o aplicaţie poate folosi elemente ce aparțin altor aplicaţii.
Aplicaţiile Android sunt formate din componente slab cuplate, legate printr-un fișier manifest.xml în care sunt descrise fiecare componentă şi modul în care acestea interacţionează.
2.1.2 Elemente componente a unei aplicații pe Android
Există câteva componente de bază care sunt folosite pentru construirea unei aplicaţii, componente ce vor fi discutate individual în continuare.
Activity [21]
Componentele de tip Activity sunt componentele responsabile cu partea de prezentare a aplicațiilor Android. Aceste tip de componentă este responsabilă de furnizarea unei interfețe grafice utilizatorului precum și de captarea, respectiv procesarea comenzilor provenite de la utilizator prin intermediul interfeței grafice.
O aplicație poate avea în componența ei una sau mai multe componente de tip Activity în funcție de design, una dintre acestea fiind marcată ca și “Activitatea” principala a aplicației, aceasta fiind primul obiect de tip Activity care va fi lansat în execuție după pornirea aplicației.
Fiecare obiect de tip Activity are un ciclu de viața compus din mai multe stări. Datele privind stările diferitelor componente sunt reținute într-o structură de date denumită stivă de activități (back-stack) și este gestionată de sistem. Această structură de date este o structura de tip FIFO, în capul stivei situându-se obiectul de tip Activity activ la un moment dat. Când utilizatorul interacționează cu un alt obiect de tip Activity, acesta ajunge în capul stivei, beneficiind de resursele sistemului iar obiectul precedent trece la un nivel inferior pe stivă, devenind inactiv și neconsumând resurse. Când utilizatorul dorește să revină la componenta Activity precedentă, componenta pe care era centrat utilizatorul va fi scoasă din stiva și distrusă iar componenta precedentă va reveni în capul stivei.
Un obiect de tip Activity se poate afla în una din cele 3 stări:
starea activă. Componenta de tip Activity se află în prim plan (se situeaza în capul stivei de activităţi) utilizatorul interacționând direct cu aceasta.
stare de așteptare. Componentele aflate in aceasta stare nu interactioneaza cu utilizatorul însă sunt vizibile acestuia, fiind în continuare atașată manager-ului de ferestre. Toate datele legate de starea acestor obiecte sunt păstrate în memorie. Însă în cazul în care sistemul are nevoie de resurse acestea vor fi distruse pentru a elibera resurse.
oprită. Componentele aflate în această stare nu interacționează cu utilizatorul și nici nu sunt vizibile acestuia. Toate datele legate de starea activității sunt păstrate în memorie. Însă în cazul în care sistemul are nevoie de mai multe resurse activitățile din această stare pot fi distruse pentru a elibera resurse.
Se pot specifica operațiile care să se execute la tranziția dintre diversele stări prin implementarea unor metode de callback furnizate de clasa Activity și care sunt apelate de sistem în momentul tranziției.
View și ViewGroup [21]
Interfețele grafice sunt alcătuite dintr-o serie de obiecte de tip View si Viewgroup organizate sub forma unei structuri ierarhice conform figurii 2.1.3. Un obiect de tip View este un obiect care are o reprezentare grafică și cu care utilizatorul poate interacționa. Un obiect de tip ViewGroup este un obiect ce grupeaza mai multe elemente de tip View si le poate afișa simultan.
Android pune la dispoziție o gamă variată de subclase ce extind View și ViewGroup și care pot fi folosite în construirea interfețelor grafice. De asemenea dezvoltatorii au posibilitatea de a-și creea propriile elemente grafice personalizate extinzand clasele View respectiv ViewGroup.
Figura 2.1.3 Structura ierarhică a interfețelor grafice în Android
Există un obiect central de tip ViewGroup care ține referințe către restul elementelor de tip View sau ViewGroup.
Există un element de tip ViewGroup cu rol de părinte iar fiii acestuia pot fi obiecte de tip View sau chiar ViewGroup, care la rândul lor pot avea fii de tip View sau ViewGroup. Dimensiunea arborelui poate crește în funcție de cât de complex este proiectată interfața grafică, însă este recomandat să se păstreze cât mai simplă posibil deoarece mărimea arborelui afectează performanța.
Interfața grafică a unei aplicații Android poate fi realizată fie programatic din cod, fie definită în cadrul unui fișier XML care este încărcat de către o componentă de tip Activity.
Action Bar [22]
Action Bar sau bara de acțiuni este un element vizual introdus în Android versiunea 3.0 (API level 11) cu scopul de a îmbunătăți experiența utilizatorului. Acest element ia forma unei bare orizontale a cărui conținut se schimbă în funcție de poziția utilizatorului în cadrul aplicației.
Printre facilitățile oferite de Action Bar se numără:
informarea vizuală a utilizatorului în legatură cu poziția acestuia în cadrul aplicației la un moment dat
pune la dispoziția utilizatorului o serie de opțiuni în funcție de poziția acestuia în aplicațe, opțiuni care în versiuni de Android anterioare 3.0, ar fi localizate într-un meniu de opțiuni.
Pune la dispoziția utilizatorului diverse modalități de navigare prin conținutul aplicației.
Componenta de tip ActionBar furnizează un API prin intermediul căruia pot fi controlate diverse aspecte ale acesteia în cadrul aplicației din care face parte .
App widget
O componente de tip App Widget poate fi privită ca o aplicație în miniatură ce oferă posibilitatea utilizatorului de a vizualiza sau interacționa cu anumite elemente ce țin de conținutul aplicație. O astfel de componentă poate fi folosită de componente de tip App Widget Host printre care se numără și Home Screen-ul de Android. [23]
Fragment [24]
În scopul creării unor interfețe grafice mai dinamica și flexibile, odata cu Android 3.0 (nivel API 11) a fost introdusă o nouă componentă denumită Fragment. Un obiect de tip Fragment poate fi privit ca o copomentă ce modelează o anumită parte din comportamentul aplicației la nivelul interfeței utilizator oferite de un obiect al clasei Activity, fiecare Fragment având definit propriul comportament față de interacțiunea cu utilizatorul.
Un obiect de tip Activity poate avea în componența interfeței sale grafice mai multe obiecte de tip Fragment iar un obiect de tip Fragment poate fi proiectat astfel încat să poată fi refolosit ca și parte componenta a interfeței grafice în mai multe obiecte de tip Activity.
Un obiect de tip Fragment are propriul ciclul de viață, similar cu cel al unui obiect de tip Activity, însă acesta e strâns legat de ciclul de viață a obiectului de tip Activity în care este încorporat, astfel dacă acesta e în starea de așteptare atunci și toate componentele sale de tip Fragment vor fi în aceeași stare, dacă aceasta este distrusă atunci și toate componentele sale de tip Fragment vor fi distruse.
Orice operații efectuare asupra obiectelor de tip Fragment (adaugare, ștergere, modificare) sunt văzute ca niște tranzacții denumite Fragment Transactions iar fiecare tranzacție poate fi trecută în stiva de operații ale Activității (back-stack) ceea le permite utilizatorilor să acceseze diferite stări anterioare ale ciclului de viață ale Fragmentelor.
Un Fragment poate avea propria interfață grafică definită într-un fisier .xml. Interfața grafică a fragmentului va fi înserată în ierarhia de View-uri ale activității din care face parte.
Un Fragment poate fi adăugat la interfața grafica a unui obiect de tip Activity fie folosind tag-ul <fragment> în cadrul fișierului layout.xml al acestuia fie adaugându-l din cod la un ViewGroup.
O componentă de tip Fragment este foarte similară cu una de tip Activity ca și structură, în cadrul lor regăsindu-se aceleași metode onCreate, onStart(), onPause(), onStop(), însă au și câteva metode specifice.
Fragmentele au fost concepute astfel încă să ofere suport în realizarea unor interfețe grafice dinamice și flexibile care pot fi modificate în timpul rulării, fără a necesita multe modificări la nivelul ierarhiilor de vederi ale activitățiilor.
Gestionarea fragmentelor se face cu ajutorul unei entităti denumire FragmenteManager care permite urmatoarele operații:
Găsirea anumitor fragmente pe baza de ID
Găsirea anumitor fragmente pe bază de tag
Executarea operațiilor de tip fragmente Tranzaction
Un avantaj pe care îl au fragmentele este acel că pot fi cu ușurință adăugate, eliminate, modificate ca răspuns la acțiunile utilizatorului.
Aceste acțiuni se pot realiza sub forma unor tranzacții prin folosirea api-ului de fragment transaction
Tranzactiile de tip fragmente tranzaction se pot folosi prin intermediul obiectului de tip FragmentManager
ListView [25]
Pentru afișarea colecțiilor de date se folosesc elemente grafice de tip container, referite sub denumirea de liste. Acestea controlează dimensiunile și modul de dispunere al componentelor, structura unei componente fiind însă gestionată de elementul de tip adaptor asociat.
Cel mai utilizate tip de container pentru colecțiile de date este ListView.
Un obiect de tip ListView afișează elementele pe care le conține în mod vertical, cu posibilitatea ca acestea să fie derulate în situația în care se depășește dimensiunea suprafeței de afișare pe ecran. Elementele pot fi delimitate de anumite separatoare (culoare sau resursă grafică) specificate prin proprietatea divider (pentru care se poate preciza și înălțimea – atributul dividerHeight). Un astfel de control poate fi succedat sau precedat de un control grafic, existând posibilitatea distingerii acestor elemente prin delimitatoare (proprietățile headerDividersEnabled, respectiv footerDividersEnabled).
Dacă este folosit într-o activitate obișnuită, controlul de tip ListView trebuie să fie specificat în interfața grafică din fișierul XML asociat ferestrei din care face parte, specificîndu-se și un identificator prin intermediul căruia i se poate face referință.
Elementele (de tip View) pe care le afișează un astfel de obiect sunt furnizate de un ListAdapter care trebuie precizat prin intermediul metodei setAdapter(ListAdapter). În codul sursă, se va specifica un tip de adaptor care va fi inițializat cu datele pe care le va conține obiectul respectiv, după care acesta va fi asociat controlului grafic. Elementul de tip adaptor primește un parametru care indică modul de dispunere a conținutului listei. În acest sens se pot utiliza layout-uri predefinite, corespunzătoare tipului de obiect de tip AdapterView sau se pot folosi layout-uri definite de utilizator (pentru structuri de date mai complexe ce implică afișarea informației într-un format dependent de acest context). Toate operațiile asupra conținutului elementului de tip ListView se vor realiza prin intermediul obiectului ListAdapter.
Spiner
În cadrul elementului de tip Spinner, nu se afișează întregul conținut al listei (astfel încât să nu se ocupe întregul spațiu disponibil), ci numai valoarea selectată în mod curent, existând posibilitatea expandării pentru vizualizare a tuturor componentelor în momentul accesării acesteia. [25]
Modul în care sunt afișate intrările dintre care se poate realiza selecția este controlat prin proprietatea spinnerMode care poate lua valorile dialog dacă se dorește afișarea unei ferestre de dialog, respectiv dropdown dacă lista va fi expandată sub controlul care conține valoarea curentă.
Tipuri de adaptoare pentru colecții de date [25]
Pentru o colecție de date, rolul unui adaptor constă în gestionarea modelului de date transpunându-l (adaptându-l) la fiecare element din cadrul interfeței grafice (tabel sau listă). Toate adaptoarele (predefinite sau definite de utilizator) sunt moștenite din clasa BaseAdapter.
În funcție de proveniența datelor, se vor utiliza tipuri de adaptoare specializate:
ArrayAdapter<T> – pentru datele păstrate sub forma unui tablou (de tipul T[] sau java.util.List<T>)
SimpleCursorAdapter – pentru date preluate de la o sursă de conținut (cum ar fi o bază de date)
Acestea au asociate moduri specifice de dispunere a conținutului, predefinite în android.R.layout, adaptate la tipul de control grafic utilizat. De regulă, pentru structuri de date mai complexe ce trebuie vizualizate folosind mecanisme de afișare personalizate, pentru asigurarea unei funcționalități specifice, trebuie utilizat un tip de adaptor definit de utilizator, ce suprascrie metodele clasei BaseAdapter.
Meniuri [25]
În Android, meniurile sunt implementate folosind clasa android.view.Menu, fiecare activitate având asociat un astfel de obiect.
Figura 2.1.4 Structura meniului în sistemul de operare Android
Așa cum se poate observa din figura 2.1.4, un meniu poate să conțină:
nici unul sau mai multe submeniuri (reprezentate de clasa android.view.SubMenu)
nici unul sau mai multe intrări propriu-zise (reprezentate de clasa android.view.MenuItem), ce sunt caracterizate prin atributele:
denumirea reprezintă valoarea care este afișată în interfața grafică
identificator generat de regulă în mod automat pentru meniurile declarate cu ajutorul fișierelor XML
identificator al grupului de meniuri cu ajutorul căruia mai multe opțiuni din meniu pot fi grupate împreună
numărul de ordine specifică importanța intrării, impunînd o sortare a acestora, fiind folosit pentru indicarea oridinii de afișare a meniurilor sau pentru precizarea faptului că întregul grup aparține unei anumite categorii (identificatorul grupului de meniuri fiind echivalent cu numărul de ordine); pentru anumite categorii de meniuri sunt rezervate unele intervale.
Servicii [26]
Un serviciu (o componentă de tip Service) este o componentă lipsită de interfață grafică și care execută operații pe fundal și a cărui ciclu de viață este independent de cel al altor componente.
O componentă de tip Service poate fi pornită de către alte componente și odată pornit, serviciul respectiv își execută independent sarcinile pe care le are de făcut, chiar dacă componenta care l-a pornit inițial este distrusă.
Serviciile au un ciclu de viață, simplificat ce este controlat în cea mai mare parte de către dezvoltator și nu de către sistem.
Content provider (furnizor de conținut) [27]
O componentă de tip Content Provider este un obiect din cadrul unei aplicații Android care face ca anumite date, din cadrul aplicației, să fie disponibile altor aplicații.
Datele partajate pot fi: fișiere audio, video, imagini, alte tipuri de fișiere precum și date stocate într-o bază de date SQLite.
Pentru a crea o astfel de componentă, trebuie extinsă clasa ContentProvider. Această clasă oferă un set de metode pentru expunerea și prelucrarea datelor, similare cu cele utilizate pentru baze de date. O parte din elementele native ale sistemului Android conțin componente de tip ContentProvider făcând disponibile altor aplicații date precum, datele gestionare de manager- ul de contacte a dispozitivului și altele.
Pentru a putea accesa datele, oferite de un anumit furnizor de conținut, trebuie folosit un obiect de tip ContentResolver. Un ContentResolver este un obiect client ce furnizează operații CRUD (create, read, update și delete) asupra datelor oferite de către un ContentProvider dintr-o anumită aplicație. Toate elementele ce țin de comunicarea dintre procese (procesul aplicației ce conține ContentProvider-ul și procesul aplicației ce solicită datele) sunt gestionate automat de către sistem.
Receptori de anunțuri (Broadcast Receivers) [28]
Un obiect de tip Broadcast Receiver este o componentă care răspunde la mesaje de tip broadcast.
Mesajele de tip broadcast pot fi transmise de către sistem, pentru a notifica aplicațiile despre anumite modificari ale parametrilor sistemului (precum nivelul memoriei, bateria disponibilă), sau de către aplicații pentru a notifica alte aplicații despre anumite evenimente precum terminarea descărcării unui fișier. În funcție de conținutul mesajelor de broadcast anumite aplicații pot reacționa la evenimentele anunțate.
Pentru a putea implementa o astfel de componentă trebuie extinsă clasa BroadcastReceiver iar mesajele de broadcast sunt de obicei obiecte de tip Inten (intenții). Acest tip de componentă nu posedă o interfață grafică proprie, însă pot comunica cu utilizatorul prin trimiterea de notificări către bara de stare (satus bar).
Acest sistem de mesaje de broadcast și receptori de broadcast poate fi văzut ca un mecanism de tip publish-subscribe sau o implementare a șablonului Observer.
Intent (Intenții)
O “intenție”, sau un obiect de tip Intent, conține informații despre operațiile pe care ar trebui să le facă o anumită componentă destinație pe un anumit set de date. Cu ajutorul obiectelor de tip Intent este posibilă comunicarea, în timpul rulării, cu diverse componente aflate fie în interiorul aceleiași aplicații, fie sunt localizate în alte aplicații. Printre componentele ce pot fi activate prin intermediul obiectelor de tip Intent se numară obiecte de tip Activity, Service și BroadcastReceiver. [29]
Există 2 tipuri principale de intenții: intenții implicite și intenții explicite.
In cadrul intențiilor explicite este specificat obiectul distinație care să realizeze prelucrările cerute (fie că e de tip Activity, Service sau BroadcastReceiver).
In cazul intențiilor explicite, rămâne pe seama sistemului sarcina de a selecta aplicația corespunzătoare care să răspundă la solicitarea din cadrul Intent-ului. Elementele din Intent care sunt analizate sunt cele din categoriile action, data și category. In acest caz sistemul ține cont de filtrele de intenție declarate în fișierul manifest a fiecărei aplicații. Un filtru de intenții (intent filter) specifică tipul de intenții pe care le poate prelucra o anumită aplicație.
Fișierul manifest Android
Fiecare proiect Android include un fişier xml denumit AndroidManifest.xml, stocat în directoriul rădăcină al proiectului. În acest fişier sunt descrise componentele folosite în aplicaţie şi alte informaţii referitoare la permisiuni sau librării ce trebuie legate de aplicaţia curentă. Se poate defini versiunea de Android folosită de aplicaţie, resursele și drepturile de care are nevoie aplicația pentru a putea rula. Structura acestui fişier impune prezenţa unui tag rădacină <manifest> urmat de tag-ul <application> în interiorul căruia vor fi descrise componentele care alcătuiesc aplicaţia.
Fișierul e important pentru că poate conține lista de permisii cerute de aplicatie, fără de care anumite posibilități ale dispozitivului, cum ar fi accesul la internet, înscrierea datelor în memoria internă, nu ar fi posibile.
2.1.3 Procese și fire de execuție în Android
Atunci când e necesară pornirea unei aplicații, sau a unei anumite componente dintr-o aplicație, Android pornește automat un nou proces Linux cu un singur fir de execuție pentru componenta respectivă. Acest proces este cunoscut și sub numele procesul principal (procesul main) al aplicației. În cazul în care a fost pornit un proces pentru o componentă aparținând unei aplicații anume, atunci orice cerere ulterioară de a rula alte componente aparținând aceleași aplicații vor fi executate în același process nefiind creat unul nou.
Procese [30]
Android încearcă să mențină procesele în stare de funcționare pe cât de mult posibil, acestea fiind oprite doar în cazul în care sistemul are nevoie să recupereze resurse pentru a executa operațiile importante, însă în cazul în care sistemul are nevoie de resurse, vor fi oprite procesele mai puțin importante în favoarea celor importante.
In funcție de importanța acestora exista 5 tipuri de procese:
Procese de tip foreground. Acest nivel de importață este asociat proceselor în care rulează componentele ce se află în prim plan și cu care utilizatorul interacționează direct la un moment dat. Există un număr mic de astfel de procese la un moment dat și sunt oprite doar în ultimă instanță atunci când starea resurselor e critică.
Procese vizibile. Acest tip de procese găzduiesc componente care nu sunt în prim plan dar care însă sunt vizibile pentru utilizator.
Procese de tip service. Acest tip de procese conțin componente de tip Service care rulează în fundal efectuând diverse operații
Procese de fundal. Acest tip de procese conțin componente care nu mai sunt vizibile utilizatorului. La un moment dat pot exista multe astfel de procese, evidența acestora fiind păstrată într-o listă ordonată în funcție de cât de recent au fost accesate componentele acestora. Astfel că un proces ce conține un obiect de tip Activity care a fost folosit recent – va fi oprit ultimul process de tip background oprit în cazul în care sistemul are nevoie să recupereze resurse. E indicat să fie implementate corect metodele de callback ce țin de ciclul de viață din cadrul fiecărei componente, pentru a preveni o eventuală pierdere a datelor în cazul în care procesul acestora este oprit.
Procese goale. Acest tip de procese nu conțin nicio componenta activă, având doar rol de caching. Rolul lor fiind cel de a îmbunătăți timpul de lansare a unei noi component fară a carea un nou proces.
Importanța unui proces este dată de gradul de importanță a componentelor ce rulează în acesta.
Importanța proceselor mai este dată și de interdependența dintre ele. Astfel că dacă, de un anumit proces depinde un alt proces cu un grad rididat de importanță atunci procesului respectiv i se va asocia cel puțin același grad de importanță.
Fire de execuție
Implicit fiecărei aplicații îi este asociat un singur fir de executie cunoscut ca și firul principal de execuție (main thread). Toate instanțierile de obiecte, respectiv prelucrări de date, sunt executate pe acest fir de execuție. Tot în cadrul acestui fir de execuție au lor operațiile ce vizează interacțiunile dintre elementele de Android UI toolkit (components ce apartin pachetelor android.widget si android.view) și aplicația propriu-zisă, de aceea acest fir de execuție mai este supranumit și UI thread.
Există o problemă în acest cazul operațiilor solicitante deoarece ar afecta performanța aplicației și ar putea duce la blocarea ei.
In cazul operațiilor mai complicate se poate implementa un obiect de tip Handler care apoi să fie asociat unui nou fir de execuție sau se pot folosi obiecte de tip AsyncTask.
Asynctask [31]
Obiecte de tip AsyncTask pot fi folosite pentru a efectua prelucrări asincrone asupra obiectelor apartinând interfeței grafice. Operațiile sunt executate în cadrul unor fire de execuție care rulează pe fundal iar rezultatul operațiilor este publicat în elementele corespunzatoare situate în UI Thread.
Pentru a folosi un astfel de obiect trebuie extinsă clasa AsyncTask și implementată metoda doInBackground(). Operațiile specificate în aceasta metodă vor fi executate în cadrul unor fire de execuție ce rulează în fundal.
Loader (încărcător) [32]
Un obiect de tip Loader este un obiect ce facilitează încărcarea asincronă a datelor în cadrul unui obiect de tip Activity sau Fragment.
Acest tip de obiect este disponibil odată cu versiunea 3.0 de Android și este special conceptul pentru obiecte de tip Activity și Fragment pentru a putea încărca date din diverse surse de date în mod asincron fără ca această operație să fie executată pe UI thread și să afecteze performanța aplicației.
Un obiect de tip Loader odată creat, monitorizează sursa de date actualizând automat interfața grafică în cazul modificării datelor.
2.1.4 Ciclul de viață a unei aplicații în Android [21]
Din momentul în care activitatea este creată și până la momentul în care este distrusă, ea trece printr-o serie de etape, cunoscute sub denumirea de ciclul de viață al activității:
în execuție (eng. running) – activitatea se află în prim plan și este vizibilă, astfel încât utilizatorul poate interacționa cu aceasta prin intermediul interfeței grafice pe care o oferă;
întreruptă temporar (eng. paused) – activitatea se află în fundal și este (parțial) vizibilă; o astfel de situație este întâlnită în momentul în care o altă activitate a fost pornită, însă interfața sa grafică este transparentă sau nu ocupă întreaga suprafață a dispozitivului de afișare; în acest caz, activitatea este încă activă în sensul că obiectul de tip Activity este stocat în memorie, fiind atașată în continuare procesului responsabil cu gestiunea ferestrelor și menținându-se starea tuturor componentelor sale; totuși, ea poate fi distrusă de sistemul de operare dacă necesarul de memorie disponibilă nu poate fi întrunit din cauza sa;
oprită (eng. stopped) – activitatea se află în fundal și este complet ascunsă; o astfel de situație este întâlnită în momentul în care o altă activitate a fost pornită, iar interfața sa grafică ocupă întreaga suprafață a dispozitivului de afișare; și în acest caz, activitatea este activă în sensul că obiectul de tip Activity fiind stocat în memorie, menținându-se starea tuturor componentelor sale, dar detașându-se de procesul responsabil cu gestiunea ferestrelor; ea poate fi distrusă de sistemul de operare dacă necesarul de memorie disponibilă nu poate fi întrunit din cauza sa;
inexistentă – activitatea a fost terminată sau distrusă de sistemul de operare, rularea sa impunând crearea tuturor componentelor sale ca și când ar fi accesată inițial.
Figura 2.1.5 Ciclul de viață a unei activități
Tranziția unei activități dintr-o stare în alta este notificată prin intermediul unor metode (eng. callbacks), care pot fi suprascrise pentru a realiza diferite operații necesare pentru gestiunea memoriei, asigurarea persistenței informațiilor și a consistenței aplicației Android în situația producerii de diferite evenimente:
onCreate(Bundle) – apelată în momentul în care activitatea este creată; această metodă va fi folosită pentru inițializări statice:
încărcarea interfeței grafice printr-un apel al metodei setContentView(int) (al cărei parametru reprezintă referința către resursa de tip .xml care descrie interfața grafică);
obținerea de referințe către componentele interfeței grafice printr-un apel al metodei findViewById(int) (al cărei parametru reprezintă referința către componenta respectivă – eng. widget – așa cum apare în resurse);
indicarea unor obiecte de tip ascultător care să gestioneze evenimentele legate de interacțiunea cu utilizatorul;
realizarea unor conexiuni către alte modele de date.
onRestart() – apelată atunci când activitatea a fost oprită și ulterior repornită; este urmată întotdeauna de metoda onStart();
onStart() – apelată înainte ca activitatea să apară pe ecran; poate fi urmată de metoda onResume() dacă activitatea trece în prim-plan sau de metoda onPause() dacă activitatea trece în fundal;
onResume() – apelată înainte ca activitatea să interacționeze cu utilizatorul; această metodă va fi folosită pentru a porni servicii sau cod care trebuie să ruleze atâta timp cât aplicația este afișată pe ecran; este urmată întotdeauna de metoda onPause();
onPause() – apelată înainte ca activitatea să fie întreruptă temporar, iar o altă activitate să fie reluată; această metodă va fi utilizată pentru a opri servicii sau cod care nu trebuie să ruleze atâta timp cât activitatea se află în fundal (întrucât consumă timp de procesor) și pentru a salva starea diferitelor componente în vederea asigurării persistenței și a consistenței aplicației înainte și după evenimentul care a produs suspendarea sa; poate fi urmată de metoda onResume() dacă activitatea trece în prim-plan sau de metoda onStop() dacă activitatea este ascunsă;
onStop() – apelată în momentul în care activitatea este ascunsă, fie din cauză că urmează să fie distrusă, fie din cauză că o altă activitate, a cărei interfață grafică ocupă întreaga suprafață a dispozitivului de afișare, urmează să devină vizibilă; poate fi urmată de metoda onRestart(), dacă activitatea urmează să interacționeze (din nou) cu utilizatorul, sau de metoda onDestroy() dacă activitatea urmează să fie terminată sau distrusă de sistemul de operare;
onDestroy() – apelată înainte ca activitatea să se termine sau să fie distrusă de către sistemul de operare (fie manual, fie automat) din lipsă de memorie; această metodă va fi utilizată pentru a elibera resursele ocupate.
Distincția între cele două situații în care o activitate este distrusă poate fi realizată prin intermediul metodei isFinishing().
Procesările realizate în metoda onPause() nu trebuie să ocupe un interval de timp prea mare întrucât în caz contrar ar bloca noua activitate care urmează să fie lansată în execuție.
Figura 2.1.6 Tranziția unei activități dintr-o stare în alta
Fiecare dintre metodele ce gestionează ciclul de viață al activității trebuie să apeleze metoda părintelui. În cazul metodei onCreate(), este necesar ca acest lucru să fie realizat la începutul metodei.
În cadrul unei activități, este interzisă apelarea manuală a metodelor legate de ciclul de viață, acestea fiind invocate în mod automat de sistemul de operare Android la producerea diferitelor evenimente.
2.1.5 Google feeds API
Astăzi, când tot mai mult conținut este făcut disponibil prin feed-uri, Google pune la dispoziție programatorilor posibilitatea de a extrage informații printr-un simplu HTTP request.
Versiunea 1.0 a acestui API nu este deosebit de complexă, ceea ce permite de a citi rapid documentația și de a implementa în aplicația noastra acest API.
Compania Google pune la dispoziție accesul public la resursele sale prin intermediul serviciilor Web publice. Acestea pot fi accesate cu XML-RPC, SOAP și REST.
Pentru a căuta o listă de feed-uri despre sport pe Google accesăm un URI, unde se află un XML (REST) cu rezultatul căutării. REST-ul parsat se află la următorul URI:
https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=.
La acest URI se adaugă parametri tip HTTP_GET, URI-ul final devenind:
https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=sport
2.1.6 Google Translate text-to-speech
Google Translate Text-to-Speech este un alt API pus la dispoziție de compania Google. Acesta permite transformarea unui text scris în voce. Pentru generarea semnalului sunt folosite mai multe metode, cum ar fi:
Unit-selection – este cea mai răspândită metodă de sinteză a vorbirii – este de asemenea foarte dependentă de calitatea și cantitatea de date de antrenare
Sinteză parametrică statistică – un model este antrenat pentru a genera parametrii semnalului vocal pornind de la ieșirea platformei de analiză a textului
Sinteză hibrid – este o metodă care combină elemente din ambele sisteme de mai sus
Pentru a sinteza un text scris în voce, se accesează URI-ul:
http://translate.google.com/translate_tts?tl=p1&q=p2
unde:
p1 – limba textului
p2 – textul care va fi sintezat
În urma accesării obținem un fișier audio cu textul dat.
2.1.7 Yandex translate
Yandex Translate creat și întreținut de Yandex, este un serviciu online de traducere gratuit, ce permite traducerea unei secțiuni de text, sau pagină web, într-o altă limbă.
Spre deosebire de alte servicii de traducere precum Babel Fish, AOL, și Yahoo, ce folosesc sistemul SYSTRAN, Yandex folosește propria tehnologie.
Pe lîngă sistemul de traducere, Yandex translate permite detectarea automată a limbii textului de intrare, însă nu poate oferi întotdeauna traduceri perfecte. Anumite limbi, și anume rusa și engleza, au o mai bună traducere decât altele.
Față de celelalte sisteme de traducere ce folosesc reguli gramaticale pentru a traduce, algoritmul Yandex Translate constă în traduceri bazate pe statistici.
2.1.8 Material design [33]
Prima versiune a sistemului de operare Android a fost de la bun început subiectiv urâtă, avînd interfața grafică neinspirată și mohorâtă, fiind net inferioară celei strălucitoare oferite de sistemul de operare concurent: iOS. Odată cu saltul la versiunea 2.x, mediul grafic al platformei Android a suportat îmbunătățiri treptate, însă progresul până la versiunea Gingerbread inclusiv a fost neconvingător și interfețele proprietare de la producătorii de dispozitive, precum HTC Sense, erau mai mult apreciate în perioada anilor 2010 – 2011.
Odată cu sosirea actualului designer-șef Matias Duarte, a fost efectuată și o mare schimbare, astfel elementele noi testate pe tabletele cu Android 3.0 fiind îmbunătățite, ajustate, finisate și implementate în versiunea Android 4.0. La trei ani de la lansarea Ice Cream Sandwich, Android avea însă nevoie de o cosmetizare consistentă, iar noul Android 5.0 Lollipop oferă cea mai radicală schimbare de design survenită de la versiunea Honeycomb pînă în prezent.
Originile noului limbaj de design Material își au rădăcinile în interfața asistentului Google Now, care a fost lansat acum aproape trei ani. Acesta a fost primul produs software Google care a folosit blocurile de conținut bine definite, așa-numitele Cards, culorile puternice și fonturile contrastante și lizibile. Pornind de la aceste idei de bază, Google a adăugat diverse alte elemente și le-a îmbinat în noua interfață grafică pe care Android o va folosi în anii care vor urma.
Android 5.0 urmează linia tendințelor de design actuale și oferă acum o interfață complet plată. Noul mediu grafic încearcă să imite hârtia, fiind astfel doar o extensie a conceptului original al cartonașelor din Google Now. Din această idee de bază au apărut apoi suprafețele plate ample cu fundal alb uniform, culorile puternice folosite pentru anumite componente ale interfeței, barele de încărcare subțiri și discrete, butoanele circulare simple și fonturile lizibile cu spațiere generoasă. [33]
Animațiile au fost și ele radical îmbunătățite, schimbările fiind vizibile indiferent dacă vorbim de deschiderea și închiderea App Drawer, de activarea unor butoane sau de deschiderea și închiderea aplicațiilor. La fel de simple și plate ca restul componentelor grafice, acestea folosesc diverse artificii de design interesante, cum ar fi derularea aplicațiilor din spatele Navigation Bar, extinderea App Drawer din cadrul butonului dedicat sau afișarea unor elemente circulare sau semicirculare la activarea unor butoane sau atingerea capetelor unor liste derulabile.
Noul mediu grafic este mai aerisit, mai ordonat și, în ciuda suprafețele ample viu colorate, nu este țipător sau deranjant.
Cea mai vizibilă actualizare, atât la propriu cât și la figurat, este noul Material Design. Noul Android 5.0 a primit un design care îl face mai proaspăt și mai atractiv și că acesta oferă o multitudine de noutăți tehnice precum ART sau suportul pentru arhitecturile pe 64 de biți care împing mai departe cel mai popular sistem de operare al momentului.
2.2 Tool-uri folosite
2.2.1 Android Studio
Android Studio este IDE-ul oficial pentru dezvoltarea de aplicații Android, fiind disponibil în versiuni pentru Windows, Mac și Linux. Android Studio e construit peste IntelliJ IDEA Java IDE și permite instalarea automată a tuturor instrumentelor necesare dezvoltării de aplicații Android. Android Studio are o interfață grafică pentru instalare din care se stabilesc setările de bază, se adaugă un emulator și câteva exemple de aplicații.
Prin Android Studio se poate vedea automat interfața aplicației pe diferite dimensiuni și rezoluții, chiar și în diferite limbi. O funcție mai avansată este Memory Monitor, introdusă pentru a oferi informații legate de ocuparea resurselor – un instrument de care dezvoltatorii Android ar trebui să țină seama mai des.
Android Studio se folosește de Gradle pentru generarea build-urilor de aplicații.
2.2.2 Gradle
Gradle este un sistem de build și management al proiectelor, scris în Java. Face parte din proiectele găzduite de Apache Software Foundation. Funcționalitățile sale principale sunt descrierea procesului de build a softului și descrierea dependențelor acestuia. Spre deosebire de Maven, care folosește un fișier XML pentru descrierea dependențelor acestuia sau ale module și componente de care depinde, ordinea în care se execută build-ul, directoarele și plug-in-urile necesare proiectului care urmează să fie construit, Gragle folosește limbajul Groovy. Acest sistem de construire automată a proiectelor descarcă dinamic bibliotecile Java si plug-in-uri necesare, din unul sau mai multe repository-uri, pentru a le include în proiect.
2.2.3 Android SDK
Android SDK reprezintă pachetul de componente software și unelte cu ajutorul cărora se pot dezvolta aplicații pentru dispozitive mobile ce rulează pe Android. SDK-ul de Android este compus dintr-o colecție modulară de pachete care pot fi descărcate separat prin intermediul componentei SDK manager.
2.2.4 Google APIs add-on
Google API add-on este o extensie a SDK-ului de Android ce oferă dezvoltatorilor posibilitatea de a integra în aplicațiile lor servicii oferite de Google.
In cadrul acestui add-on este inclusă o librărie pentru GoogleMaps și alte componente necesare accesării serviciilor oferite de Google.
Acest Add-on cuprinde și o imagine sistem cu librăriile necesare rulării, testării și depanării aplicațiilor cu ajutorul Emulatorului.
Pachetul Google APIs add-on cuprinde:
Librăria externă pentru GoogleMaps
Libraria USB Open Accessory (compatibila doar cu API Levels 10 și 12+)
Imagine sistem Android (cu diverse componente sistem integrate)
Aplicație demo în care e folosită librăria GoogleMaps denumită MapsDemo
Documentația aferentă librăriei pentru GoogleMaps.
CAPITOLUL III. UTILIZAREA APLICAȚIEI
3.1 Descrierea aplicației
Aplicația dezvoltată permite utilizatorilor divce-urilor pe sistemul de operare Android să primească și să vizualizeze fluxurile web de pe orice pagină din internet care pune la dispoziție un asemenea flux prin intermediul la RSS sau Atom. Produsul permite manipularea cu fluxurile utilizatorului: adăugarea și ștergerea acestora, precum și vizualizarea într-un mod cît mai simplu și ma clar a conținutului sursei web. Unele funcționalități sunt realizare în corespondență cu ideologiile material design. Printre acestea se numără utilizarea gestului de glisare din partea stîngă a ecranului pentru a deschide meniul de selectare a fluxurilor, glisare de la dreapta la stînga pe previzualizarea articolului pentru a deschide meniul de salvare a artiucolului cu posibilitatea de citire offline, glisare de la stînga la dreapta pe previzualizarea articolului salvat pentru al elimina din memoria dispozitivului. Un alt concept material design realizat este butonul permament din partea dreaptă-jos a ecranului. Conform material design, acestui buton i se atribuie o funcționalitate statică și de bază a aplicației – în cazul dat fiindui atribuit deschiderea ecranului de adăugare a unui flux web.
Adaugărea unui flux web are loc în două moduri. Prima modalitatea este adaugarea manuală a elementelor fluxuului: link-ul web, titlul și descrierea acestuia. O a doua posibilitate, apărută din necesitatea de a crea un soft comod de utilizate, este căutarea fluxului după cuvinte cheie. Aceste cuvinte pot fi introduse în cîmpul respectiv, iar apăsînd butonul de căutare aplicația va găsi cu ajutorul API-ului de la Google feeds în mod automat url-ul, titlul și descrierea sursei. La adăugarea fluxului, acesta deschis în mod automat de cître aplicație.
Aplicația pune la dispoziție utilizatorului mai multe moduri de consum a informație. Implicit, la alegerea articolului, se va deschide ecranul în care este afișată imaginea, titlu, data, categoriile și conținutul pentru citire. Utilizatorul are posibilitatea de a alege să vizualizeze conținutul în formatarea originală sau să deschide adresa corespunzătoare articolului, cu ajutorul navigatorului web. Un alt mod este citirea conținutului articolului în voce de către dispozitiv. Acesta se activează la apăsarea butonului de redare. Tot de aici utilizatorul poate salva articolul pentru citire offline, astfel acesta va fi disponibil și în lipsa conexiunii internet. Pentru formatarea standartă, aplicația pune la dispoziția customizarea mărimii fontului și spațiului între rînduri.
La fel, există posibilitatea de a împărtăși adresa articolului prin intermediul instrumentelor standarte a sistemului de operare Android. Astfel se poate face share pe rețelele de socializare, copierea în bufer, adaugarea la notițe sau transmiterea prin tehnologia bluetooth.
Deoarece informația pe internet poate fi în orice limbă, aplicația poate rapid detecta limba în care este scris articolul și îl poate traduce în una din cele 32 de limbi puse la dispoziția utilizatorului. Este implementată și funcționalitatea de a reveni imediat la limba și conținutul articolului original.
3.2 Scenarii de utilizare
La deschiderea aplicației noi instalate, utilizatorul nu are nici un flux. Aceasta va afișa mesajul corespunzător iar în meniul de selectare a fluxurilor i se va propune să adauge un flux.
Figura 3.2.1 Prima deschidere a aplicației
Figura 3.2.2 Meniul de selectare a fluxurilor în caz că nu există fluxuri
După apăsarea butonului din dreapta-jos sau după alegerea punctului de adăugare a unui flux se va deschide ecranul de adăugare. Aici utilizatorul poate manual introduce titlul, linkul și descrierea, dar poate să folosească și funcția de căutare în baza unor cuvinte. Să zicem că acesta dorește să caute fluxul web pentru site-ul unimedia.md. După introducerea cuvîntului cheie “unimedia” și apăsarea butonului de căutare, aplicația găsește toate datele aferente acestei pagini web.
Figura 3.2.3 Căutarea fluxului web pentru portalul unimedia.md
La apăsarea butonului de adăugare, sursa se adaugă în lista de fluxuri a utilizatorului și se deschide conținutul acestuia.
Figura 3.2.4 Conținutul fluxului portalului unimedia.md
Aplicația poate detecta iconița site-ului dacă acesta o pune la dispoziția. Aceasta va fi afișată lîngă denumirea site-ului în meniul de selectare a fluxurilor web. În caz că acesta nu are iconiță – va fi afișată iconița prestabilită. Pentru o orientare mai rapidă, aici la fel se afișează și descrierea paginii web stabilită de utilizator sau luată implicit în urma operației de căutare a flucului. Meniul de selectare a fluxurilor se deschide prin glisare din partea stîngă a ecranului spre dreapta.
Figura 3.2.5 Meniul de selectare a fluxurilor web
La selectarea unui articol, se va deschide versiunea deplină a acestuia. În prim plan este afișată imaginea de previzualizare titlul articolului, mai jos urmează titlul, categoriile din care acesta face parte și data publicării. Făcînd scroll în jos se va face vizualizat conținutul articolului. Tot de aici putem reda cu voce conținutul articolului. La apăsarea butonului de redare care se află în partea dreaptă-jos a imaginii de previzualizare textul va fi sintezat în voce, fiind redat de către despozitiv.
Figura 3.2.6 Selectarea articolului “Skype Translator este accesibil tuturor”
În meniul de context sunt ascunse acțiunile care pot fi făcute asupra unui articol: vizualizarea articolului în formatare originală, salvarea acestuia pentru citire în lipsa conexiunii internet, deschiderea în navigatorul prestabilit, împărțirea acestuia cu altă aplicație, traducerea lui în altă limbă și revenirea la limba originală în caz că acesta a fost tradus în altă limbă.
Figura 3.2.7 Meniul de context al articolului
Figura 3.2.8 Vizualizarea articolului în formatare originală
Figura 3.2.9 Selectarea limbii pentru a traduce articolul
Pe lîngă posibilitatea de salvare a articolului din meniul de context, acesta poate fi salvat și de pe ecranul principal printr-o simplă glisare de la dreapta la stînga pe previzualizarea acestuia. Astfel va apărea butonul de salvare.
Figura 3.2.10 Salvarea unui articol cu ajutorul gestului de glisare
Articolele salvate sunt păstrate în memoria dispozitivului pînă cînd utilizatorul nu le va șterge manual. Acestea pot fi șterse prin glisare de la stînga la dreapta. Adăugător, pentru conținutul salvat, este afișată și pagina web de unde acesta provine.
Figura 3.2.11 Ecranul cu articolele salvate pentru citire offline
Ecranul cu articolele salvate poate fi chemat din meniul de context al ecranului principal. Tot aici se poate de actualizat fluxul curent, ștergerea fluxului, adăugarea unui flux nou sau chemarea ecranului unde utilizatorul poate personaliza setările de formatare a conținutului articolului.
Figura 3.2.12 Meniul de context a ecranului principal
Pentru formatarea textului articolului, utilizatorul poate modifica mărimea fontului și spațiul între rînduri.
Figura 3.2.13 Ecranul de modificare a setărilor de vizualizare a conținutului articolelor
3.3 Ghid de instalare
Pentru instalarea aplicațiilor Android, Google a creat un serviciu special numit Google Play. Google Play este un magazin de aplicații pentru sistemul de operare Android, avînd opțiuni de căutare, instalare, dezinstalare sau actualizare a aplicațiilor. Acesta este disponibil pe internet sau prin aplicația Android instalată pe dispozitivele ce rulează acest sistem de operare. Toate aplicațiile noi din Google Play sunt supuse unui proces de moderare unde, în linii generale, se verifică calitatea lor, absența codului dăunător și corelarea posibilităților declarate cu cele pe care le are aplicația. Aplicația dezvoltată și descrisă mai sus a trecut etapa de moderare, de unde rezultă că ea se conformează ultimelor cerințe și reguli pentru crearea aplicațiilor care vor fi rulate pe sistemul de operare mobil de la Google și este disponibilă gratis în magazinul de aplicații Google Play. Aceasta poate fi descărcată pe dispozitivele ce rulează Android prin accesarea adresei https://play.google.com/store/apps/details?id=com.evision.myrssfeeds sau prin scanarea codului qr fin figura 3.3.1.
Figura 3.3.1 Codul qr pentru descărcarea aplicației din Google Play
CONCLUZII
În urma analizei datelor statistice putem deduce că în prezent este mai profitabil de a dezvolta o astfel de aplicație pe platformele mobile decît pe cele desktop din cauza creșterii numărului utilizatorilor device-urilor de tip smartphone sau tabletă.
La rîndul său, dintre platformele mobile observăm că numărul utilizatorilor Android este cu mult mai mare decît numărul utilizatorilor celorlalte platforme mobile. Pe lângă aceasta, multitudinea de instrumente și libertatea oferită de Google pentru dezvoltatorii de aplicații, precum și o promovare relativ mai ușoară a aplicațiilor pe magazinul Google Play, fac de a privi platforma de la Google ca cea mai avantajoasă platformă mobilă pentru dezvoltarea și promovarea unei aplicații.
Dezvoltarea aplicației a necesitat utilizarea multor cunoștințe practice și teoretice învățate în facultate, cum ar fi: protocoale de comunicații, marcarea datelor, programare și design orientate obiect, structuri de date sau baze de date, dar au fost necesare acumularea unor cunoștințe teoretice noi, cât și învățarea utilizării unor tehnologii noi.
Implementarea funcționalităților de redare a textului cu voce, traducerea textului și căutarea fluxurilor în baza cuvintelor cheie mi-a permis să studiez arhitectura RESTful pentru servicii web și să învăț să implementez un astfel de serviciu într-o aplicație pentru Android.
De asemenea, am învățat concepte importante de programare pe sistemul de operare Android. În primul rând, ideea de entry point sau clasa main sunt inexistente pe Android, unde serviciile și procesele lansate la execuția unei aplicații sunt definite într-un fișier de configurare. În al doilea rând, din punct de vedere al gândirii arhitecturale, programarea pe Android forțează utilizatorul să separe funcționalitățile aplicației după modelul arhitectural Model-View-Controller. Pentru respectarea acestui pattern, am folosit numeroasele clase oferite de sdk-ul Android care facilitează rularea paralelă a taskurilor și sincronizarea cu threadul principal.
Pe lîngă conceptele de programare, am acumulat abilități și cunoștințe în domeniul ce ține de designul aplicației. M-am condus de ultimile recomandări și de noul stilul de design de la Google – Material Design.
Stocarea datelor se face într-un mod canonic într-o bază de date Sqlite care asigură persistența datelor. În cazul meu, am folosit o astfel de bază de date pentru persistența articolelor salvate offline, similar cu păstrarea unor structuri de date.
Pentru a realiza cererile HTTP de la client către server, utilizate la descărcarea datelor fluxului web, a imaginilor, iconițelor sau fișierelor audio, am explorat versatilitatea clasei AsyncTask, prin care dezvoltatorului i se oferă toate mecanismele necesare sincronizării threadului apelant cu cel de background, precum și actualizarea datelor și a interfeței în momentul primirii răspunsului de la server.
Rezultatul final al lucrării s-a transpus într-o aplicație care îndeplinește obiectivul formulat inițial: crearea unui agregator a fluxurilor web în conformitate cu ultimele tendințe de design de la google, care să permită manipularea comodă cu fluxurile web și cu articolele acestora, sinteza conținutului articolelor în voce, traducerea acestora în alte limbi și salvarea lor pentru a avea acces la ele în lipsa conexiunii internet.
Desigur, fluxurile web nu sunt o tehnologie relativ nouă, de aceea deja există agregatoare pentru ele, inclusiv și pentru sistemul de oparare Android. Însă, spre deosebire de agregatoarele existente care doar afișează datele fluxului, agregatorul pe care l-am dezvoltat are implementate funcționalități unice pe care nu se întîlnesc în alte aplicații de acest gen, și anume: posibilitatea de citire a textului articolului cu voce de către dispozitiv, traducerea articolului în orice limbă dorește utilizatorul, precum și căutarea fluxurilor utilizînd Google feeds API.
În viitor, aplicația poate fi dezvoltată, pentru a permite diverse facilități noi. Se poate de implementat posibilitatea de a da utilizatorului o bandă de articole formate în baza cererilor și preferințelor acestuia, gruparea articolelor din mai multe fluxuri în dependență de categorii sau funcționalitatea de a recomanda utilizatorului să urmărească unele fluxuri web în baza fluxurilor pe care acesta le are adăugate la moment în aplicație.
O altă îmbunătățire care poate fi adusă aplicației este crearea unui sistem de conturi, pentru a păstra datele utilizatorilor ce țin de fluxurile web pe care le urmăresc pe un server. Astfel persoana, cu o simplă loggare în aplicație ar putea primi imediat toate fluxurile sale pe orice dispozitiv nou.
BIBLIOGRAFIE
Informatică și informația. http://lemill.net/content/webpages/informatica-si-informatie. accesat la 27 aprilie 2015
Informația. Clasificare și proprietăți. http://deea-dey.blogspot.com/2011/01/informatia-clasificare-si-proprietati.html. accesat la 27 aprilie 2015
Știrea. http://ro.wikipedia.org/wiki/%C8%98tire. accesat la 28 aprilie 2015
Facurile. http://ro.wikipedia.org/wiki/Factur%C4%83. accesat la 28 aprilie 2015
Prognoza meteorologică. http://ro.wikipedia.org/wiki/Prognoz%C4%83_meteorologic%C4%83. accesat la 28 aprilie 2015
Curs de schimb. http://ro.wikipedia.org/wiki/Curs_de_schimb. accesat la 28 aprilie 2015
Horoscop. http://ro.wikipedia.org/wiki/Horoscop. accesat la 28 aprilie 2015
Podcasting. http://ro.wikipedia.org/wiki/Podcasting. accesat la 28 aprilie 2015
Flux WEB. http://ro.wikipedia.org/wiki/Flux_web. accesat la 28 aprilie 2015
RSS. http://ro.wikipedia.org/wiki/RSS. accesat la 28 aprilie 2015
Atom. http://en.wikipedia.org/wiki/Atom_(standard). accesat la 28 aprilie 2015
Serviciile WEB. http://ro.wikipedia.org/wiki/Serviciu_web. accesat la 29 aprilie 2015
Servicii WEB bazate pe arhitectura REST. http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Servicii_web_bazate_pe_arhitectura_REST. accesat la 29 aprilie 2015
Introducere în XML. http://inf.ucv.ro/~mihaiug/courses/xml/IntroducereInXML.html. accesat la 29 aprilie 2015
Scurtă privire asupra sistemelor de operare mobile.
http://stiri-telefoane.mobilissimo.ro/statistici-platforme-mobile/scurta-privire-asupra-sistemelor-de-operare-pentru-telefoane-mobile-la-inceput-de-2013_15951.html. accesat la 29 aprilie 2015
Evoluția consumului pe mobil vs dektop.
http://www.incont.ro/media-si-publicitate/online-ul-romanesc-in-a-doua-saptamana-din-februarie.html. accesat la 30 aprilie 2015
Android – prezentare generală. http://ocw.cs.pub.ro/courses/pdsd/laboratoare/laborator01. accesat la 1 mai 2015
Android platform versions. https://developer.android.com/intl/ru/about/dashboards/index.html?utm_source=suzunone. accesat la 1 mai 2015
Android (sistem de operare). http://en.wikipedia.org/wiki/Android_%28operating_system%29. accesat la 3 mai 2015
SQLite. http://ro.wikipedia.org/wiki/SQLite. accesat la 30 aprilie 2015
Structura unei aplicații Android. http://ocw.cs.pub.ro/courses/pdsd/laboratoare/laborator02. accesat la 30 aprilie 2015
Android Action Bar. http://developer.android.com/intl/ru/guide/topics/ui/actionbar.html. accesat la 4 mai 2015
Android App Widget. https://developer.android.com/intl/ru/guide/topics/appwidgets/index.html. accesat la 4 mai 2015
Android Fragments. http://developer.android.com/intl/ru/guide/components/fragments.html. accesat la 7 mai 2015
Controale pentru colecții de date. http://ocw.cs.pub.ro/courses/pdsd/labs/05. accesat la 10 mai 2015
Serviciu Android. http://developer.android.com/intl/ru/reference/android/app/Service.html. accesat la 10 mai 2015
Content provider. http://developer.android.com/intl/ru/guide/topics/providers/content-providers.html. accesat la 12 mai 2015
Broadcast receiver. http://developer.android.com/intl/ru/reference/android/content/BroadcastReceiver.html. accesat la 12 mai 2015
Android Intent. http://developer.android.com/intl/ru/reference/android/content/Intent.html. accesat la 12 mai 2015
Android process. http://developer.android.com/intl/ru/reference/java/lang/Process.html. accesat la 17 mai 2015
AsyncTask. http://developer.android.com/intl/ru/reference/android/os/AsyncTask.html. accesat la 19 mai 2015
Loader. http://developer.android.com/intl/ru/reference/android/content/Loader.html. accesat la 19 mai 2015
Introduction to material design. http://www.google.com/design/spec/material-design/introduction.html. accesat la 20 mai 2015
BIBLIOGRAFIE
Informatică și informația. http://lemill.net/content/webpages/informatica-si-informatie. accesat la 27 aprilie 2015
Informația. Clasificare și proprietăți. http://deea-dey.blogspot.com/2011/01/informatia-clasificare-si-proprietati.html. accesat la 27 aprilie 2015
Știrea. http://ro.wikipedia.org/wiki/%C8%98tire. accesat la 28 aprilie 2015
Facurile. http://ro.wikipedia.org/wiki/Factur%C4%83. accesat la 28 aprilie 2015
Prognoza meteorologică. http://ro.wikipedia.org/wiki/Prognoz%C4%83_meteorologic%C4%83. accesat la 28 aprilie 2015
Curs de schimb. http://ro.wikipedia.org/wiki/Curs_de_schimb. accesat la 28 aprilie 2015
Horoscop. http://ro.wikipedia.org/wiki/Horoscop. accesat la 28 aprilie 2015
Podcasting. http://ro.wikipedia.org/wiki/Podcasting. accesat la 28 aprilie 2015
Flux WEB. http://ro.wikipedia.org/wiki/Flux_web. accesat la 28 aprilie 2015
RSS. http://ro.wikipedia.org/wiki/RSS. accesat la 28 aprilie 2015
Atom. http://en.wikipedia.org/wiki/Atom_(standard). accesat la 28 aprilie 2015
Serviciile WEB. http://ro.wikipedia.org/wiki/Serviciu_web. accesat la 29 aprilie 2015
Servicii WEB bazate pe arhitectura REST. http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Servicii_web_bazate_pe_arhitectura_REST. accesat la 29 aprilie 2015
Introducere în XML. http://inf.ucv.ro/~mihaiug/courses/xml/IntroducereInXML.html. accesat la 29 aprilie 2015
Scurtă privire asupra sistemelor de operare mobile.
http://stiri-telefoane.mobilissimo.ro/statistici-platforme-mobile/scurta-privire-asupra-sistemelor-de-operare-pentru-telefoane-mobile-la-inceput-de-2013_15951.html. accesat la 29 aprilie 2015
Evoluția consumului pe mobil vs dektop.
http://www.incont.ro/media-si-publicitate/online-ul-romanesc-in-a-doua-saptamana-din-februarie.html. accesat la 30 aprilie 2015
Android – prezentare generală. http://ocw.cs.pub.ro/courses/pdsd/laboratoare/laborator01. accesat la 1 mai 2015
Android platform versions. https://developer.android.com/intl/ru/about/dashboards/index.html?utm_source=suzunone. accesat la 1 mai 2015
Android (sistem de operare). http://en.wikipedia.org/wiki/Android_%28operating_system%29. accesat la 3 mai 2015
SQLite. http://ro.wikipedia.org/wiki/SQLite. accesat la 30 aprilie 2015
Structura unei aplicații Android. http://ocw.cs.pub.ro/courses/pdsd/laboratoare/laborator02. accesat la 30 aprilie 2015
Android Action Bar. http://developer.android.com/intl/ru/guide/topics/ui/actionbar.html. accesat la 4 mai 2015
Android App Widget. https://developer.android.com/intl/ru/guide/topics/appwidgets/index.html. accesat la 4 mai 2015
Android Fragments. http://developer.android.com/intl/ru/guide/components/fragments.html. accesat la 7 mai 2015
Controale pentru colecții de date. http://ocw.cs.pub.ro/courses/pdsd/labs/05. accesat la 10 mai 2015
Serviciu Android. http://developer.android.com/intl/ru/reference/android/app/Service.html. accesat la 10 mai 2015
Content provider. http://developer.android.com/intl/ru/guide/topics/providers/content-providers.html. accesat la 12 mai 2015
Broadcast receiver. http://developer.android.com/intl/ru/reference/android/content/BroadcastReceiver.html. accesat la 12 mai 2015
Android Intent. http://developer.android.com/intl/ru/reference/android/content/Intent.html. accesat la 12 mai 2015
Android process. http://developer.android.com/intl/ru/reference/java/lang/Process.html. accesat la 17 mai 2015
AsyncTask. http://developer.android.com/intl/ru/reference/android/os/AsyncTask.html. accesat la 19 mai 2015
Loader. http://developer.android.com/intl/ru/reference/android/content/Loader.html. accesat la 19 mai 2015
Introduction to material design. http://www.google.com/design/spec/material-design/introduction.html. accesat la 20 mai 2015
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Elaborarea Unui Agregator A Fluxurilor Web Pentru Android (ID: 149775)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
