Aplicatie de Gestionare a Cheltuielilor In Android

CUPRINS

Capitolul 1

Aplicații Mobile

Capitolul 2

2.1. Cum a apărut Android

2.2. Dezvoltarea aplicațiilor

2.3. Arhitectura Android

2.4. Procese și Threads

2.4.1. Procese

2.4.2. Threads

2.4.3. Remote procedure calls

2.5. Stocarea datelor

2.5.1. Preferences

2.5.2. Files

2.5.3. Baze de date

2.5.4. Network

2.6. Hardware ce rulează Android

2.7. Evoluția Android

2.8. Pachet dezvoltare software

Capitolul 3

Prezentarea părții practice

Capitolul 4

Concluzii

CAPITOLUL 1

Aplicații Mobile

O aplicație mobilă(mobile app) este o aplicație software proiectată pentru a rula pe smartphone-uri, tablete și alte dispozitive mobile wireless. Aplicațiile sunt dispobile de obicei prin intermediul platformelor de distribuții de aplicații, platforme deținute de proprietarii sistemelor de operare, cum ar fi Apple App Store, Google Play, Windows Phone Store si BlackBerry App World. Unele aplicații sunt gratuite, în timp ce altele trebuie cumpărate. De obicei, acestea sunt descărcate de pe platforma de la un anumit dispozitiv, cum ar fi un iPhone, BlackBerry, telefon cu sistem de operare Android sau un telefon cu sistem de operare Windows Mobile.O altă modalitate de instalare a aplicațiilor pe dispozitivul dorit este conectarea acestuia la un laptop sau desktop ce are instalat un software de comunicare cu dispozitivul mobil. În cazul aplicațiilor ce trebuie plătite, 20-30% din preț merge către magazin, restul banilor ajungând la producătorul aplicației.

Termenul „app”, a devenit foarte cunoscut, iar în 2010 a fost declarat „cuvântul anului” de către Societatea Americană de Dialect. În 2009 David Progue a spus că smartphone-urile mai noi, ar putea fi poreclite „App Phones” pentru a putea fi distinse de mai puțin sofisticatele smartphone-uri apărute anterior.

Aplicațiile mobile au fost inițial realizate pentru productivitate si informare, inclusiv e-mail, calendar, contacte, piața de valori și informații meteo. Cererea publicului și disponibilitatea de instrumente de dezvoltare au dus la expansiunea rapidă în alte categorii, cum ar fi jocuri pentru telefoane mobile, GPS si servicii bazate pe locație, servicii bancare, achiziții de bilete pentru filme, transport etc. „Boom-ul” in număr si varietate al aplicațiilor a făcut descoperirea o provocare, ce la rândul sau a dus la crearea unei game largi de resurse inclusiv blog-uri, reviste și servicii online dedicate descoperirii de aplicații.

Popularitatea aplicațiilor mobile a continuat să crească, deoarece utilizarea lor a devenit din ce în ce mai răspândită printre utilizatorii de telefoane mobile. Un studiu comScore realizat în mai 2012 a raportat că pe parcursul trimestrului anterior, abonații de telefonie mobilă au folosit mai mult aplicațiile mobile decât browserele web instalate pe dispozitivele acestora: 51.1% vs. 49.8%.

CAPITOLUL 2

Cum a apărut Android

Android este o platformă software și un sistem de operare pentru dispozitive și telefoane mobile bazată pe nucleul Linux, dezvoltată inițial de compania Google, iar mai târziu de consorțiul comercial Open Handset Alliance. Android permite dezvoltatorilor să scrie cod gestionat în limbajul Java, controlând dispozitivul prin intermediul bibliotecilor Java dezvoltate de Google. Aplicațiile scrise în C și în alte limbaje pot fi compilate în cod mașină ARM și executate, dar acest model de dezvoltare nu este sprijinit oficial de către Google.

Lansarea platformei Android la 5 noiembrie 2007 a fost anunțată prin fondarea Open Handset Alliance, un consorțiu de 48 de companii de hardware, software și de telecomunicații, consacrat dezvoltării de standarde deschise pentru dispozitive mobile. Google a lansat cea mai mare parte a codului Android sub licența Apache, o licență de tip free-software și open source.

În iulie 2005 Google a achiziționat Android, Inc, o mică companie de tip startup cu sediul în Palo Alto, California, SUA. Cofondatorii companiei Android, care au continuat să muncească la Google, au fost Andy Rubin (cofondator al Danger), Rich Miner (cofondator al Wildfire Communications, Inc), Nick Sears (fost vicepreședinte al T-Mobile) și Chris White (unul dintre primii ingineri ai WebTV). La acea dată se cunoștea foarte puțin despre Android, Inc., doar că făceau software pentru telefoane mobile. Aceasta a cauzat zvonuri cum că Google ar plănui să intre pe piața telefoniei mobile, deși era neclar ce funcție ar putea îndeplini în această piață.

La Google, echipa condusă de Rubin a dezvoltat un sistem de operare pentru dispozitive mobile bazat pe Linux, pe care l-au prezentat producătorilor de telefoane mobile și operatorilor de rețele de telefonie mobilă, cu perspectiva de a asigura un sistem flexibil, upgradabil. Google a raportat că a aliniat deja o serie de parteneri producători de componente hardware și software la noul concept, și a semnalat operatorilor de rețele de telefonie mobilă că era deschis la diferite grade de cooperare din partea acestora. Mai multe speculații că Google ar fi putut intra pe piața telefoniei mobile au apărut în decembrie 2006. Rapoarte de la BBC și Wall Street Journal au remarcat faptul că Google își dorea căutarea web și aplicațiile sale pe telefoane mobile și că lucra din greu către acest țel. Presa și siturile de știri au publicat curând zvonuri că Google ar dezvolta un dispozitiv mobil marca Google. A urmat și mai multă speculație, susținând că în timp ce Google definea specificațiile tehnice, ar fi demonstrat prototipuri producătorilor de telefoane mobile și operatorilor de rețea. S-a raportat că până la 30 de telefoane prototip operau deja pe piață.

