Sunteți pe pagina 1din 9

PROIECT DISPOZITIVE ȘI APLICAȚII MOBILE

Aplicație de mesagerie

1. Introducere
Tehnologia ne-a schimbat obiceiurile, modul de lucru, relațiile interpersonale, cu alte cuvinte
ne-a schimbat modul de viață. O schimbare esențială pe care a adus-o tehnologia și pe care am
adoptat-o cu toții se referă la modul de comunicare. Dacă în trecut oamenii vorbeau la telefon
doar din casă sau de la telefoane publice și aveau grijă de impulsurile consumate, care erau
limitate, acum există multe alte moduri de comunicare, devenite din ce în ce mai ieftine, care ne
permit să discutăm și chiar să ne vedem cu persoane aflate la mii de kilometri distanță. Era
tehnologiei a adus o serie de avantaje fără de care nu mai concepem existența cum ar fi
mesageria electronica, prin care putem trimite orice, oriunde și oricând.
În cadrul acestui proiect am dezvoltat o aplicatie Android care permite utilizatorilor sa
comunice intre ei, aceasta avand anumite avantaje similare cu cele ale produselor deja existente
pe piata, si anume:
1.este gratuita; puteți trimite mesaje nelimitate fără probleme. Este necesar doar să aveți o
conexiune la internet.
2.importa contactele direct de pe dispozitivul in care este instalat.
3.poate fi folosita si cu persoane care nu au instalata aplicatia
Aplicatia poate fi utilizata de orice persoana.

2. Descriere solutie
Pentru a utiliza aplicatia este necesar ca aceasta sa fie descarcata. Urmatorul pas este
inregistrarea, unde sunt solicitate anumite informatii cu caracter personal cum ar fi nume,
prenume, tara, sex si numar de telefon. In urma inregistrarii utilizatorul se logheaza cu un user si
parola( stabilite de el). Dupa logare acesta va putea sa vada toate contactele pe care le are in
agenda Telefonica(aplicatia importandu-le automat).Principala functionalitate a aplicatiei este de
a comunica cu alte persoane prin intermediul mesajelor. Insa aplicatia mai are si alte avantaje
cum ar fi:
1.o serie de statistici legate de numarul utlizatorilor pe fiecare tara in parte(acestea putand fi
vazute si grafic)
2.google maps, prin care utlizatorul isi poate vedea locatia curenta, dar si pe cea a prietenilor
acestuia
3.backup pentru mesaje, in cazul in care acesta dezinstaleaza aplicatia
4.settings, prin intermediul careia utilizatorul poate sa schimbe datele setate initial, sa adauge
o fotografie din galleria personala si chiar sa stearga contul
5.o sectiune de info, de unde utilizatorul poate afla mai multe informatii legate de aplicatie.

3. Implementare soluție
Proiectul este structurat in mai multe activitati, fiecare fiind populate cu controale vizuale
specifice, cum ar fi: TextView, Spinner, Button, RatingBar, ImageView, RadioButton.
1. MainActivity

Contine 3 EditText si un Button. Reprezinta pagina de login a aplicatiei. In aceasta


activitate se verifica daca utlizatorul exista in baza de date. Daca exista atunci se deschide
ContactsActivity, daca nu atunci utilizatorul se poate inregistra in
RegistrationActivity.Pentru a implementa aceasta functionaliate am folosit
startActivityForResult, deoarece vreau ca atunci cand utlizatorul revine din
RegistrationActivity componentele sa fie populate cu datele introduse in acea activitate.Pt
a verifica daca utlizatorul exista in baza de date am interogat tabela user_reg folosind
urmatorul querry:

@Query("SELECT * FROM users_reg WHERE username = :username AND


password = :password and nr_telefon=:phone")
UserRegistration getUserByCredentials(String username, String
password, String phone);
2. RegistrationActivity
Aceasta activitate este populata cu TextView, Spinner, RadioButton si un Button.
Datele introduse de utlizator sunt preluate din controale si stocate in baza de date. Pentru
aceasta am creat o clasa care sa reprezinte modelul dupa care va fi creata tabela user_reg,
apoi am implementat interfata UserRegistrationDao, unde am implementat operatiile
DML(Insert, Update, Delete, Select).
De asemenea userii sunt stocati si in Firebase.

3. ContactsActivity
In aceasta activitate am importat contactele din telefon si le am adaugat intr -un
listview pentru care am implementat un adapter personalizat.

Pentru a importa contactele am avut nevoie de urmatorele permisiuni:


<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Codul folosit pentru import a fost urmatorul:

listView = findViewById(R.id.list);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
checkSelfPermission(Manifest.permission.READ_CONTACTS) !=
PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
PERMISSIONS_REQUEST_READ_CONTACTS);
}else {
cursor =
getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
null, null, null);
startManagingCursor(cursor);
String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID};
int[] to = {android.R.id.text1, android.R.id.text2};
int a[] = new int[]{R.id.tv_cursoradapter, R.id.tv_cursoradapter2};
CustomAdapter adapter = new CustomAdapter(this, R.layout.customadapter, cursor,
new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER}, a);
listView.setAdapter(adapter);
}

