Aplicatii pe Android

CUPRINS

LISTĂ DE FIGURI

Figura 2.1 – Architectura sistemului Android[14] 10

Figura 2.2 – Procesul de desfășurare a unei aplicații Android[15] 14

Figura 2.3 – Toate versiunile lansate de Android[16] 17

Figura 2.4 – Graficul versiunilor de Android și distribuția acestora pe piață[17] 18

Figura 2.5 – Ponderea sistemelor de operare în Europa[18] 20

Figura 2.6 – Evoluția sistemelor de operare mobile la nivel global în perioada 2009-2014[19] 20

Figura 3.1 – Logo-ul Android Studio[20] 22

Figura 3.2 – Inițierea procesului de instalare 26

Figura 3.3 – Importarea setărilor anterioare sau inițializarea lor într-un alt mod 26

Figura 3.4 – Alegerea modulului pentru care va fi creată aplicația 27

Figura 3.5 – Selectarea modului de instalare, standard sau personalizat 28

Figura 3.6 – Finalizarea procesului de instalare 28

Figura 3.7 – Selectare exemplu pentru a fi importat 29

Figura 3.8 – Exemplu cod importat 29

Figura 3.9 – Editor de traducere 30

Figura 4.1 – Densitatea spectrală de putere a semnalului vocal[13] 33

Figura 4.2 – Exemplu de aplitudine ridicată, medie și scăzută[22] 36

Figura 5.1 – Activarea opțiunii Unknown sources 40

Figura 5.2 – Procesul de instalare al aplicației 40

Figura 5.3 – Localizarea aplicației după instalare 41

Figura 5.4 – Interfața aplicației de redare a muzicii 42

Figura 5.5 – Bara ce conține butoanele de redare a unei melodii 43

Figura 5.6 – Bara de opțiuni 44

Figura 5.7 – Aplicația auto turn off activată 45

Figura 5.8 – Selectarea primei opțiuni a funcției auto turn off 46

Figura 5.9 – Selectarea opțiunii de închidere automată după 15 minute 46

Figura 5.10 – Selectarea opțiunii de auto-închidere la o oră prestabilită 47

Figura 5.11 – Butonul shuffle activat 48

Figura 5.12 – Butonul repeat activat pentru repetarea tuturor melodiilor din playlist 49

Figura 5.13 – Butonul repeat este activat pentru repetarea unei singure melodii 49

Figura 5.14 – Butonul repeat dezactivat 50

Figura 5.15 – Opțiunea prin care are loc crearea unei cozi de așteptare pentru redarea melodiilor 51

Figura 5.16 – Oprirea cozii de așteptare creată 51

Figura 5.17 – Opțiunea de ștergere a unei melodii din playlist sau memorie 52

Figura 5.18 – Activarea opțiunii Play next 53

Figura 5.19 – Butoane pentru o derulare mai ușoară în interiorul listei de redare 54

MOTIVAȚIE

Ținând cont de popularitatea sistemului de operare ANDROID, proiectat de Google, prezent pe o gamă largă de dispozitive existente pe piață în prezent, am încercat să proiectez și să realizez o aplicație de redare a sunetelor, principalul scop fiind implementarea unor funcții noi, pe lângă cele de bază, în vederea creșterii comfortului utilizatorului în utilizare și optimizarea consumului de energie și resurse al sistemului pe care rulează.

Totul a pornit de la dorința de a învăța cum se poate realiza o astfel de aplicație personalizată, dar și datorită faptului că aplicațiile deja existente nu au implementate funcții precum: „Programare pentru închidere după un număr definit de melodii”, „Închidere automată după o anumită perioadă de timp sau la o anumită oră” sau „Posibilitatea ștergerii unei melodii atât din playlist cât și din memoria sistemului”.Aceste funcții sunt menite să vină în ajutorul utilizatorului pentru o folosire cât mai ușoară, dar și pentru reducerea consumului de energie al terminalului pe care rulează aplicația.

Implementarea este axată pe limbajul de programare Java. Această alegerea a platformei reflectă direcția generală a industriei mobile dar nu numai a acesteia, unde se observă o creștere importantă a aplicațiilor realizate în limbaje de nivel înalt ca Java sau C/C++.

INTRODUCERE

După cum știm cu toții, sistemul de operare mobil dezvoltat Google pus la dispoziția noastră pe diferite terminale de către diverși producători de tablete și smartphone-uri, permite dezvoltatorilor să scrie cod în limbajul Javapentru realizarea de diferite aplicații.

Astfel domeniul dezvoltării de aplicații pe ANDROID este într-o continuă expansiune, în fiecare zi apare ceva nou, menit să satisfacă dorințele utilizatorilor. De aceea în realizarea acestei lucrări am pus accent pe implementarea unor funcții care să faciliteze utilizarea și să asigure optimizarea consumului de energie și resurse ale sistemului pe care rulează aplicația.

În primul capitol de noțiuni teoretice, capitolul cu numărul 2, am realizat o prezentare succindă a caracteristicilor sistemului de operare mobil Android, extinderea sa pe piața device-urilor care îl utilizează și o scurtă previziune în ceea ce privește expansiunea în raport cu principalii competitori.Capitolul 3 conține informații cu privire la mediul de dezvoltare creat de Google și anume, Android Studio. Sunt prezentate principalele funcții, modul de instalare și configurare, și de ce este preferat în schimbul mult mai cunoscutului Eclipse.

Capitolul 4 face referire la fundamentele ce stau la baza semnalul audio, conținând aspecte teoretice despre semnal, sunete și standardele existente. În capitolul 5 am realizat un scurt manual de utilizare pentru aplicația recent dezvoltată, în timp ce ultimul capitol prezintă concluziile la care am ajuns după finalizarea acestei lucrări.

SISTEMUL DE OPERARE ANDROID

Introducere

Dezvoltat inițial de Google și preluat ulterior de Open Handset Alliance, Android se definește ca fiind un sistem de operare pentru device-uri mobile și o platformă software ce permite dezvoltatorilor crearea de aplicații în limbajul Java, pe baza sprijinului provenit de la Google prin oferirea accesului la propriile biblioteci Java[1].

Android a fost lansat pe 5 noiembrie 2007 când a luat ființă Open Handset Alliance, acest grup fiind format din 48 de companii de hardware, software și telecomunicații, ce activează în domeniul dezvoltării de standarde și, mai nou, sisteme de operare pentru dispozitive mobile. Dar un lucru mai puțin cunoscut este faptul că nu Google a fost întreprinzătorul proiectului Android. Inițial sistemul de operare Android a fost creat de o companie mică din Silicon Valley cunoscută sub numele de Android.Inc, care a fost achiziționată de Google în iulie 2005[6]. Fondatorii Android.Inc, au venit de la diverse companii de tehnologie de Internet, cum ar fi , Communications Wildfire, T-Mobile și WebTV, iar Google i-a adus în echipa sa pentru a ajuta la crearea celui mai de succes sistem de operare mobil, Android.

Codul sursă ce stă la baza Android-ului a fost lansat de către Google sub licență Apache și începând cu 21 octombrie 2008, a devenit disponibil ca open source. Inițial, sub licența Apache codul sursă nu era disponibil în întregime gratuit, dar apoi Google a dat liber imaginației dezvoltatorilor punându-le la dispoziție gratis întreg codul sursă, aceștia având posibilitatea să adauge extensii proprietare, astfel crescând foarte repede numărul versiunilor personalizate de Android. Acest sistem de operare ce pune gratuit la dispoziția tuturor codul sursă sub licența Apache, încurajează și permite programatorilor să dezvolte tot mai multe aplicații prin care sporesc confortul utilizatorilor și cresc totodată inovația în ceea ce privește utilizarea acestor dispozitive mobile. Astfel, tot codul unei aplicații de acest gen se află într-o arhivă ’’.apk’’ ce este tratată ca un tot unitar și ulterior va fi instalată pe un dispozitiv cu Android.

Toată această deschidere permite inovarea din mai multe surse diferite. Acest lucru permite, de asemenea, pentru multe dispozitive Android să fie diferite prin forme și dimensiuni – lucru important pentru consumatori, deoarece oferă o mulțime de opțiuni – dar creează o problemă de compatibilitate pentru dezvoltatorii de aplicații. Totuși producătorii sunt liberi să modifice sistemul de operare Android cum cred ei de cuviință pentru dispozitivele lor, prin această modalitate reușind să adauge caracteristici unice și să diferențieze dispozitivele lor Android de dispozitivele concurenților. Dar acest rezultat, de asemenea, obligă la apariția de noi versiuni de Android rulând pe dispozitive diferite. Un exemplu în acest sens este producătorul de telefoane mobile HTC care a introdus propria interfață de utilizator HTC Sense în multe din telefoanele sale cu Android, în timp ce Samsung pune propriile sale TouchWiz, interfețe cu utilizatorul, în dispozitivele sale ce au ca sistem de operare Android.

Inevitabil Android a atras și critici cu privire la faptul că, deși se laudă că este un software open source, unele părți ale SDK-ului sunt proprietare și codul sursă închis, pentru ca platforma să fie în continuare controlată de Google, spun unii specialiști. În ciuda acestui fapt, totuși dezvoltatorii au posibilitatea să creeze aplicații noi, să le îmbunătățească pe cele existente sau să descopere și să fixeze bug-urile în versiunile noi lansate. Practic, SDK-ul Android-ului conține un set complet de instrumente de dezvoltare care, pentru a veni în sprijinul dezvoltatorilor, includ un program de depanare, un emulator, biblioteci,tutoriale plus documentația aferentă . Fiind cel mai utilizat sistem de operare mobil, deoarece îl regăsim pe terminale oferite de majoritatea producătorilor, Android oferă prin intermediul Android Market un număr foarte mare de aplicații pentru numărul mare de utilizatori dar și o sincronizare mai bună cu serviciile dedicate cum ar fi : Gmail, Google Maps sau Hangouts, oferite de Google.

Descriere