În septembrie 2007 InformationWeek a publicat un studiu al companiei Evalueserve care dezvăluia că Google a depus cereri pentru mai multe brevete de invenție în domeniul telefoniei mobile.

Fondarea Open Handset Alliance

La 5 noiembrie 2007 a fost făcut public Open Handset Alliance, un consorțiu incluzând Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel și Nvidia, cu scopul de a dezvolta standarde deschise pentru dispozitive mobile. Odată cu formarea Open Handset Alliance, OHA a dezvăluit de asemenea primul său produs, Android, o platformă pentru dispozitive mobile construită pe nucleul Linux, versiunea 2.6.La 9 decembrie 2008, a fost anunțat că 14 noi membri au aderat la proiectul Android, incluzând: Sony Ericsson, Vodafone Group Plc, ARM Holdings Plc, Asustek Computer Inc, Toshiba Corp și Garmin Ltd.

Președintele și CEO-ul Google Eric Schmidt a avut nevoie de o bună bucată de timp în comunicatul de presă oficial pentru a elimina toate zvonurile și speculațiile precedente cu privire la existența unui telefon Google.

2.2 Dezvoltarea aplicațiilor

Primele aprecieri cu privire la dezvoltarea aplicațiilor pentru platforma Android au fost amestecate. Problemele citate includeau bug-uri, lipsă de documentație, infrastructură de testare inadecvată și lipsa unui sistem de gestionare public a problemelor.(Google a anunțat un sistem de gestionare a problemelor la data de 18 ianuarie 2008.) În decembrie 2007, fondatorul startup-ului mobil MergeLab, Adam MacBeth a declarat: „Funcționalitatea lipsește, este prost documentată sau pur și simplu nu funcționează…Este clar că nu este fata pentru prime time.” În ciuda acestui fapt, aplicațiile pentru Android au început să apară deja în săptămâna următoare celei în care a fost anunțată platforma. Prima aplicație publică a fost jocul „Snake”. Telefonul Android Dev este un dispozitiv cu SIM si hardware neblocate care este destinat dezvoltatorilor avansați. Cu toate că dezvoltatorii pot utiliza un dispozitiv de consum achiziționat de pe piață pentru a-și testa și utiliza aplicațiile, unii dezvoltatori pot alege să nu utilizeze un dispozitiv de pe piață, preferând un aparat neblocat sau fără contract.

Android este o platformă software și un sistem de operare bazat pe Linux, destinat în primul rând pentru dispozitivele touchscreen mobile, cum ar fi smartphone-uri și tablete. Inițial a fost dezvoltat de către Android,Inc., sustinuta financiar de Google și cumpărata mai târziu de aceștia în 2005. Android a fost lansat oficial in 2007 împreună cu fondarea Open Handset Alliance: un consorțiu de companii de hardware, software si telecomunicații dedicate progresului standardelor pentru dispozitive mobile.Primul telefon Android a fost vândut în Octombrie 2008.

La 5 noiembrie 2007 a fost făcut public Open Handset Alliance, un consorțiu incluzând Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel și Nvidia, cu scopul de a dezvolta standarde deschise pentru dispozitive mobile. Odata cu formarea „Open Handset Alliance”, OHA a dezvăluit de asemenea primul său produs, Android, o platformă pentru dispozitive mobile construită pe nucleul Linux, versiunea 2.6.

La decembrie 2008, a fost anunțat că 14 noi membrii au aderat la proiectul Android, incluzând : Sony Ericsson, Vodafone Group Plc, ARM Holdings Plc, Asustek Computer Inc, Toshiba Corp și Garmin Ltd.

Președintele și CEO-ul Google Eric Schmidt a avut nevoie de o bună bucată de timp în comunicatul de presă oficial pentru a elimina toate zvonurile și speculațiile precedente cu privire la existența unui telefon Google.

Android este open source și Google elibereaza codul sub licența Apache. Acest cod open source și acordarea de licențe permite software-ului sa fie modificat gratis și distribuit de către producătorii de dispozitive fără fir, producătorii de aparatură mobilă și de către dezvoltatori entuziaști. În plus, Android are o mare comunitate de dezvoltatori care scriu aplicații(„Apps”), ce extind funcționalitatea dispozitivelor, scrise într-o versiune cu biblioteci personalizate a limbajului de programare Java, biblioteci dezvoltate de Google.

În Octombrie 2012, au existat aproximativ 700.000 de aplicații disponibile pentru Android, iar numărul estimat de aplicații descărcate de pe Google Play, principalul magazin de aplicații Android, a fost de 25 miliarde.

Acești factori au permis celor de la Android sa aibă cea mai utilizată platformă pentru smartphone-uri, depăsind Symbian în al patrulea trimestru al anului 2010. De asemena acesta devenea sofware-ul de alegere pentru companiile tehnologice low-cost. Ca rezultat, în ciuda faptului că a fost conceput inițial pentru telefoane si tablete, are aplicații pentru televizoare, console video și alte electronice. Caracterul deschis Android a încurajat în continuare o mare comunitate de dezvoltatori și entuziaști de a utiliza codul „open source” ca o fundație a comunității bazată pe proiecte, la care se adaugă noi caracteristici pentru utilizatorii avansați sau aducerea Android pe dispozitivele gândite inițial sa ruleze pe alte sisteme de operare.

Android avea o cotă de nivel mondial pe piața de smartphone-uri de 75% în al treilea trimestru al anului 2012, cu 500 de milioane de dispozitive activate în total și 1,3 milioane activări pe zi. Succesul sistemului de operare s-a transformat într-o țintă pentru litigiile legate de brevete, ca parte din așa numitele „războaie de smartphone-uri” între companiile de tehnologie.

Logo-ul pentru sistemul de operare Android este un robot verde de culoarea mărului, proiectat în California de designer-ul Irina Blok.

2.3 Arhitectura Android

Linux Kernel

Android se bazează pe versiunea Linux 2.6 pentru serviciile de bază ale sistemului, cum ar fi securitatea, gestionarea memoriei, procesul de management, stiva de rețea și modelul de driver. Kernelul, de asemenea, acționează ca un strat de abstractizare intre hardware și software.