Fiecare item din listview duce intr-o activitate noua, si anume MessageActivity. Prin
inetrmediul intentului am transmis numele fiecarui contact in activiatatea urmatoare.
4. MessageActivity

In aceasta activitate mesajele trimise de utilizator dintr-un EditText sunt stocate in


baza de date locala. Acestea sunt afisate intr-un TextView. Persistena mesajelor in
TextView este realizata prin intermediul fisierelor de preferinte.
In cadrul aplicatiei am implementat un meniu cu mai multe activitati reprezentand
optiunile:
1.InfoActivity
Sunt prezentate informatii generale despre aplicatie.Controlerele vizuale folosite sunt
ImageView ,TextView si RatingBar.

2. SentMessagesActivity
Reprezinta backup ul mesajelor trimise. In aceasta activitate am folosit operatii
asincrone+acces resurse externe + prelucrare fisiere JSON.

3. SettingsActivity

Utilizatorului ii este permis sa-si actualizeze contul, modificarile fiind vizibile si in


baza de date. In aceasta activitate am implementat operatiile de update, delete dar si
preluare imagini din galerie. Pt update utilizatorul este redirectionat in
RegistrationActivity. Pentru a recunoaste utilizatorul logat am folosit un Bundle in care am
pus informatiile despre utilizator.
Intent intent=new
Intent(getApplicationContext(),RegistrationActivity.class);
Bundle bundle1=new Bundle();
bundle1.putParcelable(USER_LOGGED_KEY,userLoggedSettings);
intent.putExtras(bundle1);
startActivityForResult(intent,USER_LOGGED_CODE);

4. MapsActivity
Arata locatia curenta a utlizatorului pe harta.

5. GraficActivity
Prezinta prin intermediul unui Pie Chart statistici referitoare la numarul
utilizatorilor din fiecare tara. Graficul a fost realizat prin intermediul urmatoarei
biblioteci:
implementation 'com.github.razerdp:AnimatedPieView:1.2.6'

Pe langa aceste activitati au mai fost implemenatate si altele cum ar fi:


DefaultMessageActivity(preia mesaje default dintr-un listview),Logout, AdminActivity(preia
utilizatorii din Firebase si ii afiseaza intr-un RecyclerView).
4. Avantaje Android Studio
De vreme ce Android este un produs open-source, producătorii având posibilitatea de a-l
modifica în mod gratuit, nu există configurații hardware sau software standard. Totuși, Android
implementează următoarele funcționalități:

 stocare - folosește SQLite, o bază de date relațională ce utilizează resurse puține


 conectivitate - suportă GSM/CDMA, GPRS, EDGE, 3G, IDEN, EV-DO, UMTS,
Bluetooth (inclusiv A2DP si AVRCP), WiFi, LTE, WiMAX
 WiFi Direct - tehnologie care permite aplicațiilor să se descopere și să se interconecteze
 mesagerie - atât SMS cât și MMS
 navigare pe Internet - bazat pe motorul open source pentru navigare WebKit impreună
cu motorul JavaScript de la Chrome V8 suportând HTML5 și CSS3
 multimedia - suportă formatele H.263, H.264 (într-un container 3GP sau MP4), MPEG-4
SP, AMR, AMR-WB (într-un container 3GP), AAC, HE-AAC (într-un container MP4
sau 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF si BMP
 grafică - 2D optimizată, 3D (OpenGL ES)
 multi-tasking - permite rularea de aplicații cu mai multe fire de execuție
 legătură la Internet - suportă partajarea conexiunilor la Internet ca punct de distribuție cu
fir / fără fir
 proiectele se bazeazza pe arhitectura Gradle
 ofera template-uri
 vizualizarea elementelor grafice, scrise in cod XML direct in mediul de dezvoltare

5. Concluzie
In opinia mea, cea mai buna solutie tehnica pentru implementarea unei astfel de
aplcatii implica urmatoarele:
 Implementare real-time
 Cloud si sincronizarea datelor
 Confidentialitate
 Securitatea datelor

6. Bibliografie
1. https://codelabs.developers.google.com/android-training/
2. https://stackoverflow.com/
3. https://firebase.google.com/docs
4. https://developer.android.com/docs

S-ar putea să vă placă și