Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВИК.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.06 Mб
Скачать
  1. Заключение

Продукт получился весьма необычным и оригинальным. Его аналогов не много. Нужно потратить много времени, чтобы найти схожий функционал.

Подсвеченный разными цветами циферблат не только красиво смотрится, но и вызывает у человека ассоциацию, связанную с предстоящим событием, а текстовое поле конкретизирует с каким именно.

В будущем планируется расширить функционал. Добавить возможность изменять и удалять существующие заметки. Также планируется предоставить возможность пользователь создавать более одной записи. Будет добавлен другой способ взаимодействия с программой, больше не придется запускать ее при каждой необходимости, достаточно будет вывести виджет на рабочий стол.

  1. Источники литературы

Книги:

  1. Голощапов А. Google Android: Программирование для мобильных устройств. — СПб.: БХВ-Петербург, 2010. — 448 с. 

  1. Донн Фелкер. Android: Разработка приложений для чайников. — М.: Диалектика, 2011. — 336 с. 

  1. Коматинэни С., Маклин Д., Хэшими С. Google Android: Программирование для мобильных устройств. — 1-е изд. — СПб.: Питер, 2011. — 736 с.

  1. Роджерс Р., Ломбардо Д. Android. Разработка приложений. — М.: ЭКОМ Паблишерз, 2010. — 400 с. 

  1. Сатия Коматинени, Дэйв Маклин. Android 4 для профессионалов. Создание приложений для планшетных компьютеров и смартфонов. — М.: Вильямс, ???. — 880 с. 

Электронные ресурсы:

  1. http://ru.wikipedia.org/wiki/Android - статья про OC Android в электронной энциклопедии Wikipedia.

  1. http://developer.alexanderklimov.ru/android/ - курс по программированию на языке Java под ОС Android

  1. Приложения

    1. Приложение 1 (Программный код)

MainActivity.java (Главный экран):

public class MainActivity extends Activity {

String text;

String datetext;

String timetext;

// Значения для задания

int year, month, day;

int hour, minute, hour1,minute1, sec;

//Значения реального времени

int syear, smonth, sday;

int shour, sminute;

int color;

int ind;

int f = 0;

int tdate = 0;

int tt = 0;

int stop;

TextView tv1;

TextView tvInfo;

TextView tv2;

ImageView iv1;

Timer timer;

SQLiteDatabase sqdb;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv1 = (TextView) findViewById(R.id.tvClock);

tv2 = (TextView) findViewById(R.id.tvFQuest);

tvInfo = (TextView) findViewById(R.id.tvInfo);

iv1 = (ImageView) findViewById(R.id.imageView1);

//----------------------------- -Таймер-------------------------------------

timer = new Timer();

timer.schedule(new TimerTask() {

public void run() {

timerTick();

}

}, 0, 1000);

//-------------------Получение данных из базы--------------------------------------

ClockDB sqh = new ClockDB(this);

SQLiteDatabase sqdb = sqh.getWritableDatabase();

Cursor cursor = sqdb.query(ClockDB.TABLE_NAME, new String[] {ClockDB._ID, ClockDB.text, ClockDB.color , ClockDB.time , ClockDB.data , ClockDB.year , ClockDB.month ,

ClockDB.day , ClockDB.minute , ClockDB.hour , ClockDB.minute1 , ClockDB.hour1},

null, // The columns for the WHERE clause

null, // The values for the WHERE clause

null, // don't group the rows

null, // don't filter by row groups

null // The sort order

);

while (cursor.moveToNext()) {

int id = cursor.getInt(cursor.getColumnIndex(ClockDB._ID));

text = cursor.getString(cursor.getColumnIndex(ClockDB.text));

timetext = cursor.getString(cursor.getColumnIndex(ClockDB.time));

datetext = cursor.getString(cursor.getColumnIndex(ClockDB.data));

color = cursor.getInt(cursor.getColumnIndex(ClockDB.color));

year = cursor.getInt(cursor.getColumnIndex(ClockDB.year));

month = cursor.getInt(cursor.getColumnIndex(ClockDB.month));

day = cursor.getInt(cursor.getColumnIndex(ClockDB.day));

minute = cursor.getInt(cursor.getColumnIndex(ClockDB.minute));

hour = cursor.getInt(cursor.getColumnIndex(ClockDB.hour));

minute1 = cursor.getInt(cursor.getColumnIndex(ClockDB.minute1));

hour1 = cursor.getInt(cursor.getColumnIndex(ClockDB.hour1));

}

cursor.close();

sqdb.close();

sqh.close();

}