Libraries

Android include un set de biblioteci C / C++ utilizate de diferite componente ale sistemului Android. Aceste capacități sunt expuse dezvoltatorilor prin intermediul „Android application framework”. Unele dintre bibliotecile de bază sunt enumerate mai jos:

System C – o implementare derivată BSD a sistemului standard de biblioteci C(libc), ajustată pentru dispozitive bazate pe embedded Linux

Media Libraries – bazată pe „PacketVideo’sOpenCORE”; suportă atât înregistrarea si derularea multor formate video și audio cunoscute, cât și a imaginilor statice în formate MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG

Surface Manager – gestionează accesul la subsistemul de afișare 2D și grafică 3D în cadrul mai multor aplicații.â

LibWebCore – un motor de căutare modern ce rulează atât browserul Android cât și o vizualizare web

SGL – stă la baza motorului grafic 2D

Biblioteci 3D – implementare bazată pe OpenGL ES 1.0 APIs; bibliotecile folosesc fie accelerare hardware 3D în cazurile in care există, fie softul inclus 3D , foarte bine optimizat .

FreeType – bitmap

SQLite – un motor de baze de date disponibil tuturor aplicatiilor

Android Runtime

Android include un set de biblioteci de bază, care oferă cele mai multe dintre funcționalitățile disponibile în bibliotecile limbajului de programare Java.

Fiecare aplicație Android rulează în propriul proces, cu propriul său exemplu de mașină virtuală Dalvik. Dalvik a fost scris pentru ca un dispozitiv să poată rula eficient pe mai multe masini virtuale. Dalvik VM execută fișiere în executabil Dalvik (. dex), format care este optimizat pentru volum minimal al memoriei.VM este pe bază de registru și execută clasele compilate de un compilator Java, care au fost transformate în format .dex de instrumentul inclus „DX”.

Dalvik VM se bazează pe kernel-ul Linux pentru funcționalitatea de bază, cum ar fi gestionarea nivelului de memorie scăzut.

Application Framework

Prin furnizarea unui mediu deschis de dezvoltare Android ofera dezvoltatorilor posibilitatea de a construi aplicații extrem de bogate și inovatoare. Dezvoltatorii sunt liberi să profite de hardware, de informațiile privind localizarea cu ajutorul GPS-ului, să execute servicii de fundal, să seteze alarme, să adauge notificări pentru bara de stare și multe altele.

Dezvoltatorii au acces deplin la același API utilizate de către aplicațiile de bază. Arhitectura aplicațiilor este concepută pentru a simplifica reutilizarea componentelor; orice aplicație poate publica capacitățile sale și orice altă aplicație ar putea face apoi utilizarea acestor capacități (supuse unor constrângeri de securitate impuse de cadru). Același mecanism permite componentelor să fie înlocuit de către utilizator.

La baza tuturor aplicațiilor se află un set de servicii și sisteme, cum ar fi:

un set bogat și extensibil de opinii care pot fi folosite pentru a construi o aplicație, inclusiv liste, grile, casete de text, butoane și chiar un browser web încorporat.

Furnizorii de conținut, care permit aplicațiilor să acceseze date din alte aplicații (cum ar fi contactele), sau de a împărtăși propriile date.

Un manager de resurse, oferind acces la resurse non-cod, cum ar fi siruri de caractere localizate, grafică și fișiere layout.

Un manager de notificare care permite tuturor aplicațiilor să afișeze alerte personalizate în bara de stare.

Un manager de activitate care gestionează ciclul de viață al aplicațiilor.

Applications

Android este livrat cu un set de aplicații de bază, inclusiv un client de e-mail, programul de SMS-uri, calendar, hărți, browser, contacte și altele. Toate cererile sunt scrise folosind limbajul de programare Java.

2.4 Procese și Threads

Când prima componentă a unei aplicații trebuie să ruleze, Android pornește un proces Linux pentru aceasta cu un singur fir de execuție. În mod implicit, toate componentele aplicației rulează în acest proces și thread.

Cu toate acestea, puteți face ca pentru celelalte componente să ruleze în alte procese, și aveți posibilitatea de a folosi fire de execuție suplimentare pentru orice proces.

2.4.1 Procese

Procesul în care rulează o componentă este controlat de fișierul manifest. Elementele componente – <activity>, <service>, <receiver>, and <provider> – fiecare au un atribut proces care poate specifica un proces în care această componentă ar trebui să ruleze. Aceste atribute pot fi setate astfel încât fiecare componentă rulează în propriul proces, sau ca unele componente să impărtășească sau nu anumite procese. Ele pot fi, de asemenea, setate astfel încât componentele diferitor aplicații să ruleze în același proces – cu condiția ca cererile să împărtășească același ID de utilizator Linux și să fie semnate de către aceleași autorități. Elementul <application> are, de asemenea, un atribut proces, pentru a stabili o valoare implicită care se aplică la toate componentele.

Toate componentele sunt instanțiate în firul principal al procesului specificat și apelurile de sistem către componentă sunt expediate din acel fir. Nu sunt create subiecte diferite pentru fiecare instanță. Prin urmare, metode care răspund la aceste apeluri – metode, cum ar fi View.onKeyDown () care raportează acțiunile utilizatorului și notificările ciclului de viață – întotdeauna rulează în firul principal al procesului. Aceasta înseamnă că nici o componentă nu ar trebui să efectueze operații lungi sau de blocare (cum ar fi operațiunile de rețele sau bucle de calcul) atunci când sunt solicitate de către sistem, deoarece acest lucru va bloca orice alte componente, pe parcursul procesului. Puteți realiza fire separate pentru operațiile îndelungate.

Android poate decide să închidă un proces la un moment dat, dacă memoria este scăzută și este solicitată de alte procese care sunt mai importante pentru utilizator. Componentele aplicație care rulează în procesul anterior, sunt distruse. Aceste procese vor fi reluate ulterior.

Atunci când se decide ce proces trebuie oprit, Android cântărește importanța proceselor pornite pentru utilizator. De exemplu, oprește mai degrabă un proces ce nu este vizibil pe display decât un proces cu activități vizibile. Prin urmare decizia de a inchide un proces depinde de starea componentelor ce rulează în acel moment.

