Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Выбор программных и аппаратных средств ⇐ ПредыдущаяСтр 2 из 2
Для написания проекта был выбран язык Java. Данный выбор объясняется простатой изучения данного языка и наличием подробного справочного материала. Этот язык похож на C#. Приятной особенностью является указание о наличии ошибки до компиляции. Также связка Java иEclipseSDK является свободно распространяемым продуктом и позволяет создавать программы без ограничения с дальнейшим запуском на большинстве устройствах. Т.к. сложностей в освоении языка практически не возникло, на написание первой программы, типа “HelloWorld ”, было потрачено несколько дней.
Тестовая программа
В программе HelloDroidпри нажатии на элемент ImageButtonпостепенно меняется картинка и надпись:
publicvoidonClick(View v){ droid++; if ((droid>0)&&(droid<4)) { tvDroid3.setText("Hello Droid!"); } if ((droid>5)&&(droid<9)) { tvDroid3.setText("Stop!"); imgbtn.setImageResource(R.drawable.baddroid); } if ((droid>10)&&(droid<14)) { tvDroid3.setText("Please, stop!!!"); imgbtn.setImageResource(R.drawable.baddroid); } if ((droid>15)&&(droid<19)) { tvDroid3.setText("I am not kidding!"); imgbtn.setImageResource(R.drawable.baddroid); }
А также в меню был пункт, позволяющий изменить цвет фона на один из 5 случайно выбранных:
publicvoidreColor() { color = 0 + r.nextInt(5 + 1); if (color == 1) {RelativeLayout.setBackgroundResource(R.color.gray); imgbtn.setBackgroundResource(R.color.gray);} if (color == 2) {RelativeLayout.setBackgroundResource(R.color.pink); imgbtn.setBackgroundResource(R.color.pink);} if (color == 3) {RelativeLayout.setBackgroundResource(R.color.blue); imgbtn.setBackgroundResource(R.color.blue);} if (color == 4) {RelativeLayout.setBackgroundResource(R.color.yellow); imgbtn.setBackgroundResource(R.color.yellow);} if (color == 5) {RelativeLayout.setBackgroundResource(R.color.background_color); imgbtn.setBackgroundResource(R.color.background_color);} }
Проектирование План выполнения работы
Диаграмма Ганта
Тестирование и отладка Проводимые тесты Были проведены следующие виды тестов: 1) Автономное тестирование Было проведено тестирование методом черного и белого ящика. Результаты тестирования методом черного ящика:
2) Адаптационное тестирование Программа была проверена на нескольких устройствах с разной версией ОС Android. И различными разрешениями экрана.
3) Приемочное тестирование Продуктом пользовались несколько человек в течении трех дней. Было обнаружено несколько ошибок и они были незамедлительно устранены.
4) Инсталляционное тестирование Программа была установлена и удалена 10 раз. За это время ошибок не было обнаружено
ЗАКЛЮЧЕНИЕ Продукт получился весьма необычным и оригинальным. Его аналогов не много. Нужно потратить много времени, чтобы найти схожий функционал. Подсвеченный разными цветами циферблат не только красиво смотрится, но и вызывает у человека ассоциацию, связанную с предстоящим событием, а текстовое поле конкретизирует с каким именно. В будущем планируется расширить функционал. Добавить возможность изменять и удалять существующие заметки. Также планируется предоставить возможность пользователь создавать более одной записи. Будет добавлен другой способ взаимодействия с программой, больше не придется запускать ее при каждой необходимости, достаточно будет вывести виджет на рабочий стол. Источники литературы Книги: 1) Голощапов А. GoogleAndroid: Программирование для мобильных устройств. — СПб.: БХВ-Петербург, 2010. — 448 с.
2) Донн Фелкер. Android: Разработка приложений для чайников. — М.: Диалектика, 2011. — 336 с.
3) Коматинэни С., Маклин Д., Хэшими С. GoogleAndroid: Программирование для мобильных устройств. — 1-е изд. — СПб.: Питер, 2011. — 736 с.
4) Роджерс Р., Ломбардо Д. Android. Разработка приложений. — М.: ЭКОМПаблишерз, 2010. — 400 с.
5) СатияКоматинени, Дэйв Маклин. Android 4 для профессионалов. Создание приложений для планшетных компьютеров и смартфонов. — М.: Вильямс, ???. — 880 с.
Электронные ресурсы: 1) http://ru.wikipedia.org/wiki/Android - статья про OCAndroidв электронной энциклопедии Wikipedia.
2) http://developer.alexanderklimov.ru/android/ - курс по программированию на языке Java под ОС Android
Приложения Приложение 1 (Программный код) MainActivity.java (Главныйэкран):
publicclassMainActivityextends Activity {
String text; String datetext; String timetext; // Значениядлязадания intyear, month, day; inthour, minute, hour1,minute1, sec; //Значенияреальноговремени intsyear, smonth, sday; intshour, sminute; intcolor; intind; intf = 0; inttdate = 0; inttt = 0; intstop; TextViewtv1; TextViewtvInfo; TextViewtv2; ImageViewiv1; Timer timer; SQLiteDatabasesqdb;
@Override protectedvoidonCreate(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(newTimerTask() { publicvoidrun() { timerTick(); }
}, 0, 1000);
//-------------------Получениеданныхизбазы--------------------------------------
ClockDBsqh = newClockDB(this); SQLiteDatabasesqdb = 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()) { intid = 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();
}
//-------------------Обработчиктаймера-------------------------------------------
privatevoidtimerTick() { this.runOnUiThread(updateDisplay);}
private Runnable updateDisplay = new Runnable() { publicvoid 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( newStringBuilder() .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; elsetdate = 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) returnString.valueOf(hour2); else return"0" + String.valueOf(hour2); }
//----------------------------Созданиеменю-----------------------------------------------
@Override publicbooleanonCreateOptionsMenu(Menu menu) { MenuInflaterinflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); returntrue; }
@Override publicbooleanonOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { caseR.id.mhelp: Help(); returntrue; caseR.id.mabout: About(); returntrue; caseR.id.mexit: Exit(); returntrue; default: returnsuper.onOptionsItemSelected(item); } }
publicvoid Help() { Intent helpIntent = newIntent(MainActivity.this, HelpActivity.class); startActivity(helpIntent); }
publicvoid About() { Intent aboutIntent = newIntent(MainActivity.this, AboutActivity.class); startActivity(aboutIntent); }
publicvoid Exit() { finish(); }
//-------------------------СобытияOnClick------------------------------------------------
publicvoidOnQuest (View v) { Intent saveIntent = newIntent(MainActivity.this, QuestActivity.class); intind = 1; saveIntent.putExtra("i", ind); startActivity(saveIntent); finish();
}
publicvoidonNew (View v) { Intent intent = newIntent(MainActivity.this, NewQuest.class); startActivity(intent); finish();
}
}
NewQuest.java (Созданиеновойзаписи): publicclassNewQuestextends Activity {
intyear, month, day; inthour = -1, minute; intshour, sminute; inthour1, minute1; intcolor; intid; intttext = 2; intttime = 2; inttdate = 2; inttcolor = 2; String nmonth; staticfinalprivateintnewdata = 0; staticfinalprivateintnewtime = 0; staticfinalprivateintnewcolor = 0; intind=0; TextViewtvData; TextViewtvTime; TextViewOt; TextViewDo; TextViewtvColor; EditTextmain;
SQLiteDatabasesqdb;
@Override protectedvoidonCreate(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 protectedvoidonActivityResult(intrequestCode, intresultCode, 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(newStringBuilder().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(newStringBuilder() .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); } } }
}
//-------------------------------Корректировкавремени------------------------------------
privatestatic String pad(int c) { if (c >= 10) returnString.valueOf(c); else return"0" + String.valueOf(c);
//------------------------------Созданиеменю---------------------------------------------
@Override publicbooleanonCreateOptionsMenu(Menu menu) { MenuInflaterinflater = getMenuInflater(); inflater.inflate(R.menu.new_quest, menu); returntrue; }
@Override publicbooleanonOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { caseR.id.mhelp: Help(); returntrue; caseR.id.mabout: About(); returntrue; default: returnsuper.onOptionsItemSelected(item); } }
publicvoidHelp() { Intent helpIntent = newIntent(NewQuest.this, HelpActivity.class); startActivity(helpIntent); }
publicvoid About() { Intent aboutIntent = newIntent(NewQuest.this, AboutActivity.class); startActivity(aboutIntent); }
//------------------------------СобытияOnClick-------------------------------------------
publicvoidonData (View v) { Intent questionIntent = newIntent(NewQuest.this,DataActivity.class); startActivityForResult(questionIntent, newdata); tvData.setText("");
}
publicvoidonTime (View v) { Intent questionIntent1 = newIntent(NewQuest.this,TimeActivity.class); startActivityForResult(questionIntent1, newtime); tvTime.setText("");
}
publicvoidonColor (View v) { Intent questionIntent2 = newIntent(NewQuest.this,ColorActivity.class); startActivityForResult(questionIntent2, newcolor);
}
publicvoid onBack1(View v) { Intent back = newIntent(NewQuest.this,MainActivity.class); startActivity(back); finish(); } publicvoidonSave (View v) { if (main.getText().toString().equals("")) ttext = 0; elsettext = 1; if (day == 0) tdate = 0; elsetdate = 1; if (hour == -1) ttime = 0; elsettime = 1; if (color == 0) tcolor = 0; elsetcolor = 1; if ((ttext ==1) && (tdate ==1) && (ttime ==1) && (tcolor ==1)) { ClockDBsqh = newClockDB(this); SQLiteDatabasesqdb = sqh.getWritableDatabase(); ContentValues cv = newContentValues(); 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 = newIntent(NewQuest.this,QuestActivity.class); ind = 1; saveIntent.putExtra("i", ind); startActivity(saveIntent); finish(); } else { Intent intent = newIntent(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 (Просмотрсуществующихзаданий): publicclassQuestActivityextends Activity {
intind = 0; TextViewquesttext; String text = "text"; String timetext = "time"; String datetext = "date"; intyear, month, day; inthour, minute, hour1, minute1; intcolor;
SQLiteDatabasesqdb;
@Override protectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quest); questtext = (TextView) findViewById(R.id.questtext);
//--------------------------------------ЧтениеизБД------------------------------------------------
ClockDBsqh = newClockDB(this); SQLiteDatabasesqdb = 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()) { intid = 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 publicbooleanonCreateOptionsMenu(Menu menu) { MenuInflaterinflater = getMenuInflater(); inflater.inflate(R.menu.quest, menu); returntrue; }
@Override publicbooleanonOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { caseR.id.mhelp: Help(); returntrue; caseR.id.mabout: About(); returntrue; default: returnsuper.onOptionsItemSelected(item); } }
publicvoid Help() { Intent helpIntent = newIntent(QuestActivity.this, HelpActivity.class); startActivity(helpIntent); }
publicvoid About() { Intent aboutIntent = newIntent(QuestActivity.this, AboutActivity.class); startActivity(aboutIntent); }
//----------------------------------События onClick-------------------------------------------------
publicvoidonBack(View v) { Intent back = newIntent(QuestActivity.this,MainActivity.class); startActivity(back); finish();
}
}
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 181. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |