Sunteți pe pagina 1din 9

Ministerul Educaţiei, Culturii si Cercetarii al Republicii

Moldova Universitatea Tehnică a Moldovei Facultatea


Calculatoare Informatica si Microelectronica
Departamentul ISA

RAPORT Lucrarea de laborator Nr.1


la disciplina: Programarea aplicatiilor mobile
Tema: UI View Model

A efectuat: st. gr. TI

A verificat: asist. univ. Rusu Cristian

Chişinău 2017
1. Scopul și obiectivele lucrărei de laborator.
Obiective: Dezvoltarea unei aplicații pe una din platformele stabilite la Laboratorul Nr.0 , utilizând mediul
de dezvoltare corespunzător acesteia.
Scopul: De prezentat o aplicație ce rulează pe un dispozitiv sau emulator, ce va conține pe interfața sa,
următoarele elemente:
1. 4 butoane (ce vor executa condițiile de mai jos)
2. 1 TextBox (pentru input)
3. 2 Radio butoane (pentru camera față, spate)

Condiții
De utilizat componentele UI pentru a realiza următoarele condiții:
• de creat un push notification pe ecranul dispozitivului care se va trata peste 10s;
• de utilizat browserul intern al dispozitivului, pentru a inițializa o căutare în Google, conform
cuvântului cheie introdus în TextBox;
• de rulat evenimentul de lucru a camerei frontale și/sau spate la selectarea unuia din cele 2 radio
butoane propuse;
• de tratat evenimentul de captare a pozei executate cu una din cele doua camere, și de afișat într-o altă
Activitate;
• un punct la dorința voastră (sau un brainstorming).

2. Îndeplinirea condițielor lucrărei de laborator.


2.1 MainActivity

Îndeplinirea lucrărei de laborator a început prin crearea design-ului activităței principale (fig1).Activitatea
principal reprezintă meniul din care vor fi accesate funcțiele implementate în program, și conține conform
condiției 4 butoane, 1 textbox și 2 radio butoane.
Figura 1. Design-ul activității principale

MainActivity.java conține metodele ce vor fi efectuate cînd unul din butoane este apăsat, iar cu
ajutorul la Switch și RadioGroup se verifică și se focuseaza unul din cele două radio butoane.
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch (view.getId()) {
case R.id.front_camera:
if (checked) {
cameraId = frontCameraId;
}
break;

case R.id.back_camera:
if (checked) {
cameraId = backCameraId;
}
break;
}
}

La apăsarea butonului Push Notification va apărea o notificarea peste 10 secunde.Notificarea va


conține o mică imagine, un titlu și un text în interiorul său, iar la apăsarea pe notificarea se va deschide
aplicațiea noastră[1].
public void pushNotification(View view) {
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
………………………..
}

Următorul buton este cel de Web Search, la apăsarea butonului dat se va deschide Google Search și
va căuta pe internet cuvîntul introdus în EditText[2].
public void googleSearch(View view) {
EditText editText = (EditText) findViewById(R.id.edit_text); Intent
intent = new Intent(Intent.ACTION_WEB_SEARCH);
…………………….

}
}