Android– un nume ce pare a fi desprins din science-fiction, s-a remarcat ca sistem de operare mobilce conține o multitudine de aplicații software ce sunt create pentru dispozitive mobile. Dezvoltat inițial de către cei de la Google și ulterior de Open Handset Alliance  – un grup ce conține în acest moment 84 de companii, de la operatori de telefonie mobilă și companii software, până la producători de dispozitive semiconductoare și producători de dispozitive mobile, Android întrunește toate caracteristicile unui sistem de operare ce este creat pentru device-uri mobile. Chiar dacă numele de Androideste o marcă înregistrată, este totuși un sistem open source, codul sursă fiind pus la dispozitie gratuit pentru oricine, în acest fel dezvoltatorii având posibilitatea de a creaaplicații software fără să plătească.

În ciuda faptului că acest sistem de operare pentru dispozitive mobile este o platformă deschisă, nu este dependent de un producător sau un furnizor. După cum se poate observa, deschiderea Android este menită să îi permită să câștige cotă de piață cât mai repede. Toți producătorii de componente hardware și furnizorii pot face și vinde dispozitive care utilizează drept sistem de operare Android. Codul open-source le permite producătorilor de telefoane să creeze interfețe personalizate de utilizator și să adauge caracteristici unice pentru propriile dispozitive. Acest lucru oferă tuturor dezvoltatorilor condiții de egalitate,oricine având posibilitatea de a accesa codul sursă Android.

La bază însă stau o serie de caracteristici, fără de care toate aceste aplicații ar fi nefolositoare pe unele device-uri.

Android dispune de următoarele caracteristici[5]:

Platforma este adaptabilă la configurații mari, VGA, biblioteci grafice 2D și 3D bazate pe specificația OpenGL ES 1.0 și configurații tradiționale.

Software-ul de baze de date SQLite este utilizat în scopul stocării datelor.

Android suportă tehnologii de conectivitate incluzând GSM/EDGE, CDMA, EV-DO, UMTS, Bluetooth si Wi-Fi.

Navigatorul de web disponibil în Android este bazat pe platforma de aplicații open source WebKit.

Software-ul scris în Java poate fi compilat în cod masină Dalvik și executat de mașina virtuală, care este o implementare specializată de mașină virtuală concepută pentru utilizarea în dispozitivele mobile.

Android acceptă următoarele formate media audio/video/imagine: MPEG-4, H.264, MP3,AAC, OGG, AMR, JPEG, PNG, GIF.

Android poate utiliza camere video/foto, touchscreen, GPS, accelerometru, și grafică accelerată 3D. Mediul de dezvoltare include un emulator deulator de dispozitive, unelte de depanare, profilare de memorie și de performanță, un plug-in pentru mediul de dezvoltare Eclipse.

Structura Android

Android dispune de o arhitectură software pe 4 niveluri, ce are la bază nucleul Linux cu mici modificări la care se adaugă bibliotecile cu mașina virtuală, cadru de dezvoltare și aplicațiile propriu zise.

Figura 2.1 – Architectura sistemului Android[14]

După cum se poate observa în Figura 2.1, structura Android-uluieste realizată pe 4 niveluri, enumerate în cele ce urmează :

Kernel-ul Linux- este nivelul de la bază și reprezintă un strat abstract între hardware și restul software-ului.

Bibliotecile software – reprezintă al doilea strat în arhitectura software a Android-ului , format din bibliotecile propriu zise și modulul “runtime”. Permite rularea tuturor proceselor în mașini virtuale independente pentru aplicațiile Java optimizate pentru o rulare eficientă pe dispozitivele mobile.

Cadru de dezvoltare (application framework) – este cel de-al treilea nivel și conține clasele de obiecte necesare dezvoltatorilor pentru crearea aplicațiilor.

Nivelul aplicație – reprezintă cel mai înalt nivel și conține aplicațiile ce vin instalate și livrate în același timp cu sistemul de operare.

Android utilizează nucleul Linux, dar după spusele celor de la Google, nu este un sistem de operare Linux, făcând dificilă reutilizarea aplicațiilor sau a bibliotecilor existente. El nu utilizează standarde stabilite Java, cum sunt Java SE sau ME, ceea ce nu permite compatibilitatea între aplicațiile Java scrise pentru acele platforme și cele scrise pentru platforma Android[7]. Astăzi, Android utilizează din kernel-ul Linuxce servește drept interfață între componentele hardware și nivelurile software superioare, doar serviciile de bază dintre care cele mai importante sunt cele referitoare la protocoale de rețea, sistemul hardware și elemente ce țin de managementul proceselor și al memoriei.

Față de sistemul de operare al principalilor competitori Apple și Microsoft, care ascund unele funcții pe care le accesează doar procesele de sistem, Google a oferit dezvoltatorilor acces la toate aceste funcții API, fără nici o restricție. După cum se știe, kitul software pentru Android este disponibil pentru toate sistemele de operare existente pe PC : Microsoft Windows, Mac OS X și Linux, și se poate descărca gratuit în versiunea dorită.

Structura unei aplicații Android

Structura unei aplicații Android este una destul de complexă, iar în cele ce urmează voi prezenta pe scurt din ce elemente este formată.

După ce proiectul este extins, lista de subfoldere include:

src

gen

versiuneade Android

assets

res

Dosarul sursă – cunoscut sub numele de dosarul src în proiecte Android – include fișierele sursă ale proiectului dvs. Pentru a inspecta conținutul folderului src, utilizatorul trebuie să îl extindă urmând acești pași: 1. Selectați folderul src, și faceți clic pe săgeata mică din stânga folderului pentru a il extinde. Veți vedea pachetul proiectului dvs. implicit. 2. Selectați pachetul, și extindeti-l, obținând fișierele Java sursă ale aplicației dumneavoastră.

Dosar ”res” conține diferitele resurse pe care o aplicația Android poate să le utilizeze. Trebuie externalizate întotdeauna orice resurse pe care aplicația are nevoie să o utilizeze. Exemple clasice de resurse includ șiruri de caractere și imagini. Ca un exemplu, ar trebui să se evite plasarea șirurilor de caractere în interiorul codului. După externalizare resursele pot fi accesate în cod prin ID-urile de resurse care sunt generate de ADT în clasa R[3]. Când se scrie cod Java în Android, va veni la un moment dat necesitatea de a face referire la elementele din dosarul res. Se poate face acest lucru prin utilizarea clasei R[12]. Fișierul R. java este un index la toate resursele definite în folderul “res”. Se poate folosi această clasă ca o modalitate de prescurtare a referențierii resurselor care au fost incluse în proiect. Acesta este o caracteristică utilă deoarece se poate identifica rapid prin cod resursa necesară.

Fișierul manifest Android ține evidența a tot ceea ce are nevoie aplicația să folosească pentru a rula. Fișierul manifest Android este stocat în rădăcina proiectului și este numit AndroidManifest.xml. Fiecare aplicație trebuie să aibă un fișier manifest Android în directorul rădăcină. Dosarul de candidatură manifest furnizează toate informațiile esențiale pentru sistemul Android, informații pe care acesta trebuie să le aibă înainte de a se putea rula orice cod al aplicației tale. Fișierul manifest al aplicației prevede, de asemenea, următoarele:

Numele pachetului Java al aplicației, care este unic identificator pentru aplicație în sistemul Android, precum și în Android Marketcomponente ale aplicației, cum ar fi servicii de activități și fundal;

Declararea de permisiuni pe care aplicația le necesită pentru a rula;

Nivelul minim al API Android de care aplicație are nevoie;

Fișierul manifest Android declară versiunea aplicației dezvoltată.

Interfață cu utilizatorul este parte a aplicației dezvoltate în cazul în care utilizatorii interacționează cu aplicația. Preocuparea este de a face acest domeniu cât mai vioi posibil din toate punctele de vedere. Pentru aceasta se definește un layout. Există opțiunea de a construi un layout bazat pe XML[11].

Vizualizarea în Android se face în blocuri de construcție de bază pentru componentele de interfață cu utilizatorul. O vizualizare ocupă un spațiu dreptunghiular de pe ecran și este responsabilă pentru desenarea si manipularea unui eveniment. Toate elementele care pot apărea pe ecranul unui dispozitiv sunt toate vizualizări. Clasa ”View” este superclasa pe care toate elementele o moștenesc de la Android.

Ciclul de viață al unei aplicații

Toate aplicațiile Android au un ciclu de viață. De asemenea este important de precizat faptul că în interiorul aplicațiilor găsim unele componentele caracterizate prin vizibilitate sau invizibilitate, cât și unele cu un caracter preponderent activ sau inactiv.

Orice aplicație are un ciclu de viață care în esență este format din trei stări :

Prima stare este aceea de a fi activă sau executată atunci când este focalizată pe acțiunile utilizatorului aflându-se în prim planul ecranului.

O altă stare ce poate fi exercitată asupra unei aplicații este reprezentată de posibilitatea de a fi întreruptă, păstrându-și vizibilitatea în raport cu utilizatorul. Deși această activitate este îndeplinită cu succes, un aspect ce nu trebuie neglijat este reprezentat de faptul că sistemul o poate opri în condițiile unei memorii pline.

Cea din urmă fază este cea de oprire, ce se activează în momentul în care o altă activitate suprasolicită aplicația. În aceste condiții informațiile de stare sunt menținute fără a fi vizibile utilizatorului, până în momentul în care aplicatia este oprită de sistem în vederea eliberării memoriei.

Diagrama din Figura 2.2 ne arată căile importante ale unei activități, reprezentând ciclul ei de viață:

Figura 2.2 – Procesul de desfășurare a unei aplicații Android[15]

Activitățile desfășurate în sistem sunt gestionate ca o stivă. Atunci când o nouă activitate este creată, acesta este plasată în partea de sus a stivei și devine activitatea de rulare. Activitatea anterioară de funcționare rămâne mereu sub ea în stivă și nu vine în prim-plan din nou, până nu iese noua activitate[2].

Există cinci niveluri în ierarhie și vor fi prezentate în ordinea importanței :

Unul dintre procesele importante pentru nevoile utilizatorului este cel de prim plan care trebuie să îndeplinească următoarele cerințe :

Pentru a fi executat, procesul trebuie să depindă de o acțiune întreprinsă de utilizator.

