Проектирование и разработка мобильного приложения на платформе 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.