Butonul Camera împreuna cu cele două radio butoane aprind o activitate nouă cu un preview la
cameră[3] si cu posibilitatea de a face fotografii, radio buton ne trebuie pentru a customiza camera noastră, la
alegerea unuia din radio butoane se va schimba și camera noastra (front/back).Radio butoanele se trateaza în
switch-ul arătat mai sus și returneaza variabila cameraId ce conține informațiea despre ce cameră trebuie
deschisă, cea frontală sau cea de la spate.La apăsarea butonului camera se va deschide o activitate nouă[4].
public void takePhoto(View view) {
Intent intent = new Intent(this, CameraActivity.class);
intent.putExtra("CAMERA_ID", cameraId);
startActivity(intent);
}
Butonul Set Wallpaper va schimba backgroundul la aplicațiea noastră, fotografiea de la background
va fi cea care utilizatorul o va efectua cu camera din aplicație, iar dacă nu este o fotografie nouă, se va utiliza
o fotografie anterioară.
public void setWallpaper(View view){
ImageView imageWallpaper = (ImageView) findViewById(R.id.wallpaper);
Bitmap bitmap = null;
try {
……………………………………………….

2.2 CameraActivity

Activity_camera.xml conține design-ul activității noastre, design-ul este format din un SurfaceView
pentru a vedea preview la camera noastră.
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="captureImage"
/>

CameraActivity.java conține metodele ce sunt necesare pentru lucrul corect al camerei noastre, și
pozitionarea ei corectă. La început se tratează SurfaceView pentru a crea mediul pentru camera noastră.
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
Toast.makeText(this, "Press the screen to take picture ", Toast.LENGTH_LONG).show();
surfaceHolder.addCallback(this);

La crearea SurfaceView se afisează camera noastră ce va folosi cameraID primită din MainActivity.
public void surfaceCreated(SurfaceHolder holder)
{ try {
camera = Camera.open(cameraID);
setCameraDisplayOrientation(CameraActivity.this, cameraID, camera);
} catch (RuntimeException e) {
System.err.println(e);
return;
}

La apăsarea pe SurfaceView se va efectua metoda captureImage în interiorul căruia se tratează


metoda PictureCallback pentru salvarea imaginei noastre.

public void captureImage(View v) throws IOException, InterruptedException


{ deletePhoto();
camera.takePicture(null, null, jpegCallback);
Toast.makeText(this, "Photo taked ", Toast.LENGTH_LONG).show();
}

Metoda onPictureTaken se efectuează cînd poza este efectuată și deschide o activitate nouă ce conține
fotografiea luată de noi.

jpegCallback = new Camera.PictureCallback() {


public void onPictureTaken(byte[] data, Camera camera)
{ FileOutputStream outStream = null;
try {
outStream = new
FileOutputStream(String.format("/sdcard/CameraPhoto1.jpg"));
outStream.write(data);
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e)
{ e.printStackTrace();
} finally {
}
refreshCamera();
startActivity(photoIntent);
}
};
}

Pentru tratarea corectă a fotografiei și a camerei noastre, trebuie săi adăugăm o metodă ce va schimba
orientarea imaginei în dependență de poziționarea smartphonului în spațiu.
public static void setCameraDisplayOrientation(Activity activity,
int cameraId, android.hardware.Camera
camera) {
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0;
break;
case Surface.ROTATION_90:
degrees = 90;
break;
case Surface.ROTATION_180:
degrees = 180;
break;
case Surface.ROTATION_270:
degrees = 270;
break;
}

int result;
int rotate;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
{ result = (info.orientation + degrees) % 360;
result = (360 - result) % 360;

} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}

camera.setDisplayOrientation(result);
Camera.Parameters params = camera.getParameters();
camera.setParameters(params);
}
Pentru a reînnoi poza noastră din intii ea trebuie ștearsă, metoda deletePhoto se va trăta în metoda
captureImage pentru a fi siguri că fotografiea va fi reînoită și aplicațiea va avea poză mereu.

private void deletePhoto() {


File file = new File("/sdcard/CameraPhoto1.jpg");
file.delete();
CameraActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File("//sdcard/CameraPhoto1.jpg")))); }

2.3 PhotoPreview

După ce camera noastră efectuează o fotografie ea se va afișa într-o activitate nouă pentru ca
utilizatorul să poată vizualiza poza obținută. Design-ul activităței date conține un ImageView pentru a afișa
poza și un TextView pentru a deferenția activitățile din aplicație.
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_content"
android:scaleType="fitXY" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Picture Preview"/>

Imaginea noastră este luată din memoriea internă al smartphonului și transformată în bitmap pentru a
putea fi introdusă în aplicațiea noastră.
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),
Uri.parse("file:////sdcard/CameraPhoto1.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
ImageView imagePhoto = (ImageView) findViewById(R.id.image_view);
imagePhoto.setImageBitmap(bitmap);

}
Concluzii

Efectuînd lucrarea de laborator am studiat multe posibilități noi ale sistemului de operare Android și
am folosit cunoștințele obținute pentru a crea aplicațiea cerută în condițiel lucrărei. Pentru a obține aplicațiea
cerută am căutat pe mai multe forumuri si site-uri oficiale ale sistemului de operare Android ceea ce ne va
ajuta în continuare la lucru și la efectuarea lucrărilor de laborator ce urmează. Cel mai greu a fost
implementarea camerei deoarece mult depinde de versiunea sistemului de operare instalată pe smartphone.
Laboratorul dat mi-a oferit posibilitatea de a cunoaște mai bine cum funcționeaza smartphonul nostru și
aplicațiile în el.
Bibliografie

1. Notifications.[ Resursă electronică ] Regim de acces:


https://developer.android.com/guide/topics/ui/notifiers/notifications.html

2. Common Intents.[ Resursă electronică ] Regim de acces:


https://developer.android.com/guide/components/intents-common.html

3. Android Switch camera then button is clicked[ Resursă electronică ] Regim de acces:
http://stackoverflow.com/questions/16765527/android-switch-camera-when-button-clicked

4. Intent [ Resursă electronică ] Regim de acces:


https://developer.android.com/reference/android/content/Intent.html

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

  • Pam 4
    Pam 4
    Document4 pagini
    Pam 4
    violina
    Încă nu există evaluări
  • Lab 2 Pam
    Lab 2 Pam
    Document5 pagini
    Lab 2 Pam
    Augusta Bucataru
    Încă nu există evaluări
  • Pam Examen
    Pam Examen
    Document7 pagini
    Pam Examen
    Daniil
    Încă nu există evaluări
  • PAM Lab 1
    PAM Lab 1
    Document6 pagini
    PAM Lab 1
    Vladislav Crivenco
    Încă nu există evaluări
  • Pam Exam
    Pam Exam
    Document2 pagini
    Pam Exam
    Culea Constantin
    Încă nu există evaluări
  • Lab 1 Pam
    Lab 1 Pam
    Document6 pagini
    Lab 1 Pam
    Augusta Bucataru
    Încă nu există evaluări
  • Lab2 PAM
    Lab2 PAM
    Document12 pagini
    Lab2 PAM
    Ion Popescu
    Încă nu există evaluări
  • PAm Examen-1
    PAm Examen-1
    Document12 pagini
    PAm Examen-1
    Eric Semeniuc
    Încă nu există evaluări
  • Lab 6 Somipp
    Lab 6 Somipp
    Document5 pagini
    Lab 6 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Lab 2 Somipp
    Lab 2 Somipp
    Document5 pagini
    Lab 2 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Lab 1 PPE
    Lab 1 PPE
    Document4 pagini
    Lab 1 PPE
    King 79
    Încă nu există evaluări
  • Lab 1 Somipp
    Lab 1 Somipp
    Document7 pagini
    Lab 1 Somipp
    TîmburŞtefan
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • Lab 3 Ppe
    Lab 3 Ppe
    Document8 pagini
    Lab 3 Ppe
    Anastasia Gherman
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Somipp Linux 4 UTM
    Somipp Linux 4 UTM
    Document4 pagini
    Somipp Linux 4 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Lab 3 Somipp
    Lab 3 Somipp
    Document14 pagini
    Lab 3 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Somipp Linux 2 UTM
    Somipp Linux 2 UTM
    Document7 pagini
    Somipp Linux 2 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • SOMIPP7
    SOMIPP7
    Document3 pagini
    SOMIPP7
    Damean Alexandra
    Încă nu există evaluări
  • SOMIPP
     SOMIPP
    Document6 pagini
    SOMIPP
    Damean Alexandra
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • SOMIPP Lab5
    SOMIPP Lab5
    Document4 pagini
    SOMIPP Lab5
    X3 KTO
    Încă nu există evaluări
  • SOMIPP Lab 5
    SOMIPP Lab 5
    Document5 pagini
    SOMIPP Lab 5
    Augusta Bucataru
    Încă nu există evaluări
  • SOMIPP Lab6
    SOMIPP Lab6
    Document4 pagini
    SOMIPP Lab6
    Dan
    Încă nu există evaluări
  • SOMIPPRaspunsuri
    SOMIPPRaspunsuri
    Document82 pagini
    SOMIPPRaspunsuri
    Urmanschi Mihail
    Încă nu există evaluări
  • BDC 9b
    BDC 9b
    Document5 pagini
    BDC 9b
    Victor Noroc
    Încă nu există evaluări
  • Examen PPe
    Examen PPe
    Document11 pagini
    Examen PPe
    crismaruion
    100% (2)
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • Somipp Lab4
    Somipp Lab4
    Document3 pagini
    Somipp Lab4
    Raducan Alina
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document4 pagini
    Lab 3
    Rosca Doinita
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • Examen TIDPP
    Examen TIDPP
    Document3 pagini
    Examen TIDPP
    Rosca Doinita
    Încă nu există evaluări
  • PAM Lab6
    PAM Lab6
    Document31 pagini
    PAM Lab6
    Ion Cornea
    Încă nu există evaluări
  • LL3 (Amoo)
    LL3 (Amoo)
    Document6 pagini
    LL3 (Amoo)
    Eric Semeniuc
    Încă nu există evaluări
  • Lab. 3
    Lab. 3
    Document5 pagini
    Lab. 3
    Cristina Florea
    Încă nu există evaluări
  • Lab2 (TS)
    Lab2 (TS)
    Document7 pagini
    Lab2 (TS)
    Zeul Hriscei
    Încă nu există evaluări
  • Examen PW
    Examen PW
    Document71 pagini
    Examen PW
    DorinRotaru
    Încă nu există evaluări
  • Lab.6 FC
    Lab.6 FC
    Document3 pagini
    Lab.6 FC
    Cristina Florea
    Încă nu există evaluări
  • Iepuras Daniel Lab 1 TS
    Iepuras Daniel Lab 1 TS
    Document4 pagini
    Iepuras Daniel Lab 1 TS
    DanuIepuras
    Încă nu există evaluări
  • Laborator 1 ASO
    Laborator 1 ASO
    Document4 pagini
    Laborator 1 ASO
    Жан Ганган
    Încă nu există evaluări
  • Laborator1 TMPS
    Laborator1 TMPS
    Document4 pagini
    Laborator1 TMPS
    Ion Cornea
    Încă nu există evaluări
  • Lab. 2
    Lab. 2
    Document7 pagini
    Lab. 2
    Cristina Florea
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document22 pagini
    Lab 1
    Nicoletta Ciudin
    Încă nu există evaluări
  • Lab2 La Programare in Windows
    Lab2 La Programare in Windows
    Document12 pagini
    Lab2 La Programare in Windows
    Andrei Barbalat
    Încă nu există evaluări
  • Laborator NR.2
    Laborator NR.2
    Document9 pagini
    Laborator NR.2
    Daniil
    Încă nu există evaluări
  • SOMIPP Labs
    SOMIPP Labs
    Document107 pagini
    SOMIPP Labs
    Ionel Boaghe
    Încă nu există evaluări
  • Dutca Alexandru CR-182 Lab3 PCD
    Dutca Alexandru CR-182 Lab3 PCD
    Document5 pagini
    Dutca Alexandru CR-182 Lab3 PCD
    Dutca Alexandru
    Încă nu există evaluări
  • MMC2 Modulul2
    MMC2 Modulul2
    Document16 pagini
    MMC2 Modulul2
    ViorelRotari
    Încă nu există evaluări
  • Lab4 SAV
    Lab4 SAV
    Document3 pagini
    Lab4 SAV
    Zeul Hriscei
    Încă nu există evaluări
  • SQL Lab1
    SQL Lab1
    Document27 pagini
    SQL Lab1
    Ion Şuiu
    Încă nu există evaluări
  • TAP Lab4
    TAP Lab4
    Document10 pagini
    TAP Lab4
    Cristian Batir
    Încă nu există evaluări
  • Lab 2 AMOO
    Lab 2 AMOO
    Document6 pagini
    Lab 2 AMOO
    Gheorghe Felicia
    Încă nu există evaluări
  • Somipp SOMIPP5
    Somipp SOMIPP5
    Document6 pagini
    Somipp SOMIPP5
    Damean Alexandra
    Încă nu există evaluări
  • Lab 1 ASO
    Lab 1 ASO
    Document6 pagini
    Lab 1 ASO
    Cristian
    100% (1)
  • PAM Lab 1 Rotaru Dan
    PAM Lab 1 Rotaru Dan
    Document3 pagini
    PAM Lab 1 Rotaru Dan
    Dan
    Încă nu există evaluări
  • Lab 1 Docx
    Lab 1 Docx
    Document6 pagini
    Lab 1 Docx
    AlexandruBotnaru
    Încă nu există evaluări
  • A1
    A1
    Document11 pagini
    A1
    Amarfii Sergiu
    Încă nu există evaluări
  • PAM Lab 4 Rotaru Dan
    PAM Lab 4 Rotaru Dan
    Document5 pagini
    PAM Lab 4 Rotaru Dan
    Dan
    Încă nu există evaluări
  • Documentatie Aplicatie
    Documentatie Aplicatie
    Document12 pagini
    Documentatie Aplicatie
    Iuli Sirbu
    Încă nu există evaluări
  • Tema: Algoritmul de Criptografie RSA: Functionare
    Tema: Algoritmul de Criptografie RSA: Functionare
    Document2 pagini
    Tema: Algoritmul de Criptografie RSA: Functionare
    Ion Popescu
    Încă nu există evaluări
  • Plia 7
    Plia 7
    Document53 pagini
    Plia 7
    Ion Popescu
    Încă nu există evaluări
  • Lab 2
    Lab 2
    Document2 pagini
    Lab 2
    Ion Popescu
    Încă nu există evaluări
  • Plia 4 141
    Plia 4 141
    Document55 pagini
    Plia 4 141
    Ion Popescu
    Încă nu există evaluări
  • Else Fcim Utm MD PDF
    Else Fcim Utm MD PDF
    Document2 pagini
    Else Fcim Utm MD PDF
    Ion Popescu
    Încă nu există evaluări
  • HGJHB
    HGJHB
    Document19 pagini
    HGJHB
    Ion Popescu
    Încă nu există evaluări
  • Indrumar TAP
    Indrumar TAP
    Document120 pagini
    Indrumar TAP
    Ion Popescu
    Încă nu există evaluări
  • Lab 7
    Lab 7
    Document8 pagini
    Lab 7
    Ion Popescu
    Încă nu există evaluări
  • Testarea Software
    Testarea Software
    Document6 pagini
    Testarea Software
    Ion Popescu
    Încă nu există evaluări
  • Exemplu Raport
    Exemplu Raport
    Document27 pagini
    Exemplu Raport
    Ion Popescu
    Încă nu există evaluări
  • Lista Subiecte Examen
    Lista Subiecte Examen
    Document1 pagină
    Lista Subiecte Examen
    Ion Popescu
    Încă nu există evaluări