Sunteți pe pagina 1din 8

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

Facultatea Calculatoare Informatic i Microelectronic


Catedra Automatica i Tehnologii Informaionale

RAPORT
Lucrarea Nr.1
Tema: UI Kit

Chiinu 2016

Tema: UI Kit Lucrarea Nr.1


Obiective : Dezvoltarea unei aplicaii pe una din platformele stabilite la Laboratorul Nr.0 ,
utiliznd mediul de dezvoltare corespunztor acesteia.
Scopul:
De prezentat o aplicaie ce ruleaz pe un dispozitiv sau emulator, ce va con ine pe interfa a sa,
urmtoarele elemente:
1.

4 butoane (ce vor executa condiiile de mai jos)

2.

1 TextBox (pentru input)

3.

2 Radio butoane (pentru camera fa, spate)

Condiii:
De utilizat componentele UI pentru a realiza urmtoarele condi ii:
1.

De creat un push notification pe ecranul dispozitivului care se va trata peste 10s.

2.

De utilizat browserul intern al dispozitivului, pentru a ini ializa o cutare n Google,


conform cuvntului cheie introdus n TextBox.

3.

De rulat evenimentul de lucru a camerei frontale i/sau spate la selectarea unuia din
cele 2 radio butoane propuse.

4.

de tratat evenimentul de captare a pozei executate cu una din cele doua camere, i
de afiat ntr-o alt Activitate

5.

este un punct la dorina voastr (sau un brainstorming)

Am creat un New Project cu denumirea temei UI Kit, apoi am ales platforma de android API 21
pentru a se combina cu telefonul meu. Am adugat o activitate pentru telefon i am ales Emty
Activity. Astfel am creat proiectul pentru laboratorul 1.
1.Push Notification
Deschid mapa cu proiectul pe care l-am creat i caut mapa Res i apoi caut mapa Layout, unde
dm de fiierul Activity_main.xml. Alegem seciunea design i adugm un button cu
identitatea notifi. Am creat n mainActivity.java identitatea butonului notifi. Am preluat funcia de
notificare de pe sit-ul developer.android.com referitor la crearea unei notificri simple.
public void Notification(){
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.notification_icon);
mBuilder.setContentTitle("Notificarea mea");
mBuilder.setContentText("Prima conditie");
Notification notifcation = mBuilder.build();

NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);


nm.notify(1, notifcation);
}

A doua parte a condiiei este de crearea unui buton n care s fie executat peste un interval de
10 secunde. Pentru a crea executarea butonului notifi
notifi.setOnClickListener(new View.OnClickListener()

Funcia s-a creat singur apsnd Alt+Enter, n aceasta am plasat un timer Handler pentru a
putea porni funcia dup 10 secunde.
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Notification();
}
},10000);

n figura 1 este reprezentat apariia notificrii, dup executarea butonului de notificare. Este redat
un Titlul, cu o mic descriere i icon-ul notificrii.

Figura 1 Reprezentarea notificri.

2. O cutare n Google.
Pentru a nceput ne ducem n mapa Layout n fi ierul activity_main.xml, adugm un textbox i
un buton cu cuvntul cutare. Aceste toate func ii le am plasat simplu de la sec iunea Design.
Pentru a se executa din una n alta buton spre textbox sau invers am plasat identit ile una de la
alta.
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/eCauta"
android:layout_toStartOf="@+id/cauta" />
<Button
android:text="Cauta"
android:layout_width="wrap_content"

android:layout_height="wrap_content"
android:id="@+id/cauta"
android:layout_alignBottom="@+id/eCauta"
android:layout_alignParentEnd="true" />

n fiierul principal Java am denumit resursele butonului i editText. Apoi am creat un butonul de
lansarea cu cuvntului cheie + link de cutare pe google ntr-un browser la alegere.
bCautare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "https://www.google.com/search?q="+tCautare.getText().toString();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});

S-a utilizat intent-ul pentru a lansa o aplicaie extern pentru a vizualiza linkul pe care eu l-am plasat.
Activitatea se pornete de ndat la apsarea butonului de cutare.
Mai jos v prezint n figura 2.1 bara de cutare din aplicaie, iar n figura 2.2 este deschiderea unui
browser cu rezultatul cutrii n Google.

Figura 2.1 Bara de cutare.

Figura 2.2 Rezultatul cutrii.

3.Evenimentul de lucru a Camerei


