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

Elaborat: Vrlan Ion gr. TI-142


Lector asistent: Gojin Victor

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 conine pe interfaa 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 condiii:
1. De creat un push notification pe ecranul dispozitivului care se va trata peste 10s.
2. De utilizat browserul intern al dispozitivului, pentru a iniializa 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 fiierul activity_main.xml, adugm un textbox i
un buton cu cuvntul cutare. Aceste toate funcii le am plasat simplu de la seciunea Design.
Pentru a se executa din una n alta buton spre textbox sau invers am plasat identitile 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 funcia 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 selecie.
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 funciile, trebuie s fie declarate n fiierul
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 afieaz dou radio
button cu un buton de accesare. Apoi se creeaz intenia de a deschide aplicaia Camera.

Figura 3 Prezentarea butoanelor


Am creat cte o intenie din fa i din spatele camerei care ca idee s acioneze camera i s
creeze captur. i transmitem rezultatul ctre o alt funcie 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 funcia 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 intenie de transferarea fiierului ntro 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 funcii
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 intenia 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