2.4.2 Threads

Chiar dacă aplicația dumneavoastră se limitează unui singur proces, probabil vor fi momente când veți da naștere la fire de execuție pentru muncă de fundal. Deoarece interfața cu utilizatorul trebuie să răspundă tot timpul rapid acțiunilor acestuia, threadul ce găzduiește o activitate nu ar trebui să găzduiască tot timpul operațiuni îndelungate cum ar fi descărcările de pe internet. Orice lucru ce nu poate fi terminat repede ar trebui insărcinat unui thread diferit.

Thread-urile sunt create în cod, folosind obiecte Java „Thread” standard . Android oferă o serie de clase pentru gestionarea „thread-urilor” – Looper pentru a rula o buclă de mesaj într-un „thread”, Handler pentru prelucrarea mesajelor și HandlerThread pentru setarea unui „thread” cu o buclă de mesaje.

2.4.3 Remote procedure calls

Android are un mecanism ușor pentru apeluri de procedură la distanță (RPC) – acolo unde o metodă este numită local, dar executată de la distanță (într-un alt proces), cu orice rezultat întors înapoi apelantului. Aceasta presupune descompunerea apelării metodei și a tuturor datelor ce o însoțesc la un nivel ce poate fi înțeles de sistemul de operare transmițând-o de la procesul local la procesul de la distanță, acolo unde apelul este reasamblat. Valorile returnate trebuie să fie transmise în direcția opusă. Android oferă tot codul pentru a face acest lucru, astfel încât să vă puteți concentra pe definirea si implementarea interfetei RPC în sine.

O interfață RPC poate include numai metode. Toate metodele sunt executate sincron (blocurile metodă locală până la terminarea metodei de la distanță), chiar dacă nu există nici o valoare returnată.

Pe scurt, mecanismul funcționează după cum urmează: ai începe prin a declara ca interfață RPC pe care dorești să o implementezi cu ajutorul unui simplu IDL (interface definition language). Din această declarație, instrument AIDL generează o interfață Java, care trebuie sa fie pusă atât la dispoziția procesului de la distanță cât si la dispoziția procesului local. Acesta conține două clase interne, ​​așa cum se arată în diagrama următoare:

Clasele interioare au tot codul necesar pentru a administra procedura de apel la distanță pentru interfața declarată cu IDL. Ambele clase interioare implementează interfata IBinder. Una dintre ele este folosită la nivel local și intern de către sistem; codul scris o poate ignora. Celălalt, numitul Stub, extinde clasa Binder. În plus față de codul intern pentru efectuarea de apeluri IPC, acesta conține declarații pentru metodele din interfața RPC declarată.

De obicei, procesul de la distanță va fi gestionat de un serviciu (pentru că un serviciu poate informa sistemul despre procesul și conexiunile sale cu alte procese). Aceasta dispune atât fișierul interfață generat de unealta AIDL cât și de subclasa Stub ce pune în aplicare metodele RPC. Clientii serviciului ar avea doar fișierul de interfața generat de unealta de AIDL.

O conexiune între un serviciu și clineții săi este stabilită astfel:

Clientii serviciului ( local) pun în aplicare metode onServiceConnected() și onServiceDisconnected(), astfel încât aceștia să poată fi notificați atunci când se stabilește o conexiune la distanță cu succes și atunci când se întrerupe. Apoi, pentru a stabili conexiunea se apelează bindService().

Serviciile metodei onBind() sunt puse în aplicare pentru a accepta sau respinge conexiunea, în funcție de intenție. În cazul în care conexiunea este acceptat, se returnează o instanță de subclasă Stub.

Dacă serviciul acceptă conexiunea, Android apelează metoda onServiceConnected(), a clientului și îi atribuie un obiect IBinder, un proxy pentru subclasa Stub gestionată de serviciu. Prin intrermediul proxy-ului clientul poate efectua apeluri la distanță.

2.5 Stocarea datelor

Un sistem de operare de tip desktop oferă un sistem de fișiere comun pe care orice aplicație le poate folosi pentru a stoca fișiere ce pot fi citite de către alte aplicații (probabil cu unele setări de control al accesului). Android folosește un sistem diferit: pe Android, toate datele aplicației (inclusiv fișierele) sunt folosite numai în cadrul acestei aplicații.

Cu toate acestea, Android oferă, de asemenea, o modalitate standard pentru ca o aplicație să ofere datele ei altor aplicații- prin intermediul furnizorilor de conținut. Un furnizor de conținut este o componentă opțională a unei aplicații care oferă citire / scriere a datelor aplicației, indiferent de restricțiile pe care le-ar putea impune. Furnizorii de conținut implementează o sintaxă standard pentru solicitarea și modificarea datelor, precum și un mecanism standard pentru citirea datelor returnate. Android furnizează un serie de furnizori de conținut pentru tipuri de date standard, cum ar fi imagini, audio, fișiere video și informații de contact personale.

Indiferent dacă se dorește sau nu să se exporte datele aplicației pentru alții, este nevoie de o modalitate de stocare. Android oferă următoarele patru mecanisme pentru stocarea și oferirea datelor Preferences, Files, Databases, și Network.

2.5.1 Preferences

