Sunteți pe pagina 1din 12

Ministerul Educației Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare,Informatica și Microelectronica
Departamentul ISA

Raport
Lucrare de laborator Nr.2
La Programarea aplicațiilor mobile
Tema:  Organiser Mobile Application (DAILY PLANNER).

A efectuat:
st. gr. SI-151 Țurcan Tudor

A verificat: Rusu Cristian


asistent universitar

Chişinău 2017

Scopul lucrării: De realizat aplicație tip Organiser pe platforma aleasă.La formarea și


proiectarea aplicațiilor sunt introduse puncte stricte,ce sunt obligatorii de respectat. La discreția
personală rămâne designul aplicațieiși API-ul/Framework-ul în care va fi dezvoltată lucrarea de
laborator #2. Componentele și structura fiecărei Activități va fi descrisă mai jos.

UI Components
Aplicația va conține minim 3 Activități de baza care vor fi numerotate în lucrare sub forma:
1. MainActivity (structura/componente)

• Calendar View (custom or default)

• Buttons (Add/Remove/Update)

• Căutare (caută conform cuvintelor cheie)


2. AddtActivity

• Data/Time controller
• Info TextBox

• Buttons

• și altele (la discreție conform specificului aplicației)


3. UpdateActivity - practic e una și aceeași activitate de la Add, doar ca completata deja.
Datele operaționale din interiorul aplicației vor fi stocate în fișier/e XML forma cărora rămâne la
discreția 
personală. (cuvinte cheie, XML Serialization).
Logical/Operational Component
Toate evenimentele și acțiunile de notificare/semnalizare (sonore/vizuale) intreprinse în
Organiser
vor fi tratate într-un serviciu aparte, care logic funcțional va extrage datele din acel fișier XML.

Mersul lucrarii:
Interfata grafica a aplicatiei este prezentata in figura 1.

Fig.1 Interfata de start a aplicatiei


Interfata prevede un „Text Edit”, butoanele „Search, Date&Time, My Tasks, Alarm Manager” si
un „Calendar View” care permite vizualizarea calendarului. Butonul Date&Time deschide o noua
activitate.Codul butonului „Date&Time”:
add = (Button)findViewById(R.id.btnAdd);

add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent neo = new Intent(MainActivity.this, AddActivity.class);
startActivity(neo);
}
});
Butonul “My Tasks” deschide o noua activitate care contine o lista de task-uri care trebuie
executate de catre utilizator. Codul butonului „My tasks”.
update = (Button) findViewById(R.id.btnEdit);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nou = new Intent(MainActivity.this, UpdateActivity.class);
startActivity(nou);
}
});

La accesarea butonului „Date&Time” se deschide o noua activitate ce contine butonul „Pick


Date/Time” (figura 2), la selectarea caruia apare mai intii Time Picker Dialog (figura 3), ulterior
apare Time Picker Dialog (figura 4).

Fig. 2 Interfata AddActivity


Butonul „Pick Date/Time” deschide un „Date Picker Dialog” care permite selectarea unei date
anumite si „Time Picker Dialog” care permite selectarea orei. La fel este prezent si un Text View
care arata data si ora curenta. Codul butonului „Pick Date/Time” pentru Date Picker Dialog si
Time Picker Dialog si pentru Text View.
Button b_pick;
TextView tv_result;
int day, month, year, hour, minute;
int dayFinal, monthFinal, yearFinal, hourFinal, minuteFinal;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);

b_pick = (Button) findViewById(R.id.btn_pick);


tv_result = (TextView) findViewById(R.id.tv_result);
b_pick.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new


DatePickerDialog(AddActivity.this, AddActivity.this,
year, month, day);
datePickerDialog.show();
}
});
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
yearFinal = i;
monthFinal = i1 +1;
dayFinal = i2;

Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new
TimePickerDialog(AddActivity.this, AddActivity.this,
hour, minute, DateFormat.is24HourFormat(this));
timePickerDialog.show();
}
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
hourFinal = i;
minuteFinal = i1;
tv_result.setText("year: " + yearFinal+ "month: " + monthFinal + "day:
" + dayFinal+
"hour: " + hourFinal + "minute: " + minuteFinal);
}
}

Fig.3 Date Picker Dialog Fig.4 Time Picker Dialog


La selectarea butonului „My Tasks” se deschide o noua activitate care contine o lista cu task-uri
pe care utiliatorul si le programeaza pentru un anumit timp (figura 5).

Fig.5 List View cu itemi inscrisi.


Activitatea mai contine un Text Edit pentru introducerea textului si butonul „Add Item” pentru
adaugarea task-ului in lista. Codul pentru „List View”care contine functiile de adaugare, citire si
salvare in lista pentru citirea itemilor dupa inchiderea si restartarea aplicatiei dar si eliminarea
unui item.
private ArrayList<String> items;
private ArrayAdapter<String> itemsAdapter;
private ListView lvItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
lvItems = (ListView) findViewById(R.id.lvItems);
items = new ArrayList<>();
readItems();
itemsAdapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, items);
lvItems.setAdapter(itemsAdapter);
setupListViewListener();
}