Conține un serviciu asociat cu activitatea desfășurată de utilizator.

Posedă un obiect de tip service ce stă la baza execuției unuia dintre Callbacks-uri.

Pentru executarea metodei de recepție este necesară existența unui obiect de tip BroadcastReceiver .

Rularea cât mai multor astfel de procese încarcă memoria device-ului și încetinește rularea. În aceste condiții, sistemul este nevoit să oprească funcționarea unora dintre ele pentru a păstra o interfață optimă cu utilizatorul și pentru a beneficia de o rulare fluidă.

Un alt proces este legat de vizibilitate, acesta afectând interfață cu utilizatorul deși permite absența unor componente din prim plan. Desigur și acest proces prezintă limite prin necesitatea îndeplinirii următoarelor condiții :

Asocierea unui serviciu propriu cu o activitate vizibilă.

Cuprinde o activitate vizibilă pentru utilizator deși aceasta nu se află în prim plan.

Necesitatea rulării proceselor în prim plan eclipsează procesele vizibile indiferent de importanța acestora.

Independent de procesele prezentate anterior se clasează procesul de servicii. Acest proces reprezintă un fundament al activităților pe care utilizatorul le întreprinde, motiv pentru care este păstrat de sistem, dar prezintă riscul de a fi eliminat în cazul unei memorii insuficiente în favoarea menținerii active celorlalte două tipuri de procese, și anume, de prim plan și vizibil.

Deținerea unei activitați care nu este vizibilă pentru utilizator stă la baza unui alt proces esențial, denumit proces de fundal. Ca și caracteristici, acesta nu influențează în mod direct interacțiunea utilizatorului cu interfața și poate fi oprit cu scopul conservării spațiului de memorie pentru un proces mai important, cum ar fi cel de prim plan, în orice moment. Când avem procese ce rulează în fundal în vederea asigurării unei ordini ce prevede ca un proces cu activitatea cea mai recentă să devină ultimul în clasamentul proceselor ce urmează a fi oprite, este necesar ca acestea să fie adăugate și menținute într-o listă ce cuprinde frecvența utilizării proceselor (LRU=Least Recently Used).

Cel din urmă proces este cel definit ca fiind un proces gol. Este procesul cu importanța cea mai redusă datorită faptului că el cuprinde componente cu caracter activ ale unei aplicații. Astfel singura utilitate a acestui proces este aceea de a asigura un timp de pornire cât mai scurt pentru rularea unei componente ce are nevoie de el, însa în majoritatea cazurilor, acestea sunt supuse procesului de oprire de către sistem în vederea menținerii resurselor la un nivel optim. În funcție de prioritatea acordată de Android proceselor, acestea se pot situa pe cel mai înalt nivel, ordinea fiind schimbată de fiecare dată când apare un proces nou. În condițiile în care dependența dintre procese este inevitabilă, un proces ce susține un alt proces nu poate fi poziționat sub cel susținut, determinând astfel o poziționare mai înaltă a acestuia în clasamentul proceselor.

Istoricul versiunilor Android

Platforma Android dispune de numeroase versiuni ce au apărut de-a lungul anilor, iar în încercarea de a ține pasul cu dezvoltarea acestui domeniu și cerintele consumatorilor, au venit cu îmbunătățiri și update-uri pe măsură.

Tabelul 1 prezintă istoricul versiunilor Android, denumirea comercială și data lansării.

Tabelul 1– Apariția fiecărei versiuni de Android

Dintre primele versiuni care au apărut, Froyo și Gingerbread sunt cele care au fost prezente pe primele device-uri cu Android, însă cele care au avut cel mai mare succes au fost Jelly Bean și KitKat. Totuși ultima versiune apărută, LolliPop, promite și speră că va avea mai mult succes decât versiunile anterioare, care încă sunt prezente pe majoritatea dispozitivelor mobile ce folosesc Android ca sistem de operare.

Totuși, de menționat este faptul că fiecare versiune, imediat după lansare a avut parte de un update, din cauza faptului că diversitatea modelelor terminalelor pe care este prezent acest sistem de operare, deseori a dus la incompatibilități și bug-uri, iar cei de la Google au încercat remedierea problemelor cu o nouă versiune, derivată din cea de bază.

Figura 2.3 – Toate versiunile lansate de Android[16]

Google aprezentat un raport cu datele de distribuție a sistemului de operare Android pentru luna aprilie 2015. Fără a surprinde, Lollipop a crescut foarte mult, ajungândla aproape 10% dintre telefoanele de pe piață. Graficul din Figura 2.4aratădisponibilitatea versiunilor de Android, și se poate observa că majoritatea terminalelor ce folosesc acest sistem pe operare încă folosesc o versiune mai veche cum ar fi Jelly Bean sau KitKat, dar versiunea cea mai recentă,crește încet și sigur, răspândindu-se tot mai mult, momentan fiind prezent doar pe 9% din device-uri !

Figura 2.4 – Graficul versiunilor de Android și distribuția acestora pe piață[17]

Extinderea tehnologică

În pofida faptului că piața producătorilor de telefonie mobilă este semnificativ marcată și de existența altor sisteme de operare, cum sunt cele dezvoltate de Apple și Microsoft, și anume, IOS și respectiv Windows, poziționarea sistemului de operare Android atât în topul preferințelor utilizatorilor, cât și înregistrarea celei mai mari frecvențe de utilizare de către dezvoltatorii de telefonie mobilă, certifică faptul că acest sistem de operare a contribuit la producerea unei adevărate evoluții în materie de tehnologie.

Android, fiind gratuit, orice producător l-a putut folosi în funcție de dorința și de target-ul device-ului, operând mici modificări pentru a-l personaliza, acest lucru ducând la o expansiune accelerată pe piața telefoanelor mobile ce utilizează acest sistem de operare. Acest lucru a condus la o lărgire a gamei de produse ce rulează cu acest sistem, oferind consumatorilor posibilitatea alegerii unui device ce se pliază propriilor nevoi și preferințe. Dar nu trebuie să neglijăm faptul că nu este disponibil doar pentru telefoane, el se poate regăsi tot mai des și pe terminale de genul : tablete, smartTV-uri sau ceasuri, acest lucru făcând ca numărul total al device-urilor cu Android să atingă un record greu de egalat de către principalii rivali. Astfel Google are toate motivele să se felicite după ce au achizitionat compania Android în 2005, astăzi bucurându-se de un succes răsunător.

Domeniul de dezvoltare

Sistemul de operare Android practic dominăaceastă piațăa sistemelor de operare mobile, continuând să câștige teren și să atragă tot mai mult în vreme ce principalii concurenți, IOS și Windows, scad ușor la capitolul market share, aratăun raport Kantar World Panel care prezintă sistemele de operare mobile. În acest raport descoperim că Android are o cotă de 73,9% pe continentul nostru, iar în SUA urcând până la 61,8%, în timp ce Apple se situează pe locul secund cu 15,4 procente, fiind urmat de Windows Phone cu doar 9,2%.

Această expansiune a Androidului este confirmată și de cătreRamon Llamas, Research Manager la IDC Mobile Phone team prin următoarea declarație :"O combinație între cererea utilizatorilor, portofolii proaspete și disponibilitatea device-urilor low-cost, mai ales pe Android, au făcut ca volumul să crească". Conform unui raport de actualitate realizat de Kantar, demonstrează cât de mult a recuperat IOS-ul celor de la Apple în bătălia cu Android pe piața europeană, de la începutul lui 2015, ajungând la 20,3%, având astfel o creștere de 1,8% în comparație cu anul precedent, iar acest lucru se datorează în mare măsură ultimelor modele de Iphone lansate, 6 și 6 plus. Totuși la nivel global, Android încă deține supremația, iar tendințele diferă în funcție de fiecare țară – dacăîn Germania și Anglia IOS a reușit să câștige teren important în cursa cu Android, în țări precum Spania sau Brazilia, Android-ul rămâne de neegalat.Cei de la Kantar menționează că tot mai mulți utilizatori de Android aleg IOS, lucru deloc surprinzator în condițiile în care celelalte sisteme de operare au cifre foarte mici în special în Europa.

Figura 2.5 – Ponderea sistemelor de operare în Europa[18]

Totuși, echilibrul încă persistă în rivalitatea dintre Android și IOS, chiar dacă cel din urmă a înregistrat un ușor progres în țări precum SUA și Japonia. Însă datorită verietății pe care mizează Android este greu de crezut că poate fi ajuns foarte ușor de către competitorii săi pentru moment.

Figura 2.6 – Evoluția sistemelor de operare mobile la nivel global în perioada 2009-2014[19]

Predicție pentru viitor

Dezvoltarea acestui domeniu este una accelerată, fiecare producător luptând pentru a atrage de partea sa tot mai mulți utilizatori prin realizarea unor device-uri care să satisfacă dorințele tuturor. Totuși pentru următorii ani previziunile făcute de analiștii din acest domeniu nu sunt tocmai îmbucurătoare. Deși Android iși va păstra poziția de lider în topul sistemelor de operare mobile, va îregistra un ușor regres în ceea ce privește expansiunea pe piața device-urilor mobile, acest lucru datorându-se cel mai probabil saturării pieței.

ANDROID STUDIO – IDE

Descriere

Android Studio este un mediu de dezvoltare integrat (IDE) pentru realizarea aplicațiilor Android. Lansarea a fost anunțată de către managererul de producție al celor de la Google, Katherine Chou într-o conferință organizata pe 16 mai 2013.

Totul a început cu o primă versiune 0.1 în mai 2013, apoi în luna iunie a aceluiași an a fost lansată prima versiune beta, 0.8. Însă prima versiune cu adevărat stabilă a fost lansată în decembrie 2014, fiind disponibilă gratuit sub licență Apache 2.0. Bazat pe software-ul JetBrains, Android studio a fost conceput special pentru dezvoltatorii de aplicațiiAndroid. Este disponibil pentru toate sistemele de operare importante ce ruleaza pe PC : Windows, Mac OS X și Linux, înlocuind platforma Eclipse, care a fost până acum principalul mediu de dezvoltare al aplicațiilor Android.