„Preferences” este un mecanism ușor folosit pentru a stoca și pentru a prelua perechi cheie-valoare de tipuri de date primitive. Acesta este de obicei folosit pentru a stoca preferințele aplicațiilor, cum ar fi un salut implicit sau un font de text pentru a fi încărcate atunci când aplicația este pornită. Se apelează Context.getSharedPreferences,(pentru a citi și a scrie valori. Asociați un nume pentru setul de preferințe, dacă doriți să le impărțiți cu alte componente în aceeași aplicație, sau utilizează Activity.getPreferences() cu nici un nume pentru a le menține private. Nu se pot împărții preferințele între aplicații.

Exemplu de setare a preferințelor pentru un calculator(apăsarea tastelor este silențioasă) :

import android.app.Activity;

import android.content.SharedPreferences;

public class Calc extends Activity {

public static final String PREFS_NAME = "MyPrefsFile";

. . .

@Override

protected void onCreate(Bundle state){

super.onCreate(state);

. . .

// Preferințe implicite

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

boolean silent = settings.getBoolean("silentMode", false);

setSilent(silent);

}

@Override

protected void onStop(){

super.onStop();

// Salvează preferințele utilizatorului.

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

SharedPreferences.Editor editor = settings.edit();

editor.putBoolean("silentMode", mSilentMode);

editor.commit();

}

}

2.5.2 Files

Puteți stoca fișiere direct pe dispozitivul mobil sau pe un mediu de stocare amovibil. În mod implicit, alte aplicații nu pot accesa aceste fișiere.

Pentru a citi date dintr-un fișier, se apelează Context.openFileInput() și i se oferă numele local și calea fișierului. Returnează un obiect Java standard de tip FileInputStream. Pentru a scrie într-un fișier, se apelează Context.openFileOutput() oferind numele și calea. Aceasta returneaza un obiect FileOutputStream. Apelarea acestor metode cu numele și calea de la o altă aplicație nu va funcționa, puteți accesa doar fișierele locale.

2.5.3 Baze de date

Android API conține suport pentru crearea și utilizarea bazelor de date SQLite. Fiecare bază de date aparține numai aplicației ce o crează.

Obiectul SQLiteDatabase reprezintă o bază de date și are metode de interacționare – face interogări și gestionează date. Pentru a crea baza de date, se apelează SQLiteDatabase.create() și, de asemenea, subclasa SQLiteOpenHelper.

Ca parte a sprijinului său pentru sistemul de baze de date SQLite, Android expune funcțiile de gestionare a bazei de date care vă permit să stocați colecții complexe de date împachetate în obiecte utile. De exemplu, Android definește un tip de date pentru informații de contact, acesta este format din mai multe domenii, inclusiv de numele și prenumele (siruri de caractere), o adresă și numere de telefon (de asemenea, siruri de caractere), o fotografie (imagine bitmap), și multe alte informații care descriu o persoană.

Android este livrat cu instrumentul de baza de date sqlite3, care vă permite să răsfoiți conținutul de tabel, să executați comenzi SQL, și să efectuați alte funcții utile în bazele de date SQLite.

Toate bazele de date, SQLite și altele, sunt stocate pe dispozitiv în / date / date / nume_pachet / baze de date.

2.5.4 Network

Puteți folosi, de asemenea, rețeaua pentru a stoca și prelua date (atunci când este disponibilă). Pentru a face operațiunile de rețea, folosiți clasele din următoarele pachete:

java.net.*

android.net.*

2.6 Hardware ce rulează Android

Primul telefon construit pentru a rula sistemul de operare Android a fost „HTC Dream”, lansat la 22 octombrie 2008. Potrivit Google până la sfârșitul anului 2009, au apărut 18 de modele de telefoane ce folosesc Android la nivel mondial. În plus față de dispozitivele mobile wireless ce au fost livrate cu Android, unii utilizatori au reușit (cu o anumită cantitate de hacking și cu limită de funcționalitate) să instaleze Android pe dispozitive mobile wireless livrate cu alte sisteme de operare.

2.7 Evoluția Android

Android a cunoscut o serie de actualizări de la lansarea sa inițială. Aceste actualizări pentru sistemul de operare de bază rezolva de obicei bug-uri și a adăuga noi caracteristici.

Android 1.0 (G1)

Această versiune nu a venit cu un nume de „desert” . Lansat în 2008, cu dispozitivul HTC T-Mobile G1, sistemul de operare Android a furnizat servicii, cum ar fi GPS și Bluetooth, servicii integrate Google, precum Gmail, Google Maps (cu Street View) și Google Calendar, Android Market cu aproximativ 35 de aplicații (Amazon MP3 Store, YouTube) și multitasking.

Mai târziu, Google a lansat o actualizare de Android, versiunea 1.1 în februarie 2009.

Android 1.5 (Cupcake)

Android 1.5 a fost primul ce a obținut un nume de cod și anume „Cupcake”. Se spune că Google a vrut să lanseze această versiune ca 1.2, dar compania a decis ca în sfârșit să facă o revizuire majora și a ales 1.5.

Deși Cupcake este un desert mic, cupcake-ul lui Google s-a dovedit a fi altfel, datorită unor caracteristici notabile, cum ar fi caseta de căutare universală, suport pentru tastaturi cu cuvinte predefinite și dicționar de cuvinte personalizate, înregistrare video și încărcarcare pe YouTube, comutare între aparatul de fotografiat și modul video, galerie foto și camera integrată cu opțiune de ștergere, mai multe widget-uri, cum ar fi calendarul sau un music player. Android Market a fost reproiectat pe categorii, au apărut jocuri, descărcări și filtre, suport pentru gesturi și opțiunea „voice-to-text”.

Android 1.6 (Donut)

Lansat în septembrie 2009, această actualizare era adresată erorilor de repornire și a inclus mai multe caracteristici noi, cum ar fi căutarea Android, care vă permite să căutați atât online, cât și la nivel local pe telefon prin contacte, calendare, muzică și în orice aplicație cu codul adecvat, tastatură virtuală pe ecran, căutare vocală îmbunătățită, galerie foto integrată, aparat de fotografiat și camera video, opțiunea de a încărca direct pe YouTube și Picasa, cu acces mai rapid la aparatul foto, widget-uri pentru home screen, Bluetooth stereo și funcția de navigare Google turn-by-turn.

Android 2.0/2.1 (Éclair)

Noul STD numit „Eclair” a fost lansat în octombrie 2009, urmată de o versiune bug-fix 2.0.1 în decembrie 2009 și 2,1 în ianuarie 2010.

Noua versiune și actualizările acesteia a adus caracteristici cum ar fi suport Bluetooth 2.1, bliț și zoom digital, modul scenă pentru fotografii, balansul de alb, efecte de culoare și focalizare macro pentru aparatul de fotografiat, suport multi-touch, mai multe conturi de utilizator, contact rapid, imagini de fundal animate, cinci ecrane de start, tastatură îmbunătățită, pictograma microfon pentru dictarea vocală a e-mailurilor și Bluetooth 2.1.

2.2 (Froyo)

Froyo (iaurt înghetat), a fost lansat în mai 2010. Această versiune conține o mulțime de bug-uri corectate și a adus în plus unele caracteristici extraordinare. Compilare just-in-time, actualizări automate ale aplicațiilor, USB și suport hot-spot, FM Radio, Adobe Flash 10.1, un nou kernel de Linux, îmbunătățiri OpenGL pentru o grafică mai puternică a jocurilor și o performanță imbunătățită, politici de securitate îmbunătățite, căutare globală de adrese , calendar sincronizat, ștergerea de fișiere de la distanță, funcții „copy/paste”, suport Bluetooth pentru apelare vocală și multe altele.

Android 2.3 (Gingerbread)

Google a lansat official versiunea Gingerbread în Decembrie 2010.

Această versiune a fost proiectată pentru optimizarea vitezei, a memorie și a performanței. Sistemul de operare a inclus, de asemenea, o noua versiune a tastaturii virtuale, o îmbunătățire la funcția „copy/paste”, interfața cu utilizatorul a fost simplificată, suport de compresie video oferit WebM, a fost adăugată opțiunea pentru vizualizarea și controlul descărcărilor cu ajutorul browser-ului, manager de aplicații, suport pentru giroscop, barometru, gravimetru,comutare la camera foto din față pentru apeluri video și altele.

Primul telefon care a rulat Gingerbread a fost Samsung Nexus S de la T-Mobile.

Android 3.0/ 3.1 / 3.2 (Honeycomb)

Lansat în februarie 2011, versiunea Honeycomb a sistemului de operare Android a fost dezvoltată, în principal, pentru tablete și a fost urmată de două versiuni rapide ce conțineau rezolvarea bug-urilor inițiale, cum ar fi 3.1 și 3.2, apărute în iulie, respectiv august 2011.

Sistemul de operare a venit optimizat pentru tablete, avea widget-uri reînnoite și multitasking mai bun, navigare privată, USB Host, tastatură reproiectată și îmbunătățită, Google Talk, suport pentru grafică 3D, selecție multiplă, clipboard și opțiunea de drag-and-drop, noi API-uri pentru Bluetooth A2DP și HSP și galerie foto în modul „full-screen”.

Prima tabletă ce rula Android 3.x a fost Motorola Xoom.

Android 4.0 and later (Ice Cream Sandwich)

O dată cu apariția Ice Cream Sandwich, Google a renunțat la tradiția îmbunătățirilor minore și a lansat un sistem de operare cu o serie de noi caracteristici.

Acest sistem de operare, care a fost lansat în octombrie 2011, este proiectat să funcționeze atât pe smartphone-uri cât și pe tablete. Sistemul de operare include butoane virtuale, suportă deblocare de ecran, management al widget-urilor, Android Beam, o nouă aplicație pentru calendar cu opțiunea de pinch-to-zoom, interfața de utilizator Gmail restruscturată, caracteristici de rețele sociale, Roboto un nou tip pentru tastatură, o mai bună căutare vocală, noi capabilități foto, opțiunea de screenshot și multe altele.

Android 5.0 (Jelly Bean)

Deși Ice Cream Sandwich este un mare succes și a introdus o cantitate mare de funcționalități și caracteristici noi care au fost obținute prin combinarea caracteristicilor de la Honeycomb și Gingerbread, se așteaptă ca cea mai recentă și nelansată versiune 5.0, Jelly Bean, să aducă mai multe.

2.8 Pachet Dezvoltare Sofware

La început părerile cu privire la dezvoltarea de aplicații pentru Android au fost împărțite. Problemele citate includeau bug-uri, lipsă de documentație și nu exista un sistem de urmărire a problemelor utilizatorilor. În decembrie 2007, fondatorul MergeLab mobile Adam MacBeth a declarat, "Funcționalitatea nu există, aplicațiile sunt prost documentate sau pur și simplu nu funcționează . Android nu este pregătit încă." În ciuda acestui fapt, aplicațiile ce ținteau Android au început să apară in următoarea săptămână după ce platforma a fost anunțată. Prima publicație cu privire la o aplicație a fost făcută pentru jocul „Snake”.

Software Development Kit

Android SDK include un set complet de instrumente de dezvoltare. Acestea includ un program de depanare, biblioteci, un emulator de telefon (bazat pe QEMU), documentație, mostre de cod, și tutoriale. Platforme de dezvoltare din prezent includ calculatoare x86 arhitectură care rulează Linux (orice distribuție Linux desktop modernă), Mac OS X 10.4.8 sau mai târziu, Windows XP sau Vista. Printre cerințe se mai numără Java Development Kit, Apache Ant și Python. Mediul de dezvoltare integrat susținut oficial (IDE) este Eclipse, folosind instrumente de dezvoltare Android (ADT), deși dezvoltatorii pot folosi orice editor de text pentru a edita fișiere Java si XML, iar apoi să utilizeze instrumente de linie de comandă pentru a crea, construi, depana aplicații Android și pentru a controla dispozitive atașate Android.

Prezentarea aplicației se va face cu ajutorul unui emulator Android inclus în SDK.

CAPITOLUL 3

Partea practică – vWallet

3.1. Prezentarea aplicației

„vWallet” este o aplicație mobilă Android, simplă și ușor de utilizat ce ajută utilizatorul să țină evidența cheltuielilor zilnice, planificate sau neplanificate. La deschiderea aplicației vom fi întâmpinați de o interfață ușoară ce ne va ghida spre următorii pași:

Tema de fundal aleasă pentru prezentarea aplicației este „Holo”. Aceasta face parte din clasa Dialog. Această temă fluctuează ca dimensiuni.În funcție de informația oferită de aplicație ea încadrează conținutul micșorând-uși dimensiunile sau crescându-le.

Putem alege această temă astfel:

setTheme(android.R.style.Theme_Holo_Dialog);

După apăsarea butonului meniu ni se va aduce în față posibilitatea de alocare a unei sume de bani pentru diferite activități :

În urma folosirii opțiunii de alocare a unui nou buget, vom putea crea unul atribuindu-i acestuia un nume și o sumă. După salvarea acestuia va reținut numele suma alocată, ora și data atribuirii.

Aplicația folosește o bază de date denumită „wallet.db” pentru bugete și tranzacții creată astfel:

public class WalletProvider extends ContentProvider {

static final String TAG = "BudgetsProvider";

static final String DATABASE_NAME = "wallet.db";

static final int DATABASE_VERSION = 3;

static final String ACCOUNTS_TABLE_NAME = "Accounts";

static final String TRANSACTIONS_TABLE_NAME = "Tranzactions";

private static HashMap<String, String> sAccountsProjectionMap;

private static HashMap<String, String> sTransactionsProjectionMap;

private static final int ACCOUNTS = 1;

private static final int ACCOUNT_ID = 2;

private static final int ACCOUNT_TRANSACTIONS = 3;

private static final int TRANSACTIONS = 4;

private static final int TRANSACTION_ID = 5;

private static final UriMatcher sUriMatcher;

private DbHelper mOpenHelper;

public boolean onCreate() {

mOpenHelper = new DbHelper(getContext());

return true;

}

Pentru salvarea datei și orei se folosește clasa de mai jos:

public DateControlSet(Activity activity, Button dateButton, Button timeButton) {

this.activity = activity;

this.dateButton = dateButton;

this.timeButton = timeButton;

dateButton.setOnClickListener(this);

timeButton.setOnClickListener(this);

setDate(null);

}

public DateControlSet(Activity activity, int dateButtonId, int timeButtonId) {

this.activity = activity;

this.dateButton = (Button) activity.findViewById(dateButtonId);

this.timeButton = (Button) activity.findViewById(timeButtonId);

dateButton.setOnClickListener(this);

timeButton.setOnClickListener(this);

setDate(0);

}

public Date getDate() {

return date;

}

În urma salvării, bugetul va fi alocat și îl vom avea disponibil în meniul principal.

Am ales adăugarea a înca două bugete pentru o prezentare mai bună a funcționalității :

Bugetele alocate sunt organizate în listă în ordinea adăugării lor astfel :

switch (action) {

case ACCOUNTS:

qb.setTables(ACCOUNTS_TABLE_NAME);

qb.setProjectionMap(sAccountsProjectionMap);

orderBy = Accounts.DEFAULT_SORT_ORDER;

break;

case ACCOUNT_ID:

qb.setTables(ACCOUNTS_TABLE_NAME);

qb.setProjectionMap(sAccountsProjectionMap);

qb.appendWhere(Accounts._ID + " = " + uri.getPathSegments().get(1));

break;

case ACCOUNT_TRANSACTIONS:

qb.setTables(TRANSACTIONS_TABLE_NAME);

qb.setProjectionMap(sTransactionsProjectionMap);

qb.appendWhere(Transactions.ACCOUNT_ID + " = " + uri.getPathSegments().get(1));

qb.appendWhere(" AND " + Transactions.ARCHIVE_FLAG + " = 0");

orderBy = Transactions.DEFAULT_SORT_ORDER;

break;

case TRANSACTIONS:

qb.setTables(TRANSACTIONS_TABLE_NAME);

qb.setProjectionMap(sTransactionsProjectionMap);

qb.appendWhere(Transactions.ARCHIVE_FLAG + " = 0");

orderBy = Transactions.DEFAULT_SORT_ORDER;

break;

case TRANSACTION_ID:

qb.setTables(TRANSACTIONS_TABLE_NAME);

qb.setProjectionMap(sTransactionsProjectionMap);

qb.appendWhere(Transactions._ID + " = " + uri.getPathSegments().get(1));

break;

default:

throw new IllegalArgumentException(TAG + " Unknown URI " + uri);

}

if (!TextUtils.isEmpty(sortOrder)) {

orderBy = sortOrder;

}

Dacă ținem apăsat „lung” pe bugetul alocat, în cazul nostru pe „Excursie”, vom avea următoarele opțiuni:

Butonul „Șterge” va șterge bugetul alocat:

public int delete(Uri uri, String where, String[] whereArgs) {

SQLiteDatabase db = mOpenHelper.getWritableDatabase();

int count;

switch (sUriMatcher.match(uri)) {

case ACCOUNTS:

count = db.delete(ACCOUNTS_TABLE_NAME, where, whereArgs);

break;

case ACCOUNT_ID:

String id = uri.getPathSegments().get(1);

count = db.delete(ACCOUNTS_TABLE_NAME, Accounts._ID + "=" + id

+ (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : ""), whereArgs);

break;

Butonul „Setări buget” ne permite să modificăm suma alocată sau numele bugetului alocat. Codul specific acestei opțiuni este:

public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {

SQLiteDatabase db = mOpenHelper.getWritableDatabase();

int count;

switch (sUriMatcher.match(uri)) {

case ACCOUNTS:

count = db.update(ACCOUNTS_TABLE_NAME, values, where, whereArgs);

break;

case ACCOUNT_ID:

String accountId = uri.getPathSegments().get(1);

count = db.update(ACCOUNTS_TABLE_NAME, values, Accounts._ID + "=" + accountId

+ (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : ""), whereArgs);

break;

În momentul modificării sumei o să se modifice și data și ora modificării:

public void setDate(Date newDate) {

if (newDate == null) {

setDate(0);

} else {

setDate(newDate.getTime());

}

}

public void setDate(long newDate) {

if (newDate == 0) {

date = new Date();

} else {

date = new Date(newDate);

}

updateDate();

updateTime();

}

public void onDateSet(DatePicker view, int year, int month, int monthDay) {

date.setYear(year – 1900);

date.setMonth(month);

date.setDate(monthDay);

updateDate();

}

Butonul „Restart buget” ne permite realocarea sumei initiale. Suma inițială se va adăuga la suma actuală disponibilă.

Butonul „Vezi tranzacții” ne permite să vedem tranzacțiile deja efectuate.

Dacă apăsăm butonul „Adaugă tranzacții”, vom putea adăuga noi tranzacții. Codul specific editorului de tranzacții este următorul:

menu.add(0, DISCARD_ID, 0,R.string.menu_discard).setShortcut('1', 'd')

.setIcon(android.R.drawable.ic_menu_delete);

Tranzacțiile sunt alocate Bugetelor astfel:

case ACCOUNT_TRANSACTIONS:

values.put(Transactions.ACCOUNT_ID, uri.getPathSegments().get(1));

case TRANSACTIONS:

if (values.containsKey(Transactions.CREATE_DATE) == false) {

values.put(Transactions.CREATE_DATE, now);

}

if (values.containsKey(Accounts.TITLE) == false) {

values.put(Accounts.TITLE, "");

}

long transactionId = db.insert(TRANSACTIONS_TABLE_NAME, Transactions.TITLE, values);

if (transactionId > 0) {

Uri transactionUri = ContentUris.withAppendedId(Transactions.CONTENT_URI, transactionId);

getContext().getContentResolver().notifyChange(transactionUri, null);

return transactionUri;

}

break;

}

Dacă vrem să vedem tranzacțiile, să ștergem sau să să adăugam o tranzacție nouă ținem apăsat lung pe tranzacția țintă .

Codul corespunzător ștergerii unei tranzacții deja existente este următorul:

case TRANSACTIONS:

count = db.delete(TRANSACTIONS_TABLE_NAME, where, whereArgs);

break

Codul corespunzător modificării unei tranzacții deja existente este:

menu.add(0, SAVE_ID, 0, R.string.menu_save).setShortcut('0', 's').setIcon(android.R.drawable.ic_menu_save);

if (mState == STATE_EDIT) {

menu.add(0, REVERT_ID, 0, R.string.menu_revert).setShortcut('1', 'r')

.setIcon(android.R.drawable.ic_menu_revert);

menu.add(0, DELETE_ID, 0, R.string.menu_delete).setShortcut('2', 'd')

.setIcon(android.R.drawable.ic_menu_delete);

Suma totală disponibilă ne este calculată în funcție de bugetele adăugate și sumele cheltuite. Principiul de calcul și modul în care balanța ne este afișată este prezentat mai jos:

float suma = 0, spend = 0;

if (mCursor.getCount() > 0) {

mCursor.moveToFirst();

while (!mCursor.isAfterLast()) {

suma += mCursor.getFloat(PROJECTION_INDEX_AMOUNT);

spend += mCursor.getFloat(PROJECTION_INDEX_SPEND);

mCursor.moveToNext();

}

}

if (spend > 0 && suma > 0) {

float balance = suma – spend;

setTitle(getResources().getString(R.string.title_accounts_list_balance,

NumberFormat.getNumberInstance().format(balance > 0 ? balance : 0),

NumberFormat.getNumberInstance().format(suma)));

} else if (suma > 0) {

setTitle(getResources().getString(R.string.title_accounts_list_amount,

NumberFormat.getNumberInstance().format(suma)));

} else {

setTitle(getResources().getString(R.string.title_accounts_list_empty));

}

Funcția de mai jos ne returnează suma disponibilă alocată cu roșu în cazul în care ne-am depășit bugetul, cu verde în cazul în care încă mai avem fonduri de cheltuit sau cu culoarea gri un buget epuizat.

holder.amount.setText(NumberFormat.getNumberInstance().format(balance));

if (balance > 0) {

holder.hint.setText(R.string.accounts_list_hint_spent);

holder.hint.setTextColor(android.graphics.Color.GREEN);

holder.amount.setTextColor(android.graphics.Color.GREEN);

} else if (balance == 0) {

holder.hint.setVisibility(View.GONE);

holder.amount.setTextColor(android.graphics.Color.GRAY);

} else {

holder.hint.setText(R.string.accounts_list_hint_over);

holder.hint.setTextColor(android.graphics.Color.RED);

holder.amount.setTextColor(android.graphics.Color.RED);

}

} else {

holder.info.setVisibility(View.GONE);

holder.hint.setVisibility(View.GONE);

holder.amount.setText(NumberFormat.getNumberInstance().format(spend));

}

return view;

}

CAPITOLUL 4

Concluzii

Pentru că totul este pus la dispoziție fără nici un cost, Android a reușit să atragă o mulțime de tineri programatori entuziaști în direcția dezvoltării de aplicații. Codul open source oferă dezvoltatorilor o largă libertate în ceea ce privește crearea de noi aplicații sau extinderea unora deja existente.

De la aplicațiile realizate inițial doar pentru productivitate și informare, e-mail, calendar, contacte, bursă de valori și informații meteo, cererea publicului și disponibilitatea de instrumente de dezvoltare au dus la expansiunea rapidă în alte categorii, cum ar fi jocuri pentru telefoane mobile, GPS si servicii bazate pe locație, servicii bancare, achiziții de bilete pentru filme, transport etc.

Android și aplicațiile sale mobile au reușit să îmbunătățească viața utilizatorilor. Ei pot folosi televizorul, porni autovehiculul sau clima acestuia, supraveghea diferite incinte, edita un clip video sau o fotografie, să facă cumpărăturile sau să plătească facturile cu un minim de efort. Android a adus oamenii mai aproape unii față de alții cu ajutorul aplicațiilor create pentru rețele de socializare.

Aplicația prezentată, „vWallet” poate fi dezvoltată pe viitor. Utilizatorii ar putea fi scutiți de introducerea manuală a cheltuielilor. Cu ajutorul unei interfețe fiecare utilizator ar putea avea un cont ce s-ar conecta la baza de date a băncii. În urma citirii extrasului bancar aplicația ar ști ce cumpărături a făcut clientul și le-ar deduce pe acestea din sumele inițial alocate.

BIBLIOGRAFIE

http:// android.com/

http://android.com/branding.html/

http://developer.android.com/guide/index.html/

http://developer.android.com/guide/basics/what-is-android.html/

http://developer.android.com/videos/

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

http://roughlydrafted.com/

http:// ibtimes.com/evolution-android-os-g1-jelly-bean-697079#/

http://pluralsight.com/

Similar Posts