private void setupListViewListener() {


lvItems.setOnItemLongClickListener(
new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter,
View item, int pos, long
id) {
items.remove(pos);
itemsAdapter.notifyDataSetChanged();
writeItems();
return true;
}
});
}
private void readItems() {
File filesDir = getFilesDir();
File todoFile = new File(filesDir, "todo.txt");
try {
items = new ArrayList<>(FileUtils.readLines(todoFile));
} catch (IOException e) {
items = new ArrayList<>();
}
}

private void writeItems() {


File filesDir = getFilesDir();
File todoFile = new File(filesDir, "todo.txt");
try {
FileUtils.writeLines(todoFile, items);
} catch (IOException e) {
e.printStackTrace();
}
}

public void onAddItem(View v) {


EditText etNewItem = (EditText) findViewById(R.id.etNewItem);
String itemText = etNewItem.getText().toString();
itemsAdapter.add(itemText);
etNewItem.setText("");
writeItems();
}
}
Concluzia: La efectuarea acestei lucrari de laborator s-a facut cunostinta cu functii de salvare,
adaugare si stergere a unui element din lista. La fel a fost facuta cunostinta cu posibilatea de a
crea un dialog care contine data si timpul. A fost studiata si aplicata in practica crearea di
deschiderea unor activitati noi in cadrul aplicatiei create.
Bibliografie:
• https://developer.android.com/reference/android/app/AlarmManager.html
• https://guides.codepath.com/android/Starting-Background-Services
• https://guides.codepath.com/android/Notifications
• https://guides.codepath.com/android/Interacting-with-the-Calendar
• https://guides.codepath.com/android/Basic-Todo-App-Tutorial

Anexa A
Codul sursa pentru fisierul „activity_main.xml”
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:orientation="vertical"
tools:context="com.example.denisg.mydailyplanner.MainActivity"
android:weightSum="1">

<GridLayout
android:layout_width="350dp"
android:layout_height="50dp"
android:layout_weight="0.34">
<EditText
android:id="@+id/search_bar"
android:text=""
android:layout_width="240dp"
android:hint="Type here"
/>
<Button
android:id="@+id/search_btn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Search"
android:textAlignment="center"
tools:layout_editor_absoluteX="290dp"
tools:layout_editor_absoluteY="16dp"
/>

</GridLayout>

<CalendarView
android:id="@+id/imageView"
android:layout_width="330dp"
android:layout_height="300dp"
android:showWeekNumber="false"
/>
<Button
android:id="@+id/btnAdd"
android:layout_width="345dp"
android:layout_height="45dp"
android:text="Date&amp;Time"
tools:layout_editor_absoluteX="25dp"
/>

<Button
android:id="@+id/btnEdit"
android:layout_width="345dp"
android:layout_height="45dp"
android:text="My tasks"
tools:layout_editor_absoluteX="25dp"
tools:layout_editor_absoluteY="332dp" />

<Button
android:id="@+id/btnAlarm"
android:layout_width="345dp"
android:layout_height="45dp"
android:text="Alarm manager"
tools:layout_editor_absoluteX="23dp"
tools:layout_editor_absoluteY="441dp" />

</LinearLayout>
Anexa B
Codul sursa pentru fisierul ”MainActivity.java”
package com.example.denisg.mydailyplanner;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button add;
Button update;
Button alarm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
add = (Button)findViewById(R.id.btnAdd);

add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent neo = new Intent(MainActivity.this, AddActivity.class);
startActivity(neo);
}
});
update = (Button) findViewById(R.id.btnEdit);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nou = new Intent(MainActivity.this,
UpdateActivity.class);
startActivity(nou);
}
});

alarm = (Button) findViewById(R.id.btnAlarm);


alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nou = new Intent(MainActivity.this,
AlarmActivity.class);
startActivity(nou);
}
});
}
}
Anexa C
Codul sursa pentru fisierul “activity_add.xml”
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:orientation="vertical"
tools:context="com.example.denisg.mydailyplanner.AddActivity"
android:weightSum="1">

<TextView
android:id="@+id/tv_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAlignment="center" />

<Button
android:id="@+id/btn_pick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Pick Date/Time"
android:layout_centerHorizontal="true" />

</RelativeLayout>

Anexa D
Codul sursa pentru fisierul „AddActivity.java”
package com.example.denisg.mydailyplanner;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;

public class AddActivity extends AppCompatActivity implements


DatePickerDialog.OnDateSetListener,
TimePickerDialog.OnTimeSetListener{

Button b_pick;
TextView tv_result;
int day, month, year, hour, minute;
int dayFinal, monthFinal, yearFinal, hourFinal, minuteFinal;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);

b_pick = (Button) findViewById(R.id.btn_pick);


tv_result = (TextView) findViewById(R.id.tv_result);
b_pick.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new


DatePickerDialog(AddActivity.this, AddActivity.this,
year, month, day);
datePickerDialog.show();
}
});
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
yearFinal = i;
monthFinal = i1 +1;
dayFinal = i2;

Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new
TimePickerDialog(AddActivity.this, AddActivity.this,
hour, minute, DateFormat.is24HourFormat(this));
timePickerDialog.show();
}
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
hourFinal = i;
minuteFinal = i1;
tv_result.setText("year: " + yearFinal+ "month: " + monthFinal + "day:
" + dayFinal+
"hour: " + hourFinal + "minute: " + minuteFinal);
}
}

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