Figura 3.1 – Logo-ul Android Studio[20]

Principalele caracteristici[21] sunt enumerate în continuare. Se așteaptă ca pe viitor aceste caracteristici să fie îmbunătățite la fiecare versiune de Android Studio lansată. Caracteristicile de mai jos sunt specifice versiunii curente :

Live Layout – Codificare și redare a aplicațiilor în timp real.

Gradle- Se bazează pe construirea suportului.

Android- Refactorizare specifică și fixare rapidă.

Oferă suport pentru creare aplicațiilor Android pentru ceasuri.

Instrumente Lint – Sunt utilizate pentru creșterea performanței, utilizării, compatibilității versiunilor.

Capabilitatea semnării aplicațiilor.

Template – Instrucțiuni de bază pentru crearea unui aspect comun pentru Android și componentele sale.

Crearea unui support pentru platforma Google Cloud, permițând integrarea cu Google Cloud Messaging și App Engine.

Un editor îmbogățit ce permite utilizatorilor să aranjeze mult mai ușor compomentele aplicației, opțiunea de a previzualiza spațiul de lucru în același timp pe mai multe ecrane în configurații diferite.

Prin lansarea acestei platforme de dezvoltare, Google încearcă să atragă de partea sa din ce în ce mai mulți parteneri și programatori pentru a reuși să facă față noilor standarde și cerințe venite din partea consumatorilor.

Mediu de dezvoltare dedicat

Putem spune că viața unui dezvoltator de aplicații Android a fost întotdeauna destul de simplă. Totul începe prin descărcarea platformei Eclipse și instalând adițional un kit ajutător Android Developer Tools. Aceste instrumente s-au dovedit a fi foarte utile, funcționau destul de bine, în functie de așteptările pe care le avea fiecare dezvoltator. Însă Google s-a gândit să vină în ajutorul lor cu un mediu de dezvoltare a aplicațiilor dedicat, si așa a apărut Android Studio, software-ul venind direct de pe propriile servere, majoritatea programatorilor de Java recunoscând imediat asemănările și funcțiile ce provin de la platforma de dezvoltare JetBrains care stă la baza lui Android Studio.

Cei de la Google știu că Eclipse nu este tocmai un mediu de dezvoltare plăcut și agreat de programatori, astfel au distribuit gratis noua platformă de dezvoltare pentru aplicații, un mediu ce este ușor de instalat și folosit. Android Studio a fost construit având la bază instrumentele folosite de IntelliJ, acesta fiind primul mediu de dezvoltare integrat (IDE=Integrated Development Environment) pentru Java, Groovy dar și alte limbaje de programare cum ar fi Scala sau Clojure, creând astfel un amestec de produse de analiză și aspect ce au dus la o îmbunătățire vizibilă. Majoritatea utilizatorilor de IntelliJ aduc doar laude ce fac referire la aspectul curat și aerisit, și editorul bine calibrat, iar Android Studio confirmă acest lucru, având o funcționare ușoară ce oferă o interfață intuitivă, spre deosebire de editor care nu este realizat la același nivel. În modul de depanare se observă o încetinire a procesului de rulare și se oprește uneori când folosim mașina virtuală. De altfel IDE oferă un set bogat de instrumente de analiză care vin în ajutorul programatorilor pentru completarea propriului cod sursă, dar Android Studio se folosește de API-ul de la Android în încercarea de a găsi eventuale erori în cazul în care programatorul uită de unele excepții. Acesta dispune și de numeroase moduri de a face codul să fie mult mai aerisit și mai rapid totodată, iar acest lucru este posibil și datorită celor de la IntelliJ care au muncit mult pentru a realiza un cod ce este capabil să analizeze și să sintetizeze codul scris de dezvoltatorii de aplicații.

Android Studio nu a fost creat pentru a fi un rival lui Eclipse deoarece a fost construit într-un mod diferit, arată diferit, se utilizează oarecum diferit și se adresează unui singur domeniu, acela al dezvoltatorilor de aplicații pe Android, întrucât se bazează pe Java ca limbaj de programare spre deosebire de Eclipse care oferă posibilitatea programării în diferite limbaje, lucru care îi scade foarte mult viteza de lucru. Când a fost construit s-a vrut a fi simplu, rapid și ușor de utilizat și a reușit datorită platformei diferite pe care a fost creat spre deosebire de Eclipse, care avea o rulare greoaie și o interfață mult prea complexă pentru cerințele dezvoltatorilor.

Grandle este un instrument automat de proiect care a înlocuit Apache Ant în Android Studio ca sistem primar pentru a construi aplicații Android. Instrumentul a fost înlocuit de Grandle, deoarece avea destule limitări, îngreunând procesul de dezvoltare, în special în momentul când doreai să actualizezi proiectul creat, fiind nevoie de noi modificări pentru a funcționa din nou la parametri normali. Grandle a câștigat imediat popularitate în rândul dezvoltatorilor de Android deoarece contribuie la împărțirea aplicației în diferite forme, semnarea cu configurația corectă, incrementarea numerelor construite, definirea dependențelor externe.Astfel, a devenit un fel de instrument de administrare cu ajutorul căruia se definesc și se mențin setările specifice fiecărui proiect. Grandle este deasemenea principalul motiv pentru care a crescut numărul testelor automatizate care a condusla o integrare mai ușoară a proceselor pentru sistemul de operare mobil Android.

Spre deosebire de Eclipse la care tot timpul apăreau probleme, în Android Studio pot fi create layout-uri observând modificările în timp real, ele putând fi vizualizate pe ecrane diferite.Android Studio utilizează ca instrument implicit – Lint, astfel se pot opera modificări asupra fișierului Grandle ce include Lint când se lansează APK-ul, însă dacă acesta primește avertizări sau găsește erori, oprește automat lansarea procesului. Practic, prin acest mod obligă programatorii să folosească un program de dezvoltare corect și bun pentru a fi utilizat fără probleme, astfel pot fi indicate fișierele privind resursele neutilizate, greșeli sau utilizări nepermise în fișierul manifest.

Cel mai important nivel în dezvoltarea unei aplicații este reprezentat de nivelul de testare pentru evitarea bug-urilor. În Android Studio, unitatea de testare poate fi definită într-o clasă separată fiind lansată când aplicația este terminată, în cazul unei erori depistând ușor problema, ce poate fi remediată, înainte de a avea loc în producție acest eveniment nedorit.Viteza și ușurința în utilizare este principala caracteristică a acestei platforme de dezvoltare. Este extrem de rapidă când vine vorba de compilarea unui proiect nou, fie el și de dimensiune mare, având nevoie de mai puțin de 1 minut. Această caracteristică constituie principalul avantaj într-o eventuală luptă cu alți competitori.

După ce problema mediului de dezvoltare intregrat a fost în mare parte rezolvată prin apariția lui Android Studio, atenția a fost îndreptată către o altă problemă de care se plâng dezvoltatorii de aplicații Android și anume limbajul de programare. Pentru crearea acestor aplicații se folosește Java 6 sau 7, însă eu cred că nu este chiar cel mai potrivit, de aceea Android nu este la fel de fluid ca alte sisteme de operare mobile, iar cel mai elocvent exemplu este reprezentat de IOS-ul celor de la Apple care folosește Swift, aceasta fiind un mix de limbaje de genul Python sau C#. Aplicațiile pentru Android sunt dezvoltate într-un timp mult mai mare față de cele pentru IOS și sunt mult mai lente în comparație cu cele create de principalul rival de pe piață și totul se datorează în mare parte limbajului de programare. Cum cei de la Apple au reușit, și cei de la Google trebuie să reușeașcă dacă vor să ajungă la același nivel, renunțând la principalul limbaj de programare și să se reorienteze către un alt limbaj sau o combinație de limbaje ce pot îmbunătăți consumul de resurse și crescând fluiditatea în utilizare.Exemple de astfel de limbaje sunt multe, mai ales că unele au o sintaxă similară cu Java, cum ar fi Groovy sau Scala, deci posibilități pentru depășirea acestui impediment sunt, totuși nu stim dacă cei de la Google sunt încântați de această idee și cât de dispuși sunt pentru o schimbare destul de mare în privința acestui aspect.

În concluzie, putem spune că în aproximativ un an, Eclipse și-a pierdut poziția de lider ca principal mediu de dezvoltare al aplicațiilor Android, și încet, încet va dispărea de tot din acest domeniu, întrucât Android Studio a acaparat această piață având tot mai mulți admiratori, iar utilizatorii sunt multumiți de serviciile oferite, ceea ce îi va garanta succesul pe viitor.

Instalare și configurare

Instalarea și configurarea se realizează pas cu pas, verificând dacă sunt îndeplinite cerințele sistemului cum ar fi kitul de dezvoltare Java (JDK) și memoria RAM disponibilă, pentru ca operațiunea să fie dusăpână la capăt cu succes, iar opțional se poate instala un emulator Intel® HAXM. La fel se va proceda și în cazul instalării unei actualizări pentru îmbunătățirea și optimizarea procesului de dezvoltare cu ajutorul unei mașini virtuale.

Figura 3.2 – Inițierea procesului de instalare

Prima dată când se deschide platforma Android Studio de dezvoltare a aplicațiilor pentru device-uri cu sistemul de operare Android, vom avea de ales între două opțiuni și anume, avem posibilitatea să importăm setările existente dacă a mai fost instalat sau varianta a doua prin care spunem că nu există setari de la o instalare mai veche și vom dori să facem acum aceste setări.

Figura 3.3 – Importarea setărilor anterioare sau inițializarea lor într-un alt mod

Android Studio este un mediu de dezvoltare ce sprijină template-urile pentru serviciile oferite de Google, în același timp mărind aria de device-uri disponibile ce utilizează sistemul de operare Android. În acest sens, platforma vine în ajutor cu noi template-uri și proiecte pentru a putea dezvolta cât mai ușor aplicații și pentru TV sau ceasuri, nu doar pentru telefoane mobile și tablete.