Am nceput evident cu crearea interfeei n Layout, acolo am creat un buton simplu cu denumirea
camerei iar apoi am creat doua radio butoane care au func ia de a se porni camera din spate i
alta din fa. Selectm radio butonul iar apoi lansm camera de la buton. Acum revenim la
scrierea funciei pentru camer aici am preluat codul camerei de pe sit-ul oficial. Am creat
butonul bCamera i am plasat dup execuie s plasez radio butoanele dup selec ie.
Mai nti de toate am creat in fiierul activity_main.xml dou radio butoane i cu buton de
selectare din radiobutoanele. Dup ce am denumit func iile, trebuie s fie declarate n fi ierul
MainActivity, radio butoanele i butonul de lansare a camerei.
Butonul de lansare a camerei :
Button Photo = (Button) findViewById(R.id.btnPhoto);
Button fbutton = (Button) findViewById(R.id.fbutton);
Button rbutton = (Button) findViewById(R.id.rbutton);

Deci n figura 3 sunt prezentate fixarea butoanelor n fereastra principal. Care afi eaz dou
radio button cu un buton de accesare. Apoi se creeaz inten ia de a deschide aplica ia Camera.

Figura 3 Prezentarea butoanelor


Am creat cte o intenie din fa i din spatele camerei care ca idee s ac ioneze camera i s
creeze captur. i transmitem rezultatul ctre o alt func ie ActivityResult();
rbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}
});
fbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(i, CAMERA_PIC_REQUEST);
}
});

Pentru ca utilizatorul s aleag funcia camerei am plasat dou radio butoane de alegere care
poate selecta Camera din Spate i din Fa. n func ia dat am declarat i RadioGrup
responsabil de selectare a fiecrei opiuni.
private void addListenerOnButton() {
final RadioGroup radiocamera = (RadioGroup) findViewById(R.id.radiocamera);
Button btnPhoto = (Button) findViewById(R.id.btnPhoto);
final RadioButton radiofront = (RadioButton) findViewById(R.id.radiofront);
btnPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radiocamera.getCheckedRadioButtonId();
RadioButton radiocamerabutton = (RadioButton) findViewById(selectedId);
if (radiocamerabutton == radiofront) {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(i, CAMERA_PIC_REQUEST);
} else {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA_PIC_REQUEST);
}
}

Din funcia de mai sus pe nume addListenerOnButton(); este adugat n funcia principal
prin care se lanseaz aplicaia dat.
n proiectul dat din mapa Manifest n fiierul Androidmanifest.xml i am plasat legtura dintre
soft i hardware pentru permisiune accesrii camerei frontale i din spate. Acest este verificat de
pe telefonul meu android.
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />

4.Transferarea capturii de imagine ntr-o nou activitate.

Am creat o funcie cu rezultatul crerii capturii, pentru aceasta am salvat n formatul bitmap iar
apoi am salvat acest format ntr-un fiier, iar apoi am creat o inten ie de transferarea fi ierului
ntr-o nou activitate.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bitmap thumbnail = null;
if (requestCode == CAMERA_PIC_REQUEST) {
if (resultCode == RESULT_OK) {
thumbnail = (Bitmap) data.getExtras().get("data");
Intent i = new Intent(this, Main2Activity.class);
i.putExtra("name", thumbnail);
startActivity(i);
}
}
}

Pentru a crea o nou activitate am creat o nou fiier din categoria Activity, i apoi am selectat
EmtyActivity de aici am obinut dou fiiere i s-a scris automat activitatea aceasta n fiierul Manifest.
Am plasat mai nti de toate un buton Back i un ImageView cu plasarea capturii de la camer.
Pentru butonul Back am scris o funcie care trebuie s se rentoarc la vechia activitate. i evident am
plasta variabila butonului Back.
Button back = (Button) findViewById(R.id.backbutton);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Main2Activity.this, MainActivity.class);
startActivity(i);
}
});

Iar pentru imaginea pe care am transferat-o n activitatea aceasta funcia este urmtoarea:
ImageView view = (ImageView) findViewById(R.id.ivPhoto);
Bitmap bitmap = getIntent().getExtras().getParcelable("name");
view.setImageBitmap(bitmap);

Se preia fiierul din Intetul de la prima activitate se plaseaz intentul n aceast aceasta activitate i are
loc citire fiierului. Rezultatul capturii v voi prezenta n figura 4.

Figura 4 Capturarea imaginei

Concluzia:

n urma efecturii acestei lucrri de laborator am realizat sarcinile de a crea 4 funcii. Toate aceste func ii
le am scris aparte avnd fiecare structura aparte. Prima elaborarea unei notificri unde am lucrat cu
notificarea am avut probleme cu timer-ul. Apoi am realizat cutarea ntr-un n google cu inten ia de a alege
browserul pe care dorete s-l aleag. Am realizat cum creez o camer i n urma acestui laborator am
realizat cum este mai uor s structurm funciile de executare. Apoi am creat coordonarea dintre una sau
mai multe activiti, cu transmitere de informaie sau cu accesarea.
Biografia:
-

https://www.tutorialspoint.com/android/
https://developer.android.com
https://www.raywenderlich.com/category/android
www.javatpoint.com/android-tutorial