//-------------------Обработчик таймера-------------------------------------------

private void timerTick() {

this.runOnUiThread(updateDisplay);}

private Runnable updateDisplay = new Runnable() {

public void run() {

final Calendar c = Calendar.getInstance();

shour = c.get(Calendar.HOUR_OF_DAY);

sminute = c.get(Calendar.MINUTE);

syear = c.get(Calendar.YEAR);

smonth = c.get(Calendar.MONTH);

sday = c.get(Calendar.DAY_OF_MONTH);

sec = c.get(Calendar.SECOND);

tv1.setText(

new StringBuilder()

.append(pad(shour)).append(":")

.append(pad(sminute)).append(":")

.append(pad(sec)));

stop = (hour1-shour)*3600 + (minute1-(sminute-1))*60 + (60 - sec);

if ((syear == year) && (smonth == month) && (sday == day)) tdate = 1; else tdate = 0;

if ((shour >= hour) && (sminute >= minute)) tt = 1;

if ((shour >= hour1) && (sminute >= minute1) || (shour == hour1) && (sminute >= minute1) || (shour > hour1) && (sminute <= minute1))

{

tt = 0;

iv1.setImageResource(R.drawable.oval);

tv2.setText(" ");

f = 0;

}

if ((tt == 1) && (f != stop) && (tdate == 1))

{

if (color == 1) iv1.setImageResource(R.drawable.oval1);

if (color == 2) iv1.setImageResource(R.drawable.oval2);

if (color == 3) iv1.setImageResource(R.drawable.oval3);

if (color == 4) iv1.setImageResource(R.drawable.oval4);

if (color == 5) iv1.setImageResource(R.drawable.oval5);

if (color == 6) iv1.setImageResource(R.drawable.oval6);

tv2.setText(text);

f++;

}

}

};

//-------------------Корректировка времени-----------------------------------------

private Object pad(int hour2) {

if (hour2 >= 10)

return String.valueOf(hour2);

else

return "0" + String.valueOf(hour2);

}

//----------------------------Создание меню-----------------------------------------------

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

switch (item.getItemId())

{

case R.id.mhelp:

Help();

return true;

case R.id.mabout:

About();

return true;

case R.id.mexit:

Exit();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

public void Help()

{

Intent helpIntent = new Intent(MainActivity.this, HelpActivity.class);

startActivity(helpIntent);

}

public void About()

{

Intent aboutIntent = new Intent(MainActivity.this, AboutActivity.class);

startActivity(aboutIntent);

}

public void Exit()

{

finish();

}

//-------------------------События OnClick------------------------------------------------

public void OnQuest (View v) {

Intent saveIntent = new Intent(MainActivity.this, QuestActivity.class);

int ind = 1;

saveIntent.putExtra("i", ind);

startActivity(saveIntent);

finish();

}

public void onNew (View v) {

Intent intent = new Intent(MainActivity.this, NewQuest.class);

startActivity(intent);

finish();

}

}

NewQuest.java (Создание новой записи):

public class NewQuest extends Activity {

int year, month, day;

int hour = -1, minute;

int shour, sminute;

int hour1, minute1;

int color;

int id;

int ttext = 2;

int ttime = 2;

int tdate = 2;

int tcolor = 2;

String nmonth;

static final private int newdata = 0;

static final private int newtime = 0;

static final private int newcolor = 0;

int ind=0;

TextView tvData;

TextView tvTime;

TextView Ot;

TextView Do;

TextView tvColor;

EditText main;

SQLiteDatabase sqdb;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_new_quest);

tvData = (TextView) findViewById(R.id.tvData);

tvTime = (TextView) findViewById(R.id.tvTime);

tvColor = (TextView) findViewById(R.id.tvColor);

main = (EditText) findViewById(R.id.etMain);

}