În timpul creării aplicației, avem posibilitatea alegerii versiunii SDK care se potrivește cel mai bine proiectului nostru prin selectarea modulului de API-ul corespunzător. Pe lângă aplicațiile ce sunt create pentru device-urile clasice ca telefoane mobile sau tablete, avem posibilitatea de a dezvolta aplicații pentru TV sau ceasuri, iar mai nou dispune si de crearea unui modul de cloud(stocare fișiere).Acest lucru poate fi realizat ușor selectând File > New Module > App Engine Java Servlet Module, nume client, pachetul SDK și modulul corespunător.

Figura 3.4 – Alegerea modulului pentru care va fi creată aplicația

Figura 3.5 – Selectarea modului de instalare, standard sau personalizat

Când s-a ajuns la ultima pagină din cadrul procesului de instalare va trebui să acceptăm termenii și condițiile prezentateși săfacem click pe butonul Finish pentru încheierea acestui proces.

Figura 3.6 – Finalizarea procesului de instalare

Android Studio permite deasemenea foarte simplu și ușor importarea codului GitHub, acestă opțiune se accesează din meniul File al platformei. Se poate observa acest lucru în Figura 3.7 și Figura 3.8 .

Figura 3.7 – Selectare exemplu pentru a fi importat

Figura 3.8 – Exemplu cod importat

Un ultim instrument ce a fost îmbunătățit și el cu un plugin de traducere este suportul lingvistic care poate fi adăugat ușor în aplicația locală pentru efectuarea traducerilor, acest proces fiind semnalizat prin diverse culori dacă traducerea este completă sau nu. De asemenea astfel de traduceri se pot efectua și cu un plugin de traducere, prin deschiderea fișierului string.xml ce conține textul care trebuie tradus, în editorul de traducere[8].

Figura 3.9 – Editor de traducere

Eclipse sau Android Studio

Google încearcă să țină totul sub controlul său atunci când vine vorba de Android și evoluțiile aferente, Google renunțândla Eclipse și solicită dezvoltatorilor să facătrecerea la Android Studio.

Eclipse, este un mediu de dezvoltare integrat (IDE) și este, în general, un instrument folosit în dezvoltarea Java sau a aplicațiilor Android. Are de fapt un spațiu de lucru de bază unde se poate integra plug-in-ul necesar pentru modificarea mediului de dezvoltare. Acesta suportă, de asemenea, și alte limbaje de programare, cum ar fi Ada, ABAP, Clojure, COBOL, C, C ++, Erlang, Fortran, Groovy, Haskell, JavaScript, Lua, Lasso, Natural, PHP, Perl, Python, Prolog, R, Ruby, Scala și Scheme. Eclipse este un software open source care poate fi utilizat gratuit, pentru a construi aplicații Android. Eclipse IDE folosește un plug-in special pentru dezvoltare Android(ADT), ce oferă dezvoltatorilor libertatea de a alege și seta un nou proiect Android și, de asemenea, pentru a edita și analiza erorile (depanare). Ca Eclipse IDE, acest ADT este, de asemenea un plug-in open sourcecare poate fi descărcat și folosit gratis. Pentru o perioadă de timp Eclipse ADT a fost un kit oficial pentru dezvoltarea de proiecte Android până la lansarea de către Google a propriei platforme de dezvoltare, Android Studio.

În mai 2013, Google a anunțat lansarea propriului mediu de dezvoltare integrat "Android Studio". De atunci, kitul a fost restructurat de multe ori și încăse află în procesul de îmbunătățire a caracteristicilor sale de a crește performanța. Google a anunțat aceast instrument ca fiind oficial pentru dezvoltarea de aplicații Android. De asemenea, ei au recomandat fiecărui dezvoltator să migreze propriile proiecte de la Eclipse la Android Studio în scopul de a obține beneficiile celei mai recente ale actualizării IDE. Ca și pentru Chrome, Google a oferit mai multe versiuni pentru Android Studio – Stabil, Beta, Dev, și Canary. Cu această facilitate, dezvoltatorul poate vedea cu ușurință viitorul actualizărilor de dezvoltare Android Studio.

După anunțul Google, mulți dezvoltatori au planificat să își mute proiectele Android pe platforma Android Studio. Aici sunt unele lucruri care vor trebui luate în considerare înainte de a migra de la Eclipse la Android Studio. În continuare voi prezenta câteva dintre aceste aspecte :

Se renunță la utilizarea spațiului de lucru și a subproiectelor Eclipse IDE. Eclipse respectă întreaga componență și bibliotecile în formarea fișierelor .jar care vor fi incluse în fișiere APK finale, dar Android Studio a transformat totul în module ușor de prelucrat.

Modulele au o funcție discretă, pot fi ușor rulate, editate și utilizate în scopul reparării erorilor individuale. Fiecare va avea propriul său fișier Gradle care la rândul său, va dispune de detaliile corespunzătoare.

Android Studio, de asemenea, trebuie să aibă fișiere JAR. La fel ca Eclipse, fișierul .jar trebuie să fie legat de biblioteci, dar prin intermediul modulelor.

Android studio vă ajută să creați intrările Gradle necesare. Dependențele modulului sunt la fel ca cele de la Eclipse, adică fiecare modul poate fi asociat sau legat cu alte module.

Principala caracteristică avantajoasă a Android Studio este perspectiva designului în ceea ce privește interfața, deoarece dispune de opțiunile drag and drop ce vin în sprijinul dezvoltatorilor pentru personalizarea aplicației.

După cele enunțate putem trage mai multe concluzii. Prima ar fi faptul că este prima platformă dedicată pentru dezvoltarea de aplicații Android, astfel munca dezvoltatorilor va fi cu mult ușurată. În al doilea rând remarcăm dorința celor de la Google care încearcă să pună la dispoziția clienților cât mai multe servicii și aplicații proprii. Și nu în ultimul rând nu trebuie uitat faptul că era de dominație a lui Eclipse este pe cale să apună în ce privește dezvoltarea aplicațiilor Android, locul fiind ocupat în acest moment de Android Studio, o platformă creată special pentru dezvoltatorii de Android.

FUNDAMENTE TEORETICE ALE SEMNALULUI AUDIO

Semnalul

Se numește semnal o mărime fizică măsurabilă, purtătoare de informație, care poate fi transmisă la distanță, recepționată și/sau prelucrată. Considerăm semnale audio acele semnale care sunt percepute de aparatul auditiv uman, adică au spectrul în intervalul 10-25 kHz, fiind considerate semnale de audiofrecvență[9].

Semnalul audio este de două tipuri : vocal și muzical. Semnalul vocal utilizează un spectru extins care poate ajunge de la 20 Hz până la 10 kHZ. În eșantionarea unui astfel de semnal adesea se folosește transformata Fourier rapidă (FFT) pentru obținerea unor curbe ale densității spectrale. Acest lucru poate fi observat în Figura 4.1, de unde se poate constata că intervalul unde este concentrată energia cea mai mare este destul de mic, având valori între 300 Hz și 2000 Hz. Între aceste valori se încadrează și semnalul provenit din vorbire cunoscut drept semnal telefonic.

Spre deosebire de semnalul vocal, semnalul muzical are un spectru diferit, iar pentru transmiterea unui semnal satisfăcător se utilizează o bandă de 50-100 Hz. Acest tip se semnal se mai numește și semnal radiofonic.

Figura 4.1 – Densitatea spectrală de putere a semnalului vocal[13]

După cum știm cu toții, sunetul este reprezentat de variația presiunii aerului și este dificilă realizarea unei măsurători asupra constantei, de aceea se apelează la utilizarea reprezentărilor relative în acest scop. Astfel senzația percepută de aparatul auditiv uman la producerea unui sunet o numim intensitate auditivă care este dependentă de frecvență și diferă de intensitatea sonoră care este proporțională cu pătratul presiunii acelui sunet. Nivelul minim la care urechea omului încă reușește să perceapă sunetele poartă numele de prag de audibilitate, valoarea sa variind în funcție de frecvență și persoană[10].

Cu ajutorul formulei (3.1) se poate calcula relativ tăria auditivă (T), care reprezintă pragul de audibilitate :

T(dB) = (4.1)

Deoarece pragul de audibilitate variază, tăria auditivă va fi exprimată în decibeli (dB), astfel la un prag de 1000 Hz, valoarea tăriei auditive va fi zero și va crește logaritmic față de valoarea pragului de audiție. În vorbire, tăria auditivă va atinge o valoare în jur de 80 dB în timp ce în muzică valoarea acesteia crește până la 120 dB.

Sunetul

Fenomenul fizic care acționează și stimulează organul auditiv prin transmiterea undelor acustice produse de diverse corpuri, se numește sunet.Aceste sunete pot fi plăcute, exemplul sunetelor produse de intrumentele muzicale și neplăcute, produse de utilajele de pe șantier, pe care le numim zgomote. La oameni, urechea percepe auzul când vibrațiile aerului au frecvențe cuprinse în intervalul 20 Hz – 20 kHz.

Unitatea de măsură a frecvenței este herț-ul și este prescurtat Hz, o unitate măsurând frecvența echivalentă cu un ciclu pe secundă. Astfel, vibrațiile ce sunt percepute de urechea umană nu sunt nimic altceva decât vibrații aeriene, dar mai nou, marii cercetători încearcă să extindă acest termen incluzând același tip de unde, dar în medii diferite cum este cel solid sau lichid, având o compoziție diferită față de cea a aerului. Tot aici amintim și de ultrasunete, care sunt acele sunete ce depășesc frecvența maximă ce este percepută de auzul uman și anume 20 kHz.

Fizica este o știința a naturii care se ocupă cu studierea materiei și proprietățile ei. Pentru o îndelungată perioadă de timp, fizica a dedicat un capitol întreg studierii fenomenelor legate de simțul auzului.La fel ca fizica, acustica este o știință care studiază propagarea și recepționarea energiei acustice. Termenul provine din limba greacă, de la cuvântul ’’ akoustikos” a cărui semnificație este legată de unul din cele 5 simțuri ale omului, auzul. Auzul omului este inundat de un val de sunete ce provin de la o mulțime de surse sonore.

Orice corp care produce unul sau mai multe sunete se numește sursă sonoră. Acestea produc vibrații ale mediului și provin din diferite surse. Chiar și marea sau lacul poate reprezenta o sursă de zgomot, dar la o frecvență destul de scăzută în comparație cu alte surse cum este de exemplu zgomotul din oraș produs de motoarele mașinilor sau alte utilaje.

Caracteristicile fizice ale sunetului

Oricărui sunet îi corespund trei caracteristici fizice prin care poate fi descris : frecvența, amplitudineași intensitatea.

Numărul de oscilații sau cicluri dat de o undă de sunet într-o unitate de timp se numește frecvență. Frecvența este percepută de auzul uman ca un mix de sunete mai joase sau mai înalte. Conform teoremei Nyquist–Shannon[4], un semnal pentru a fi reprodus corect trebuie eșantionat cu o frecvență dublă față de frecvența maximă a semnalului, numită frecvență Nyquist. Astfel pentru a reproduce un semnal audio ce poate fi perceput de auzul uman, frecvența de eșantionare va trebui să aibă o valoare de minim 40 kHz. Frecvențele de eșantionare cel mai des utilizate sunt prezentate în Tabelul 2.

Tabelul 2 – Frecvențe de eșantionare uzuale

Amplitudinea reprezintă caracteristica undelor ce este percepută ca volum. Amplitudinea este distanța maximă pe care o parcurge unda sonoră din punctul inițial. Acestei distanțe a undei îi corespund gradele de mișcare a moleculelor din aer, grade ce cresc și care lovesc cu o forță proporțional mai mare timpanul, astfel urechea având o percepție ridicatăasupra sunetelor mai tari ca și intensitate.

Pentru o undă sonoră, amplitudinea poate fi scoasă în evidență prin calcularea distanței de dispersie ce are loc în moleculele din aer. De aceea pentru un sunet, la aceeași frecvență, putem avea amplitudine ridicată, medie sau joasă. Totuși în această situație volumul sunetului este influențat de schimbarea aplitudinii, astfel avem un sunet identic dar perceput diferit datorită volumului ce se modifică de fiecare dată când este modificată și amplitudinea.

Figura 4.2 – Exemplu de aplitudine ridicată, medie și scăzută[22]

Intensitatea suntetului este reprezentatăde acea senzație care este produsă asupra auzului uman de către amplitudinea unei vibrații a sunetului. Intensitatea se măsoară în decibeli(dB) și are valoarea zero la pragul de jos al auzului. Amplitudinea vibrațiilor este direct proporțională cu intensitatea sunetului rezultat, astfel cu cât există o amplitudine la un nivel ridicat, crește și intensitatea cu același număr de unități ce sunt măsurate în decibeli. Intensitatea unui sunet este scalată logaritmic, practic unei creșteri cu 10 db îi corespunde o intensitate mărită de 10 ori.

Standarde de comprimare a semnalului audio

Standardul MPEG-1

Elaborat în anul 1992 de către ISO și IEC, MPEG-2 se definește ca fiind un standard de comprimare a semnalelor audio și video. În vederea comprimării semnalului audio, MPEG-1 folosește ca bază unele caracteristici pe care le găsim la aparatul auditiv al omului. În acest sens principalele proprietăți de care dispune urechea umană sunt reprezentate de caracterul neliniar și pragul adaptiv de audiție. Prezentând un caracter variabil atât în funcție de tipul persoanei cât și în funcție de frecvență, nivelul acestui prag este variabil. Sub nivelul acestui prag, sunetele nu mai sunt percepute de către aparatul auditiv al omului, în majoritatea cazurilor acest nivel fiind situat între 2 și 5 KHz. Ca un sunet să fie perceput de urechea umană, trebuie să se încadreze în limitele pragului de audiție sau să se situeze peste acest prag ce diferă de la o persoană la alta.

Datorită caracterului adaptiv, pragul de audiție se află într-o continuă schimbare în raport cu sunetele percepute, însă unele din aceste sunete nu pot fi recunoscute și le numim sunete ’’mascate’’. Deși are un efect general, muzica este prinipalul domeniu afectat deoarece într-o orchestră un instrument poate să acopere sunetul produs de un alt instrument. Totuși, instrumentele ce sunt mascate vor fi înregistrate pe discurile CD audio întrucât acestea au o înregistrare liniară, dar pentru a obține o calitate audio ridicată este indicat să se înregistreze doar sunete percepute de urechea umană, utilizând un volum de date mai mic într-un mod mult mai eficient.

Frecvențele de eșantionare ce pot fi utilizate de cele trei moduri sunt 32 KHz, 44,1 KHz sau 48 KHz, iar cerințele aplicațiilor reprezintă un criteriu important în ceea ce privește utilizarea acestor moduri. Obiectivul fiecărui mod este acela de a contribui la obținerea unui nivel de eficiență ridicat în ceea ce privesc valorile ce pot fi atribuite ratei de compresie.

Standardul MPEG-1 prevede trei tipuri de moduri, și anume, Layer 1, Layer 2 și Layer 3 ce ajută la obținerea unui sunet la calitate ridicată. Cele trei moduri se caracterizează prin intercompatibilitate, iar pentru fiecare din aceste moduri menționate anterior trebuie specificat decodorul și formatul șirului de biți.

Layer 1 reprezintă primul mod dedicat aplicațiilor simple care nu necesită o rată de biți crescută, având nevoie de o valoare de doar 192 Kbiți/s pentru un canal audio. Acest mod este utilizat în mod frecvent de aplicații precum înregistrarea pe benzi sau discuri magnetice.

Comparativ cu modul anterior, modul Layer 2, dispune de o rată de biți mărită, pentru aplicații utilizate în televiziune, radio sau telecomunicații. Rata de compresie pentru fiecare canal audio poate fi de 96 Kbiți/s sau 128 Kbiți/s beneficiind astfel de o eficiență sporită.

Layer 3 oferă cea mai bună rată de compresie a acestui standard. Calitatea sunetului este menținută la o rată de biți joasă, iar nivelul poate scădea până la 64 Kbiți/s, acest lucru contribuind la creșterea ariei de aplicații în domeniul telecomunicațiilor.

Procesul de elaborare a acestui standard s-a bazat pe realizarea mai multor teste de audiție la nivel internațional ce au avut ca scop studierea nivelului de calitate al sunetului ce a fost supus procesului de comprimare. Toate aceste teste au fost efectuate între anii 1990-1992 de către Radiodifuziunea suedeză cu ajutorul unui eșantion de ascultători specializați în acest sens.

Standardul MPEG-2

Standardul MPEG-2 a fost publicat în 1994 și se diferențiază față de MPEG-1 prin următoarele caracteristici:

Posibilitatea realizării eșantionărilor la frecvențe scăzute.

Posibilitatea realizării unei codificări multicanal de tip psiho-acustic.

Acest standard audio este o extensie a primului standard de acest tip, MPEG-1, ce vine cu îmbunătățiri care permit transmiterea datelor de tip audio mono sau stereo într-un singur șir de biți. MPEG-2 are la bază MPEG-1, astfel rata de biți poate primi valori dintr-un domeniu mult mai mare ce variază de la 8 Kb/s până la 1 Mb/s. În cazul sunetelor multicanal, prin utilizarea unui decodor audio se evită transmiterea separată a șirurilor de biți, deoarece aceste decodoare vor emite un sunet stereo. Cu ajutorul lui MPEG-2 avem posibilitatea de a include până la 7 canale diferite pentru sunetul multicanal, ceea ce reprezintă un pas important spre dezvoltare pentru această industrie.

De menționat este faptul că efectuarea testelor de audiție reprezintă un pas important în vederea elaborării celor două standarde audio, MPEG-1 și MPEG-2. Aceste teste au fost extrem de elaborate și critice pentru obținerea unui nivel ridicat al calității audio pentru toate modurile disponibile, Layer 1, Layer 2 și Layer 3, fiind realizate de cei mai experimentați oameni din domeniu.

APLICAȚIE DE REDARE A SUNETELOR DE TIP MUSIC PLAYER

Introducere

Platforma Android oferă resurse pentru manipularea și redarea fișierelor media, pe care aplicațiile le pot utiliza pentru a crea o interfață între utilizator și fișierele de muzicăexistente în memoria dispozitivelor proprii. Crearea music player-ului va implica folosirea clasei ContentResolver pentru a prelua piese de pe dispozitiv, clasa MediaPlayer pentru redarea audio și clasa MediaController pentru a deține controlul asupra redării melodiilor. Vom folosi, deasemenea, o instanță de service pentru redarea audio atunci când utilizatorul nu interacționează direct cu aplicația, dar vom fi atenționați de o notificare afișată în timpul redării în bara de notificări a sistemului Android. În plus am introdus funcții noi precum: „Programare pentru închidere după un număr definit de melodii”, „Închidere automată după o anumită perioadă de timp sau la o anumită oră” sau „Posibilitatea ștergerii unei melodii atât din playlist cât și din memoria sistemului”.

Toate aceste funcții sunt menite să vină în ajutorul utilizatorului pentru o folosire cât mai ușoară, dar și pentru reducerea consumului de energie al terminalului pe care rulează aplicația. Pentru o parte din codul folosit în aplicație,am utilizat un nivel minim al API-ului pus la dispoziție de Google[23].

Instalarea aplicației

În momentul finalizării aplicației, Android Studio o va exporta într-un fișier ce va avea extensia ’’.apk’’. Acest fișier trebuie copiat în memoria internă a dispozitivului pe care se dorește să se realizeze instalarea. După acest prin pas, înainte de instalarea propriu-zisă pe device-ul dorit, trebuie să accesăm setările dispozitivului asemănător Figurii 5.1, unde vom activa opțiunea ’’Unknown sources’’ care ne va permite să instalăm aplicația nou creată. Altfel sistemul Android recunoaște că se dorește instalarea unei aplicații ce nu face parte din magazinul de aplicații Google, împiedicând astfel instalarea aplicațiilor din afară fără acordul utilizatorului.

Figura 5.1 – Activarea opțiunii Unknown sources

Următorul pas constă în localizarea fișierului în memoria telefonului/tabletei și instalarea aplicației. Procesul de instalare este unul extrem de simplu și intuitiv. Nu avem nevoie decât de un simplu click pe fișierul nostru apoi se va deschide o nouă fereastră unde va trebui să selectăm butonul de ’’Install’’ și să așteptăm finalizarea acestui proces.

Figura 5.2 – Procesul de instalare al aplicației

După instalare, aplicația poate fi localizată și accesată din meniul de aplicații al dispozitivului pe care a fost efectuată instalarea. Astfel putem beneficia de toate avantajele cu care vine această aplicație.

Figura 5.3 – Localizarea aplicației după instalare

Această aplicație de redare a sunetelor, este practic un music player pe ANDROID, care, față de aplicațiile existente, aduce o serii de funcții noi, pe lângă cele de bază, menite să vină în sprijinul utilizatorului. Figura 5.4 prezintă interfața aplicației, destul de simplă și intuitivă, ușor de accesat și de utilizat.

Figura 5.4 – Interfața aplicației de redare a muzicii

Butoanele pentru controlul redării unei melodii

Bara ce conține butoanele prin care se poate controla redarea melodiilor din lista de redare se situează în partea de jos a interfeței aplicației. Este alcătuită dintr-un număr de 5 butoane la care se adaugă un cursor și un contor care ne arată timpul de început, redare și sfârșit pentru fiecare melodie în parte. Fiecare buton poate fi identificat cu ușurință întrucât am folosit forma standard pe care acestea o au și la alte aplicații de redare a sunetelor.

Astfel în Figura 5.5 regăsim butonul de play/pause care este situat la mijloc în bara ce conține butoanele pentru controlul redării melodiilor și are rolul de a începe sau a opri redarea unei melodii. În imediata vecinătate la stânga și la dreapta regăsim butoanele de derulare înainte sau înapoi a melodiei ce este redată în acel moment, acest lucru putând fi făcut și prin simpla tragere a cursorului care este situat sub aceste butoane. La capetele barei de control sunt așezate butoanele de next și previous. Ele au rolul de a face trecerea de la melodia ce este redată în acel moment la melodia redată anterior sau la cea ce urmează a fi redată după încheierea ei, în funcție de dorința utilizatorului .

Figura 5.5 – Bara ce conține butoanele de redare a unei melodii

Bara de opțiuni

Această bară este poziționată în partea de sus a ecranului device-ului pe care rulează aplicația. Conține numele aplicației în partea stângă, urmat de 3 butoane cu funcții diferite și anume : auto turn off, repeat și shuffle cărora li se adaugă butonul de închidere, care oprește complet procesul de rulare al aplicației. Beneficiază de o importanță ridicată deoarece opțiunile care ne sunt puse la dispoziție nu pot fi accesate decât din această bară, în acest sens dispunem de o simplificare a aplicației care reduce consumul de energie.

Figura 5.6 – Bara de opțiuni

Butonul auto turn off

Funcționalitatea acestui buton este una aparte, întrucât ne dă posibilitatea de a programa aplicația să se închidă automat. Acesta apelează funcțiile nou introduse, mai exact “Programare pentru închidere după un număr definit de melodii” și „Închidere automată după o anumită perioadă de timp sau la o anumită oră” . Aceste funcții au fost introduse pentru a oferi o accesibilitate sporită utilizatorului ținând cont de faptul că nu se mai regăsesc pe nici o altă aplicație de acest gen.

Figura 5.7 – Aplicația auto turn off activată

Acest buton conține 3 opțiuni, prin care putem programa aplicația să se închidă automat, similar opțiunii existente în cazul unui televizor. Pentru a selecta una din aceste opțiuni va trebui bifată căsuța corespunzătoare, apoi ca această funcție să fie activată vom apăsa butonul ’’Save’’, în caz contrar vom selecta butonul ’’Stop’’ iar opțiunea va fi dezactivată.

Închidere automată după un număr definit de cântece

Presupune selectarea numărului fix de melodii ce dorim să fie redate și impune playerului să se închidă după redarea acestora. Astfel după selectarea opțiunii aferente acestei funcții vom introduce numarul ce piese ce urmează să fie redate până la închiderea aplicației, iar la final selectarea butonului de save va face ca această funcție să fie activă. Pentru comoditate, dar și pentru economisirea resurselor sistemului și o cât mai bună gestionare a acestora, am realizat că această funcție este utilă mai ales în timpul călătoriilor, atunci cand utilizatorul nu dorește ca playerul să funcționeze continuu.

Figura 5.8 – Selectarea primei opțiuni a funcției auto turn off

Închidere automată după o perioadă de timp

Această optiune are drept scop reducerea consumului de energie printr-o bună gestionare a resurselor, însă principalul beneficiar este utilizatorul care se va bucura de avantajul pe care îl aduce această funcție. Astfel playerul poate fi programat, similar unui televizor, să se închidă după ce funcționează o anumită perioadă de timp (de exemplu: 10, 15, 30 de minute).

Figura 5.9 – Selectarea opțiunii de închidere automată după 15 minute

Închidere automatăla o anumită oră

Cea din urmă opțiune este similară celei precedente, totuși în cazul ei închiderea automată a aplicației va avea loc la o anumită oră impusă de utilizator. Această programare se face pe baza sincronizării cu ceasul sistemului.

Figura 5.10 – Selectarea opțiunii de auto-închidere la o oră prestabilită

Butonul shuffle

Acest buton este unul extrem de uzual fiind în componența majorităților aplicațiilor de redare audio și are rolul de a reda melodiile din lista de redare într-un mod aleatoriu când este activat. În cazul în care el nu este activat melodiile vor fi redare în ordinea în care se găsesc în lista de redare sau în lista personalizată creată de utilizator. De menționat este faptul că prima dată când aplicația este deschisă după instalare butonul va fi dezactivat, însă dacă apoi va fi activat și vom închide aplicația, el va rămîne în continuare activ, iar la următoarea utilizare a aplicației nu vom fi nevoiți să activăm din nou această funcție, doar în cazul în care dorim să ne folosim de utilitatea pe care o îndeplinește acest buton. Pentru activarea lui nu este necesar decât un simplu click. Acest lucru va fi semnalizat prin schimbarea de culoare, din gri în verde, care se produce când acționăm asupra sa.

Figura 5.11 – Butonul shuffle activat

Butonul repeat

După cum îi spune și numele, butonul de repeat nu face altceva decât să repete redarea uneia sau mai multor melodii din lista de redare, asta în cazul în care este activat, în caz contrar melodiile din playlist vor fi redate o singură dată fără a se repeta.

Repetarea tuturor melodiilor

Cu ajutorul acestei opțiuni melodiile din playlist vor fi redate în mod repetat de un număr nelimitat de ori până la oprirea aplicației. Prin acest lucru lista de redare va fi percepută ca fiind fără limită, deoarece conținutul va fi redat continuu până la o eventuală intervenție a utilizatorului sau epuizarea energiei device-ului pe care rulează. Dacă dorim ca această funcție să fie activă trebuie să selectăm butonul corespunzător din bara de opțiuni care trebuie să fie de culoare verde, iar în interior să regăsim litera ’’A’’ exact ca în Figura 5.12, acest fapt indicându-ne că se va repeta redarea tuturor melodiilor din playlist.

Figura 5.12 – Butonul repeat activat pentru repetarea tuturor melodiilor din playlist

Repetarea unei singure melodii

În această situație, se va repeta redarea în mod continuu a melodiei care va fi selectată de utilizator. Este o opțiune destul de rar utilizată, deoarece puțini utilizatori preferă să asculte o singură melodie din întreaga listă de redare. Când este activată, semnul funcției va fi semnalizat în bara de opțiuni prin culoarea verde iar în interior se va distinge cifra ’’1’’, prin acest lucru realizăm că se va repeta redarea unei singure melodii.

Figura 5.13 – Butonul repeat este activat pentru repetarea unei singure melodii

Redarea o singură dată a fiecărei melodii din lista de redare

Aceasta mod al butonului de repeatproduce dezactivarea lui, în acest fel fiecare melodie va fi redată doar o singură dată fără a se mai repeta vreo una dintre ele. Cu ajutorul acestei opțiuni nu vom mai asculta o melodie de mai multe ori, beneficiind astfel de diversitate și de faptul că vom putea să ne bucurăm de toate melodiile existente în playlist ce vor fi redate în ordine alfabetică sau în mod aleator.

Figura 5.14 – Butonul repeat dezactivat

Crearea unei liste de redare personalizate

În mod obișnuit, melodiile înscrise în listă sunt ordonate și redate automat fie în ordine alfabetică, fie în ordinea în care au fost înscrise în memoria sistemului. Însă dacă dorim ca în timpul funcționării aplicației să nu mai intervenim până la închidere ca să economisim resursele de energie ale device-ului sau să avem posibilitatea folosirii unui playlist personalizat pentru a ne bucura de melodiile preferate care, de cele mai multe ori, sunt stocate în ordine aleatoare, risipite printre numeroase alte melodii care fie sunt mai vechi, fie nu ne mai plac sau pur și simplu au rămas în memoria device-ului dintr-un motiv sau altul, putem crea o listă de redare personalizată cu ajutorul opțiunilor „start queue ” și „stop queue”.Acestea pun piesele preferate într-o coadă de așteptare, care ne dă posibilitatea efectuării unei selecții a melodiilor.

Figura 5.15 ilustrează noua funcționalitate care este ușor de accesat, printr-o simplă apăsare de 5 secunde pe oricare din melodiile existente în playlist. Cu ajutorul acestei opțiuni, melodiile selectate vor fi redate automat în ordinea dorită de utilizator, adică în mod personalizat.După activarea opțiunii cu ajutorul căreia avem posibilitatea de a crea o listă de redare personalizată, va trebui sa populăm această lista, cu cântece, iar acest lucru este posibil printr-un simplu click pe melodiile preferate. Ele vor fi puse în coada de așteptare în ordinea selectării de către utilizator, atribuindu-se fiecarui cântec un număr de ordine.

Figura 5.15 – Opțiunea prin care are loc crearea unei cozi de așteptare pentru redarea melodiilor

