Проектирование и разработка мобильного приложения на платформе Android для поиска ближайших пунктов обмена валют
Анализ требований к функциональности и разработка приложения, направленного на поиск пунктов обмена валют. Анализ вопросов получения данных от сервера и их локальное хранение. Описание опыта взаимодействия пользователя с финальным вариантом приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.08.2017 |
Размер файла | 690,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
int distanceColIndex = placeCursor.getColumnIndex("distance");
int usdIdColIndex = placeCursor.getColumnIndex("id_usd");
int eurIdColIndex = placeCursor.getColumnIndex("id_eur");
int gbpIdColIndex = placeCursor.getColumnIndex("id_gbp");
int buyColIndex;
int sellColIndex;
int dateColIndex;
do {
Cursor rateCursor;
HashMap<String, Place.Rate> rates = new HashMap<>();
if (placeCursor.getInt(usdIdColIndex) != 0) {
String selection = "id = ?";
String[] selectionArgs = new String[]{((Integer) placeCursor.getInt(usdIdColIndex)).toString()};
rateCursor = db.query(Const.RATE_TABLE, null, selection, selectionArgs, null, null, null);
buyColIndex = rateCursor.getColumnIndex("buy");
sellColIndex = rateCursor.getColumnIndex("sell");
dateColIndex = rateCursor.getColumnIndex("date");
rateCursor.moveToFirst();
rates.put("USD", new Place.Rate(
rateCursor.getFloat(buyColIndex),
rateCursor.getFloat(sellColIndex),
rateCursor.getString(dateColIndex)
));
rateCursor.close();
}
if (placeCursor.getInt(eurIdColIndex) != 0) {
String selection = "id = ?";
String[] selectionArgs = new String[]{((Integer) placeCursor.getInt(eurIdColIndex)).toString()};
rateCursor = db.query(Const.RATE_TABLE, null, selection, selectionArgs, null, null, null);
buyColIndex = rateCursor.getColumnIndex("buy");
sellColIndex = rateCursor.getColumnIndex("sell");
dateColIndex = rateCursor.getColumnIndex("date");
rateCursor.moveToFirst();
rates.put("EUR", new Place.Rate(
rateCursor.getFloat(buyColIndex),
rateCursor.getFloat(sellColIndex),
rateCursor.getString(dateColIndex)
));
rateCursor.close();
}
if (placeCursor.getInt(gbpIdColIndex) != 0) {
String selection = "id = ?";
String[] selectionArgs = new String[]{((Integer) placeCursor.getInt(gbpIdColIndex)).toString()};
rateCursor = db.query(Const.RATE_TABLE, null, selection, selectionArgs, null, null, null);
buyColIndex = rateCursor.getColumnIndex("buy");
sellColIndex = rateCursor.getColumnIndex("sell");
dateColIndex = rateCursor.getColumnIndex("date");
rateCursor.moveToFirst();
rates.put("GBP", new Place.Rate(
rateCursor.getFloat(buyColIndex),
rateCursor.getFloat(sellColIndex),
rateCursor.getString(dateColIndex)
));
rateCursor.close();
}
PlacesUtilities.addPlaceToAllPlacesList(new Place(
rates,
placeCursor.getString(bankColIndex),
placeCursor.getString(pointColIndex),
placeCursor.getString(timetableColIndex),
placeCursor.getString(addressColIndex),
new LatLng(placeCursor.getFloat(latitudeColIndex), placeCursor.getFloat(longitudeColIndex)),
placeCursor.getInt(distanceColIndex)
)
);
} while (placeCursor.moveToNext());
} else {
}
placeCursor.close();
activity.onPlacesReceived();
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
this.close();
}
public boolean isDatabaseEmpty(){
boolean isDatabaseEmpty = true;
db = getWritableDatabase();
db.beginTransaction();
try {
cursor = db.query("places", null, null, null, null, null, null);
if(cursor != null) {
if (cursor.moveToFirst()) isDatabaseEmpty = !isDatabaseEmpty;
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
cursor.close();
this.close();
}
return isDatabaseEmpty;
}
public void clearDatabase(){
db = getWritableDatabase();
db.beginTransaction();
try{
db.delete(Const.PLACESTABLE, null, null);
db.delete(Const.RATE_TABLE, null, null);
db.setTransactionSuccessful();
}finally {
db.endTransaction();
}
}
}
Класс MainActivity
public class MainActivity extends BaseActivity {
private DataController mController;
private int currentScreen;
public static String currentRate;
public static int currentIntent;
public static int currentFilterMode;
public static int currentSortOrder;
public static int currentLocalityId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SharedPreferences sharedPreferences = getSharedPreferences("Prefs", MODE_PRIVATE);
if (sharedPreferences.getAll().size() != 0){
currentScreen = sharedPreferences.getInt("currentScreen", 0);
}
else {
currentScreen = Const.SCREEN_MAP;
}
showScreen(currentScreen);
}
private void showScreen() {
switch (currentScreen) {
case Const.SCREEN_LIST :
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, ListFragment.newInstance(this), Const.FRAGMENT_TAG_LIST).commit();
break;
case Const.SCREEN_MAP :
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, MapFragment.newInstance(this), Const.FRAGMENT_TAG_MAP).commit();
break;
}
}
public void showPlaceDetails(Place place) {
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, PlaceDetailsFragment.newInstance(activity, place), Const.FRAGMENT_TAG_PLACE).commit();
}
@Override
public void onSyncronizationError() {
setProgressAnimationVisibility(false);
Snackbar snackbar = Snackbar
.make(findViewById(R.id.layout_activity_launch), getString(R.string.snack_connection_error), Snackbar.LENGTH_INDEFINITE)
.setAction(getString(R.string.snack_retry), new View.OnClickListener() {
@Override
public void onClick(View view) {
setProgressAnimationVisibility(true);
request.allPlacesRequest();
}
});
snackbar.show();
}
@Override
protected void onStop() {
SharedPreferences sharedPreferences = getSharedPreferences("Prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("currentScreen", currentScreen);
editor.putInt("currentIntent", currentIntent);
editor.putString("currentRate", currentRate);
editor.putInt("currentSortOrder", currentSortOrder);
editor.putInt("currentLocalityId", currentLocalityId);
editor.apply();
super.onStop();
}
/*…*/
}
Класс MapFragment
public class MapFragment extends Fragment implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
private GoogleMap mMap;
private BaseActivity activity;
private IconGenerator iconGenerator;
public MapFragment newInstance(BaseActivity activity) {
MapFragment fragment = new MapFragment();
fragment.activity = activity;
return fragment;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initMap();
}
private void initMap(){
final SupportMapFragment fragment = SupportMapFragment.newInstance();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
fragment.getMapAsync(this);
}
public void showPlaces(ArrayList<Place> places) {
for (Place place: places) {
final MarkerOptions markerOptions = new MarkerOptions()
.position(place.getLatlng())
.anchor(0.39f, 0.98f)
.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon("", IconGenerator.IconYellow)));
Marker marker = mMap.addMarker(markerOptions);
marker.setTag(place);
}
}
@Override
public boolean onMarkerClick(Marker marker) {
((MainActivity) activity).showPlaceDetails((Place)marker.getTag());
return true;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnMarkerClickListener(this);
}
}
Класс ListFragment
public class ListFragment extends Fragment{
private BaseActivity activity;
private View view;
private RecyclerView recyclerView;
private RecyclerView.Adapter listAdapter;
private int listType;
public static ListFragment newInstance(BaseActivity activity){
ListFragment listFragment = new ListFragment();
listFragment.activity = activity;
listFragment.listType = Const.LIST_PLACES;
return listFragment;
}
public static ListFragment newInstance(BaseActivity activity, int listType){
ListFragment listFragment = new ListFragment();
listFragment.activity = activity;
listFragment.listType = listType;
return listFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
switch (listType){
case Const.LIST_PLACES:
case Const.LIST_LOCALITIES_MAIN:
view = inflater.inflate(R.layout.fragment_list, container, false);
break;
case Const.LIST_LOCALITIES_LAUNCH:
view = inflater.inflate(R.layout.fragment_list_localities, container, false);
break;
}
return view;
}
@Override
public void onStart() {
populateList();
super.onStart();
}
public void populateList(){
if (recyclerView == null){
recyclerView = (RecyclerView)view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(activity));
}
if (listAdapter == null){
switch (listType){
case Const.LIST_PLACES:
listAdapter = new RecyclerViewAdapter(activity);
break;
case Const.LIST_LOCALITIES_LAUNCH:
case Const.LIST_LOCALITIES_MAIN:
List<String> localities = Arrays.asList(activity.getResources().getStringArray(R.array.lacalities_names));
Collections.sort(localities);
listAdapter = new LocalitiesListAdapter(activity,
Arrays.asList(activity.getResources().getStringArray(R.array.lacalities_names)),
new ArrayList<>(localities));
break;
}
} else {
listAdapter.notifyDataSetChanged();
}
recyclerView.setAdapter(listAdapter);
}
}
Приложение 2. Адрес репозитория
https://github.com/andreikulpin/CashMe
Размещено на Allbest.ru
...Подобные документы
Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.
дипломная работа [1,0 M], добавлен 11.07.2014Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Проектирование удобного приложения для комфортной навигации по файлам облачного хранилища в одном файловом менеджере. Выбор интегрированной среды разработки. Выбор инструментов для визуализации приложения. Выбор средств отслеживания HTTPзапросов.
курсовая работа [3,6 M], добавлен 16.07.2016Разработка приложения для проверки использования времен глаголов в английском языке. Создание базы данных. Анализ используемых средств для реализации автоматического разбора текста. Проектирование мобильного приложения с помощью диаграмм деятельности.
дипломная работа [2,6 M], добавлен 13.09.2017Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.
дипломная работа [1,5 M], добавлен 22.03.2018Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.
дипломная работа [1,6 M], добавлен 17.06.2017Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.
курсовая работа [4,8 M], добавлен 28.04.2014Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.
курсовая работа [376,6 K], добавлен 13.09.2017Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.
дипломная работа [1,2 M], добавлен 04.02.2016Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.
дипломная работа [1,5 M], добавлен 09.11.2016Изучение существующих подходов к использованию компьютерных игр в образовательном процессе. Разработка и реализация проекта игрового обучающего приложения на мобильной платформе. Выбор платформы и средств реализации игрового обучающего приложения.
дипломная работа [3,4 M], добавлен 12.08.2017Создание приложения для получения информации о расписании движения междугороднего транспорта Владимирской области. Параметры совместимости приложения с различными версиями Android. Схема взаимодействия между классами. Описание внешнего вида интерфейса.
контрольная работа [2,5 M], добавлен 17.02.2016Разработка приложения "Калькулятор" для подсчитывания количества символов или букв в арабском тексте. Проектирование программной системы, определение функциональных требований к приложению. Алгоритм разработки модульной структуры мобильного приложения.
презентация [853,9 K], добавлен 08.04.2019Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017Обзор существующих популярных программ для просмотра погоды на ОС Android. Операционные системы современных смартфонов. Ключевые особенности Android, технология Java. Разработка программной части, выбор языка, описание алгоритма, ее логической структуры.
курсовая работа [911,5 K], добавлен 16.04.2014Анализ российского рынка мобильных приложений. Мобильное приложение как новый канал коммуникации с целевой аудиторией. Этапы создания мобильного приложения. План продвижения мобильного приложения в сети Интернет. Бесплатные инструменты продвижения.
дипломная работа [1,6 M], добавлен 23.06.2016Изучение языков программирования PHP, SQL, C++, HTML. Рассмотрение правил запуска и использования локального сервера Denwer. Составление технического задания по разработке программного продукта. Описание создаваемого мобильного и веб-приложения.
курсовая работа [212,4 K], добавлен 07.04.2015