//-------------------------Запуск активности для получения данных-------------------------

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == newdata) {

if (resultCode == RESULT_OK) {

day = data.getIntExtra("day", day);

month = data.getIntExtra("month", month);

year = data.getIntExtra("year", year);

if (month == 0) nmonth = "Января"; if (month == 6) nmonth = "Июля";

if (month == 1) nmonth = "Февраля"; if (month == 7) nmonth = "Августа";

if (month == 2) nmonth = "Марта"; if (month == 8) nmonth = "Сентября";

if (month == 3) nmonth = "Апреля"; if (month == 9) nmonth = "Октября";

if (month == 4) nmonth = "Мая"; if (month == 10) nmonth = "Ноября";

if (month == 5) nmonth = "Июня"; if (month == 11) nmonth = "Декабря";

if (day != 0) tvData.setText(new StringBuilder().append(day).append(" ")

.append(nmonth).append(" ").append(year).append(" года."));

}

}

if (requestCode == newtime) {

if (resultCode == RESULT_OK) {

hour = data.getIntExtra("hour", hour);

minute = data.getIntExtra("minute", minute);

hour1 = data.getIntExtra("hour1", hour1);

minute1 = data.getIntExtra("minute1", minute1);

if (hour != -1) tvTime.setText(new StringBuilder() .append("с") .append(pad(hour)) .append(":") .append(pad(minute)) .append(" до ") .append(pad(hour1)) .append(":") .append(pad(minute1)));

}

}

if (requestCode == newcolor) {

if (resultCode == RESULT_OK) {

color = data.getIntExtra("color", color);

if (color == 1)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color1);

}

if (color == 2)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color2);

}

if (color == 3)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color3);

}

if (color == 4)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color4);

}

if (color == 5)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color5);

}

if (color == 6)

{

tvColor.setText("ОБРАЗЕЦ ");

tvColor.setBackgroundResource(R.color.color6);

}

}

}

}

//-------------------------------Корректировка времени------------------------------------

private static String pad(int c) {

if (c >= 10)

return String.valueOf(c);

else

return "0" + String.valueOf(c);

//------------------------------Создание меню---------------------------------------------

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.new_quest, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

switch (item.getItemId())

{

case R.id.mhelp:

Help();

return true;

case R.id.mabout:

About();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

public void Help()

{

Intent helpIntent = new Intent(NewQuest.this, HelpActivity.class);

startActivity(helpIntent);

}

public void About()

{

Intent aboutIntent = new Intent(NewQuest.this, AboutActivity.class);

startActivity(aboutIntent);

}

//------------------------------События OnClick-------------------------------------------

public void onData (View v) {

Intent questionIntent = new Intent(NewQuest.this,DataActivity.class);

startActivityForResult(questionIntent, newdata);

tvData.setText("");

}

public void onTime (View v) {

Intent questionIntent1 = new Intent(NewQuest.this,TimeActivity.class);

startActivityForResult(questionIntent1, newtime);

tvTime.setText("");

}

public void onColor (View v) {

Intent questionIntent2 = new Intent(NewQuest.this,ColorActivity.class);

startActivityForResult(questionIntent2, newcolor);

}

public void onBack1(View v) {

Intent back = new Intent(NewQuest.this,MainActivity.class);

startActivity(back);

finish();

}

public void onSave (View v) {

if (main.getText().toString().equals("")) ttext = 0; else ttext = 1;

if (day == 0) tdate = 0; else tdate = 1;

if (hour == -1) ttime = 0; else ttime = 1;

if (color == 0) tcolor = 0; else tcolor = 1;

if ((ttext ==1) && (tdate ==1) && (ttime ==1) && (tcolor ==1))

{

ClockDB sqh = new ClockDB(this);

SQLiteDatabase sqdb = sqh.getWritableDatabase();

ContentValues cv = new ContentValues();

cv.put(ClockDB.text, main.getText().toString());

cv.put(ClockDB.time, tvTime.getText().toString());

cv.put(ClockDB.data, tvData.getText().toString());

cv.put(ClockDB.color, color);

cv.put(ClockDB.day, day);

cv.put(ClockDB.year, year);

cv.put(ClockDB.month, month);

cv.put(ClockDB.minute, minute);

cv.put(ClockDB.hour, hour);

cv.put(ClockDB.minute1, minute1);

cv.put(ClockDB.hour1, hour1);

sqdb.insert(ClockDB.TABLE_NAME, null, cv);

Intent saveIntent = new Intent(NewQuest.this,QuestActivity.class);

ind = 1;

saveIntent.putExtra("i", ind);

startActivity(saveIntent);

finish();

}

else

{

Intent intent = new Intent(NewQuest.this, ErrorActivity.class);

id = 1;

intent.putExtra("ttext", ttext);

intent.putExtra("tdate", tdate);

intent.putExtra("ttime", ttime);

intent.putExtra("tcolor", tcolor);

intent.putExtra("id", id);

startActivity(intent);

}

}

}

QuestActivity.java (Просмотр существующих заданий):

public class QuestActivity extends Activity {

int ind = 0;

TextView questtext;

String text = "text";

String timetext = "time";

String datetext = "date";

int year, month, day;

int hour, minute, hour1, minute1;

int color;

SQLiteDatabase sqdb;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_quest);

questtext = (TextView) findViewById(R.id.questtext);

//--------------------------------------Чтение из БД------------------------------------------------

ClockDB sqh = new ClockDB(this);

SQLiteDatabase sqdb = sqh.getWritableDatabase();

Intent i = getIntent();

ind = i.getIntExtra("i", ind);

if (ind == 1) {

Cursor cursor = sqdb.query(ClockDB.TABLE_NAME, new String[] {ClockDB._ID, ClockDB.text, ClockDB.color , ClockDB.time , ClockDB.data , ClockDB.year , ClockDB.month ,

ClockDB.day , ClockDB.minute , ClockDB.hour , ClockDB.minute1 , ClockDB.hour1},

null, null, null, null, null);

while (cursor.moveToNext()) {

int id = cursor.getInt(cursor.getColumnIndex(ClockDB._ID));

text = cursor.getString(cursor.getColumnIndex(ClockDB.text));

timetext = cursor.getString(cursor.getColumnIndex(ClockDB.time));

datetext = cursor.getString(cursor.getColumnIndex(ClockDB.data));

color = cursor.getInt(cursor.getColumnIndex(ClockDB.color));

year = cursor.getInt(cursor.getColumnIndex(ClockDB.year));

month = cursor.getInt(cursor.getColumnIndex(ClockDB.month));

day = cursor.getInt(cursor.getColumnIndex(ClockDB.day));

minute = cursor.getInt(cursor.getColumnIndex(ClockDB.minute));

hour = cursor.getInt(cursor.getColumnIndex(ClockDB.hour));

minute1 = cursor.getInt(cursor.getColumnIndex(ClockDB.minute1));

hour1 = cursor.getInt(cursor.getColumnIndex(ClockDB.hour1));

if (color == 1) questtext.setBackgroundResource(R.color.color1);

if (color == 2) questtext.setBackgroundResource(R.color.color2);

if (color == 3) questtext.setBackgroundResource(R.color.color3);

if (color == 4) questtext.setBackgroundResource(R.color.color4);

if (color == 5) questtext.setBackgroundResource(R.color.color5);

if (color == 6) questtext.setBackgroundResource(R.color.color6);

questtext.setText("Текст: " + text + "\nДата: " + datetext + "\nВремя: " + timetext);

}

cursor.close();

sqdb.close();

sqh.close();

}

}

//--------------------------------------Создание меню-----------------------------------------------

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.quest, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

switch (item.getItemId())

{

case R.id.mhelp:

Help();

return true;

case R.id.mabout:

About();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

public void Help()

{

Intent helpIntent = new Intent(QuestActivity.this, HelpActivity.class);

startActivity(helpIntent);

}

public void About()

{

Intent aboutIntent = new Intent(QuestActivity.this, AboutActivity.class);

startActivity(aboutIntent);

}

//----------------------------------События onClick-------------------------------------------------

public void onBack(View v) {

Intent back = new Intent(QuestActivity.this,MainActivity.class);

startActivity(back);

finish();

}

}