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