După ce am inițializat și creat coada de așteptare cu melodiile preferate avem posibilitatea să o modificăm sau să o oprim dacă dorim acest lucru. Modificarea se poate face în același mod în care are loc și punerea cântecelor în coadă, cu un simplu click pe melodia dorită, însă pentru a fi oprită trebuie să ținem apăsat 5 secunde pe oricare din melodiile din listă și să selectăm opțiunea ’’Stop queue’’.

Figura 5.16 – Oprirea cozii de așteptare creată

Posibilitatea ștergerii unei melodii atât din playlist cât și din memoria sistemului

În figura 5.17 este prezentată o funcție nou adăugată, pe lângă cele de bază, datorită căreia avem posibilitatea ștergerii unei melodii atât din playlist, cât și din memoria sistemului. Este extrem de utilă atunci când avem una sau mai multe melodii pe care nu le mai agreemși dorim să eliberăm spațiul pe care îl ocupă în mod inutil, fără a mai accesa explicit fișierul din memorie în acest scop.

Această funcție necesită atenție la implementare, deoarece trebuie să se țină cont și de situația în care se dorește ștergerea melodiei din playlist dar nu și din memoria sistemului. Din acest motiv, am prevăzut o fereastră de dialog cu utilizatorul în care acesta să selecteze varianta dorită și să confirme selectarea înainte ca operația să fie efectuată. Totuși, este indicat să se realizeze periodicunback-uppentru a ne asigura că nu ștergem fișierele utile.

Figura 5.17 – Opțiunea de ștergere a unei melodii din playlist sau memorie

Play next

Această opțiune am introdus-o tot pentru personalizarea listei de redare este cea de Play next. Cu ajutorul acestei funcții avem posibilitatea de a selecta melodia ce va fi redată după încheierea melodiei ce este redată în acel moment. Acest lucru nu este valabil decât pentru o singură melodie. În cazul în care am selectat deja o melodie care să fie redată după încheierea celei curente dar între timp ne răzgândim și selectem o nouă piesă, cea din urmă îi va lua locul celei selectate precedent.

Opțiunea este utilă și este indicat să fie utilizată în momentul în care butonul de shuffle este dezactivat, deoarece melodia selectată de a fi redată următoarea, indiferent de poziția ei în interiorul lista de redare, va fi mutată în vecinătatea melodiei care este redată în momentul respectiv.

Figura 5.18 – Activarea opțiunii Play next

Pentru o derulare mai ușoară în interiorul listei și pentru a facilita utilizarea am introdus un buton care apare doar în cazul în care derulăm la o distanță mare față de melodia ce este redată în acel moment, astfel ne putem întoarce mult mai ușor la melodia de la care am plecat în cazul în care am ajuns spre finalul listei iar melodia ce este redată se află la începutul ei. Această opțiune este evidențiată în Figura 5.19 și este disponibilă pentru ambele sensuri de derulare în interiorul listei de redare, în sus către inceput dar și în jos către finalul listei.

Figura 5.19 – Butoane pentru o derulare mai ușoară în interiorul listei de redare

CONCLUZII

Aplicația prezentată în cadrul acestei lucrării a fost realizată din dorința de cunoaștere și învățare, domeniul abordat fiind unul extrem de interesant și atractiv, în plin progres, care atrage tot mai mulți simpatizanți și care se dezvoltă tot mai mult și mai rapid datorită numărului foarte mare de membrii ai comunității de dezvoltatori de aplicații pe Android.

Implementarea Java se dovedește a fi performantă pentru anumite aplicații dar a devenit evident în procesul de implementare că anumite părți trebuiesc implementate în codul nativ.

Prin implementarea noilor funcții, extrem de utile, am crescut accesibilitatea aplicației și am sporit confortul utilizatorului, în același timp reușind eficientizarea consumului de energie al terminalului.

Se prevede o creștere a numărului de aplicații de acest gen pe platforma Android, care pot fi de un real folos utilizatorilor.

Un aspect important de care trebuie să ținem cont este acela că aplicația poate fi îmbunătățită cu alte noi funcții, la fel de plăcute și de utile.

Prin definitivarea acestei aplicații, am reușit să intru cumva în grupul dezvoltatorilor de aplicații pe ANDROID, unul extrem de numeros și căruia în fiecare zi i se alătură noi membri, și să implementez funcțiile prezentate în lucrare.

BIBLIOGRAFIE

[1] A. Frank and S. Robi, ”Android in Action”, Manning, 2011

[2] B. Eckel, ”Thinking in Java”, Prentice Hall, 1998

[3] Bill Phillips and Brian Hardy, Android Programming: The Big Nerd Ranch Guide, Big Nerd Ranch, 2013

[4] Cornel Mironel Niculae, Aparate numerice, Editura Universității din Bucuresti, 2000

[5] D. Lauren and C. Shane, ”Sam Teach Yourself Android”, Sams, 2010;

[6] E. Burnette, ”Hello Android”, O’Reilly, vol. 3, 2010;

[7] G. Vicram, ”Pro Java”, Apress, 2006;

[8] Jonathan Simon, Head First Android Development, O’Reilly Media, 2011

[9] Lathi, B.P., Signal Processing & Linear Systems, Berkeley-Cambridge Press, 1998

[10] Marcu Cristian și colectiv – Lucrări de laborator FIZICA, Litografia IPTV Timișoara, 1981;

[11] Mark L. Murphy, The Busy Coder’s Guide to Android Development, Commons Ware, 2014

[12]P. B. Hansen, ”Programming for Everyone in Java”, Springer, 1999;

[13] V. Cătuneanu, V. Cehan ș.a., “Tehnologie electronică”, Editura Didactică și Pedagogică, București, 1981

[14] Proiectarea și Dezvoltarea Serviciilor Distribuite. http://ocw.cs.pub.ro/courses/pdsd/labs/00 Accesat: 2015

[15] Android life cycle. http://stackoverflow.com/questions/16293023/android-life-cycle-which-event-fired-only-once-during-the-life-cycle Accesat: 2015

[16] Android development. http://jaredrummler.com/2014/11/09/lollipop-land Accesat: 2015

[17] Android, Revista Connect.http://www.connect.ro/2015/05/05/android-lollipop-este-prezent-pe-aproape-10-din-smartphone-uri Accesat: 2015

[18] Duelul dintre Apple și Google. http://www.yoda.ro/smartphones/duelul-dintre-apple-si-google-este-din-ce-in-ce-mai-aprins-cine-castiga-razboiul-ios-vs-android-in-europa.html Accesat: 2015

[19] Global smartphone market share by platform. http://www.businessinsider.com/iphone-v-android-market-share-2014-5?IR=T Accesat: 2015

20 Google lansează official Android Studio. http://tech.firstpost.com/news-analysis/google-releases-android-studio-1-0-ide-to-improve-the-way-you-build-apps-244979.html Accesat: 2015

[21] Android Studio. http://en.wikipedia.org/wiki/Android_Studio Accesat: 2015

[22] Documentație Microsoftwww.microsoft.com Accesat: 2015

[23] API-ul pentru dezvoltarea de aplicatți pus la dispoziție de Google. http://developer.android.com/guide/topics/media/mediaplayer.htmlAccesat: 2015

OPIS

Nr. de pagini al părții scrise: 53

Nr. de figuri: 36

Nr. de tabele: 2

BIBLIOGRAFIE

[1] A. Frank and S. Robi, ”Android in Action”, Manning, 2011

[2] B. Eckel, ”Thinking in Java”, Prentice Hall, 1998

[3] Bill Phillips and Brian Hardy, Android Programming: The Big Nerd Ranch Guide, Big Nerd Ranch, 2013

[4] Cornel Mironel Niculae, Aparate numerice, Editura Universității din Bucuresti, 2000

[5] D. Lauren and C. Shane, ”Sam Teach Yourself Android”, Sams, 2010;

[6] E. Burnette, ”Hello Android”, O’Reilly, vol. 3, 2010;

[7] G. Vicram, ”Pro Java”, Apress, 2006;

[8] Jonathan Simon, Head First Android Development, O’Reilly Media, 2011

[9] Lathi, B.P., Signal Processing & Linear Systems, Berkeley-Cambridge Press, 1998

[10] Marcu Cristian și colectiv – Lucrări de laborator FIZICA, Litografia IPTV Timișoara, 1981;

[11] Mark L. Murphy, The Busy Coder’s Guide to Android Development, Commons Ware, 2014

[12]P. B. Hansen, ”Programming for Everyone in Java”, Springer, 1999;

[13] V. Cătuneanu, V. Cehan ș.a., “Tehnologie electronică”, Editura Didactică și Pedagogică, București, 1981

[14] Proiectarea și Dezvoltarea Serviciilor Distribuite. http://ocw.cs.pub.ro/courses/pdsd/labs/00 Accesat: 2015

[15] Android life cycle. http://stackoverflow.com/questions/16293023/android-life-cycle-which-event-fired-only-once-during-the-life-cycle Accesat: 2015

[16] Android development. http://jaredrummler.com/2014/11/09/lollipop-land Accesat: 2015

[17] Android, Revista Connect.http://www.connect.ro/2015/05/05/android-lollipop-este-prezent-pe-aproape-10-din-smartphone-uri Accesat: 2015

[18] Duelul dintre Apple și Google. http://www.yoda.ro/smartphones/duelul-dintre-apple-si-google-este-din-ce-in-ce-mai-aprins-cine-castiga-razboiul-ios-vs-android-in-europa.html Accesat: 2015

[19] Global smartphone market share by platform. http://www.businessinsider.com/iphone-v-android-market-share-2014-5?IR=T Accesat: 2015

20 Google lansează official Android Studio. http://tech.firstpost.com/news-analysis/google-releases-android-studio-1-0-ide-to-improve-the-way-you-build-apps-244979.html Accesat: 2015

[21] Android Studio. http://en.wikipedia.org/wiki/Android_Studio Accesat: 2015

[22] Documentație Microsoftwww.microsoft.com Accesat: 2015

[23] API-ul pentru dezvoltarea de aplicatți pus la dispoziție de Google. http://developer.android.com/guide/topics/media/mediaplayer.htmlAccesat: 2015

Similar Posts