Информационный инструмент для отображения конфликтов и беспорядков
Описание методики для создания информационного инструмента для отображения конфликтов и беспорядков. Разработка программного продукта на базе ОС Android для отображения мест различных конфликтов и событий в Африке и Азии, а также информации о них.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.08.2020 |
Размер файла | 3,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ГЛАВА 1.Анализ предметной области
1.1 Постановка задачи
1.2 Практическое применение
1.3 Обзор аналогичных продуктов
ГЛАВА 2.Проектирование системы
2.1 Выбор программных инструментов
2.2 Архитектура
ГЛАВА 3.Программная реализация
3.1 Модули приложения
3.2 Функционал
3.3 Тестирование
3.4 Варианты развития приложения
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Мобильные приложения настолько изменили жизнь людей, что сегодня уже сложно представить хотя бы один день без использования смартфона. Для многих простых и повседневных вещей - календарь, калькулятор, будильник, и т.п. - были созданы приложения, которые сильно упрощают жизнь человека.
Смартфоны и мобильные приложения стали неотъемлемой частью нашего образа жизни. Согласно многочисленным исследованиям, в среднем человек проводит в своем телефоне 5 и более часов.
Многие люди не успевают посмотреть новости по телевизору, и приложения, предоставляющие информацию о последних событиях в мире, становятся незаменимым инструментом для них.
Индустрия мобильных приложений постоянно развивается, и в ближайшем будущем данная индустрия будет продолжать расти вместе с ростом мобильной коммерции. Оценка стоимости этой отрасли составляет более 25 миллиардов долларов США в год.
Люди используют приложения в различных целях - для игр, общения и развлечений, также существуют обучающие и развивающие приложения. В магазине Google Play есть около 8 миллионов приложений, в магазине Apple App Store - 2,2 миллиона, в магазине Windows - около 700 тысяч, в магазине приложений Amazon - 600 тысяч. В настоящее время на мобильные устройства приходится 25% всех розничных продаж в сфере электронной коммерции.
Цель работы
Тематика данной работы - создание информационного инструмента для отображения конфликтов и беспорядков. Военные и вооруженные конфликты, теракты и бунты всегда сопровождали человечество на пути развития. С развитием цивилизации, казалось бы, люди должны были научиться решать проблемы мирным путем, путем дипломатии, но данные явления продолжают происходить, оказывая трагические последствия на жизнь людей.
Актуальность
Военные и вооруженные конфликты являются неотъемлемой частью человеческой жизни, но не существует мобильного инструмента, который позволил бы быстро ознакомиться с ситуацией в определенных районах.
android приложение конфликт африка
1.АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Постановка задачи
Данная работа посвящена созданию программного продукта на базе ОС Android для отображения мест различных конфликтов и событий в Африке и Азии, а также информации о них.
К таким событиям относятся:
1. Битвы.
2. Теракты.
3. Подрывы.
4. Бунты.
5. Протесты.
6. Проявления политической жестокости.
7. Преступления.
1.2 Практическое применение
Данное приложение может найти практическое применение как у руководящих личностей, занимающихся анализом ситуации в определенном районе или стране и направляющих силы (принимающих меры) государства на стабилизацию обстановки в данных зонах, так и у обычных людей, например - путешественников. Допустим, они собрались поехать открывать для себя новый континент (Африку), и заглянув в данное приложение, они смогут сделать для себя вывод в каких местах Африки в данный момент напряженная ситуация и высокая преступность, и следовательно, будут избегать данных районов, тем самым не подвергая риску свою жизнь и членов их семей.
1.3 Обзор аналогичных продуктов
На данный момент подобные сервисы, показывающие места различных конфликтов, беспорядков, терактов и бунтов на карте существуют только в Web виде.
Насколько нам известно, мобильного аналога подобной интерактивной карты не существует, это и замотивировало нас создать программный продукт с данным функционалом.
Возможным преимуществом по сравнению с веб-сервисами может стать свойство приложения работать при отсутствии интернета, а при восстановлении подключения данные будут обновляться.
2.ПРОЕКТИРОВАНИЕ СИСТЕМЫ
2.1 Выбор программных инструментов
На сегодняшний день самые распространенные операционные системы для смартфонов это IOS, Android, Windows Phone, Symbian, BlackBerry.
Выбор был сделан в пользу Android, поскольку:
1. Android является самой распространенной ОС (рисунок №1).
2. Доступна для разработки любому пользователю.
3. Разработка на Android полностью бесплатная.
Рис.1 - Рынок мобильных операционных систем.
Для создания приложений под Android существует несколько сред разработки: Eclipse, JDeveloper, AndroidStudio. Для создания приложения была выбрана среда Android Studio (т.к. является основной рекомендуемой средой для андроид-разработки), потому что обладает наиболее удобным интерфейсом и менее требовательна.
Для написания приложений под Android также существует несколько языков - Java и Kotlin, который сейчас является официальным языком разработки под Android. Но выбор пал в пользу Java, так как он наиболее изучен автором.
Данные о событиях предоставляет Acled (The Armed Conflict Location & Event Data Project) - сервис, который занимается сбором, анализом и отображением данных.
ACLED является зарегистрированной некоммерческой организацией в США.
Данные, коллекционируемые ACLED, являются открытыми.
ACLED - это высококачественный и наиболее используемый источник данных и анализа в реальном времени о политическом насилии и протестах во всем мире. Практики, исследователи, журналисты и правительства полагаются на ACLED, получая последнюю достоверную информацию о текущих конфликтах и беспорядках. Данный сервис собирает актуальные данные о локациях, датах, участниках, смертностях и типах (видах) всех случившихся проявлениях политической жестокости, протестов в Африке, Южной Азии, Юго-Восточной Азии, Центральном Востоке, Центральной Азии и Кавказе, Латинской Америке и стран Карибского моря, в Европе и на Балканах.
Для доступа к ACLED сервис предоставляет API.
Для взаимодействия клиентского приложения и сервера можно использовать различные варианты: Retrofit, OkHttp, HttpUrlConnection.
Для работы с сервером и http-запросами была выбрана библиотека Retrofit, так как:
1. Легко настраивается.
2. Простое выполнение и добавление запросов.
3. Имеет встроенный конвертер данных. Данные с сервера приходят в формате JSON, а Retrofit избавляет разработчика от необходимости парсинга ответа, автоматически обрабатывая ответ с помощью встроенного JsonConverterFactory.
Retrofit - REST-клиент для Java и Android. Библиотека позволяет относительно легко получать и загружать JSON (или другие структурированные данные) через веб-сервис на основе REST. Retrofit предлагает выбрать, какой конвертер использовать для сериализации данных. Обычно для JSON используется Gson, но также имеется возможность добавить собственные конвертеры для обработки XML или других протоколов.
Для работы с Retrofit необходимы три класса:
· Класс-модель, который используется в качестве модели JSON.
· Интерфейсы, которые определяют возможные HTTP операции.
· Класс Retrofit.Builder - класс, в котором определяется конечная точка для HTTP операций.
Для работы с картой существуют различные картографические сервисы, например, Google Maps, Яндекс Карты, StreetView, NASA World Wind, но для данного проекта были выбраны Google Maps, которые предоставляют удобный инструментарий для интеграции в андроид приложение (так как и GoogleMaps и AS созданы Google).
С помощью Google Maps Android Api можно добавлять в свое приложение карты на основе данных карт Google.
Для локального хранения данных существуют различные инструменты - MySql, SQLite, Oracle, Room, Realm.
Room - библиотека для хранения данных приложений, является частью архитектурных компонентов Android (группа библиотек, разработанных Google, которые поддерживают уместную архитектуру приложений). Room представляет из себя уровень абстракции над SQLite, который обеспечивает более надежный доступ к базе данных, но при этом используя все возможности SQLite.
Для данной работы была выбрана Room, потому что:
1. Избавляет от работы с SQLiteHelper, Cursor и ContentResolver.
2. Входит в состав Android Architecture Components.
2.2 Архитектура
Google имеет свои практики и рекомендуемую архитектуру для создания надежных приложений производственного качества.
Приложение разработано с использованием архитектурных компонентов Android (Android architecture components). Цель архитектурных компонентов - структурировать приложение таким образом, чтобы оно было надежным, тестируемым и обслуживаемым с меньшим количеством кода. Они представляют собой набор библиотек, которые являются частью Android Jetpack.
Важный принцип такой архитектуры заключается в том, что пользовательский интерфейс должен управляться из модели. Модели - это компоненты, которые отвечают за обработку данных для приложения. Они не зависят от объектов View и других компонентов приложения, поэтому на них не влияет жизненный цикл приложения и связанные с этим проблемы.
На рисунке №2 показана рекомендуемая структура приложения:
Рис. 2 - Рекомендуемая структура приложения
Каждый компонент зависит только от компонента, располагающегося на уровень ниже. Например, активности и фрагменты зависят только от ViewModel. Компонент Repository - единственный класс, который зависит от множества других классов, например от локальной БД и от удаленного источника данных.
В данной работе были использованы 3 архитектурных компонента - ViewModel, Room и LiveData.
На рисунке №3 показано взаимодействие архитектурных компонентов в приложении:
Рис. 3 - Взаимодействие модулей приложения
Repository - используется для работы с несколькими источниками данных. Репозиторий не является частью архитектурных компонентов, но считается хорошей практикой для разделения кода и правильной архитектуры. Класс предоставляет API для доступа к данным во всем приложении. Репозиторий управляет запросами и позволяет использовать несколько бэкэндов (источников данных). Чаще всего репозиторий реализует логику для принятия решения о том, получать ли данные из сети или использовать результаты, кэшированные в локальной базе данных.
Рис. 4 - Репозиторий работает с несколькими источниками данных
ViewModel - является центром связи между репозиторием и пользовательским интерфейсом. UI не отвечает за работу с данными. Экземпляры ViewModel существуют весь период работы приложения и не зависят от пересоздания активностей. Роль ViewModel заключается в предоставлении данных для пользовательского интерфейса и сохранении изменений конфигурации.
Рис. 5 - Период жизни ViewModel
LiveData - хранит последнюю версию данных и уведомляет своих наблюдателей об изменении данных. Компоненты пользовательского интерфейса просто «наблюдают» соответствующие данные.
Entity - класс, который описывает таблицу базы данных при работе с Room.
SQLite database - хранится в памяти устройства, Room берет на себя создание и поддержку этой базы данных.
DAO - объект доступа к данным, представляет SQL запросы в виде методов.
Room database - упрощает работу базы данных и служит точкой доступа к основной SQLite БД (скрывает SQLiteOpenHelper). База данных Room использует DAO для выдачи запросов к базе данных SQLite.
На изображении №6 показана схематичная архитектура Room.
Рис. 6 - Архитектура Room
Данные о конфликтах берутся из сети и кешируются в базе данных, что позволяет пользоваться приложением при отсутствии доступа к сети. Room позволяет кешировать необходимые данные на устройстве, на котором используется приложение. Этот кеш позволяет пользователю просматривать информацию в приложении независимо от наличия интернет соединения.
База данных состоит из одной таблицы, элемент таблицы - одно событие (класс Event).
3.ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
3.1 Модули приложения
Рис. 7 - Модули приложения.
Класс Repository - отвечает за загрузку данных из сети (с помощью ApiService), а также за кеширование этих данных в локальной базе данных (с помощью EventDao). Предоставляет методы для доступа к данным из БД.
Класс ViewModel - хранит нужные для пользовательского интерфейса данные, на которые UI подписан. Извлекает данные из Repository.
MainActivity - класс пользовательского интерфейса, подписывается на данные из ViewModel, получая актуальные данные и сохраняя ссылку на них в currentEvents. Далее список текущих событий отображается на карте.
EventInfoActivity - активность для отображение информации о конкретном выбранном событии.
Классы для работы с сервером:
· NetworkService - класс для настройки работы Retrofit. В нем указывается базовый адрес для http-запросов и необходимый конвертер, чтобы Retrofit самостоятельно конвертировал json данные в объекты ApiResponse.
· ApiService - интерфейс для управления адресом, в котором определяются возможные http-операции. Каждый метод интерфейса представляет собой определенный запрос к серверу. Метод должен иметь HTTP аннотацию (GET, POST и т.п.) для указания типа запроса, а также адрес, который добавляется к базовому URL для формирования полного адреса запроса. Возвращаемое значение оборачивает ответ в объект типа Call с указанием желаемого типа (в данном случае это ApiResponse).
· ApiResponse и Event - данные классы представляют из себя модель возвращаемого JSON-объекта.
· ApiResponse - класс-модель ответа с сервера, содержит информацию о запросе, а также список событий.
· Event - класс-модель конкретного события.
Классы для работы с базой данных:
· Event - класс, описывающий таблицу базы данных. Помечается аннотацией @Entity, которая говорит Room что экземпляры данного класса нужно хранить в соответствующей таблице в БД.
· EventDao - используется для любых манипуляций с базой данных, содержит методы вставки элементов, удаления и получения событий.
· AppDatabase - класс базы данных, в нем определяются таблицы и DAO, относящиеся к данной базе, а также информация о версии.
3.2 Функционал приложения
Приложение имеет следующие основные функции:
· На карте маркерами обознаются места различных конфликтов.
· При нажатии на маркер появляется информационное окно, где отображается локация события и его дата.
· При нажатии на информационное окно открывается окно, в котором содержится вся информация о событии (место, описание, участники…).
· Есть фильтры для отбора событий.
Разные типы событий обозначаются разными маркерами.
Имеется фильтр с возможностью выбрать определенный период, и события показываются за выбранный промежуток времени.
Также имеется фильтр по типам событий. Всего типов 6:
1. Explosions/Remote violence (Взрывы).
2. Battles (Битвы, сражения).
3. Protests (Протесты).
4. Riots (Бунты).
5. Violence against civilians (Проявления жестокости к мирным гражданам).
6. Strategic developments (Стратегические разработки).
Для выбора региона также есть фильтр. Всего регионов 13:
1. Caribbean (Страны Карибского моря).
2. Caucasus and Central Asia (Кавказ и Центральная Азия).
3. Central America (Центральная Америка).
4. Eastern Africa (Восточная Африка).
5. Europe (Европа).
6. Middle Africa (Центральная Африка).
7. Middle East (Центральный Восток).
8. Northern Africa (Северная Африка).
9. South America (Южная Америка).
10. South-Eastern Asia (Юго-восточная Азия).
11. Southern Africa (Южная Африка).
12. Southern Asia (Южная Азия).
13. Western Africa (Западная Африка)
Есть фильтр для показа событий, где большое число жертв (например, больше 10).
3.3 Тестирование
Было проведено тестирование системы на различных смартфонах с разными версиями Android и разными размерами экрана.
Приложение запускалось на данных устройствах, анализировалось его поведение при различных действиях, и в случае выявления какой-либо неисправности вносились поправки в код.
3.4 Варианты развития приложения
В дальнейшем можно добавить для отслеживания оставшиеся континенты - Евразию, Австралию, Северную и Южную Америку, Океанию и Индонезию.
ЗАКЛЮЧЕНИЕ
Поднимая вопрос об отсутствии информационного инструмента, предоставляющего картографические данные о конфликтах и событиях, а также информации о них, становится ясно, что создание программного инструмента, соответствующего тематике данной проблемы, является актуальной задачей.
В ходе выполнения данной работы были достигнуты поставленные цели:
Было создано мобильное приложение «ConflictsAndEvents» на платформе Android, которое позволяет ознакомиться с обстановкой в выбранных регионах. Оно имеет следующие функции:
· отображение маркерами вооруженных конфликтов и беспорядков в Африке и Азии.
· предоставление информации о событиях.
· фильтрация по событиям (фильтры по периодам, типам событий, регионам).
ПРИЛОЖЕНИЕ
Скриншоты приложения:
Рис. 8 - Главный экран приложения
Рис. 9 - Использование фильтра для выбора типа события
Рис. 10 - Отображение событий типа Battles в Центральной Африке
Рис. 11 - Вид информационного окна при нажатии на маркер
Рис. 12 - Информация о выбранном событии
Размещено на Allbest.ru
Подобные документы
Основные параметры устройства отображения информации. Обоснование выбора используемых ресурсов микроконтроллера и схемы включения. Разработка схемы алгоритма. Описание и отладка программы. Схема электрическая принципиальная и листинг трансляции программы.
курсовая работа [121,3 K], добавлен 12.12.2014История возникновения лазера и практическое применение. Лазерные методы индикации. Развертывающее устройство с бегущим лучом. Лазерный индикатор с большим экраном. Лазерная фотография. Устройства отображения информации на лазерных генераторах света.
реферат [59,9 K], добавлен 07.11.2007Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017Основные технические средства автоматизации. Типы программных блоков и блоков данных контроллера. Повышение эффективности работы шлакоуборочного крана. Настройки отображения индикаторов. Построение визуального отображения поступающей информации.
дипломная работа [3,6 M], добавлен 10.06.2013Понятие дисплея, его назначение и виды. Принципы работы видеокарты и видеоадаптера. Пользовательские характеристики дисплеев. Взаимосвязь размера и разрешения экрана. Монитор как специализированный дисплей, контролирующий процесс отображения информации.
творческая работа [311,4 K], добавлен 27.06.2009Создание приложения для просмотра графических файлов. Компоненты, объекты и операторы для отображения графической информации в библиотеке Delphi. Канва как область компонента для рисования и отображения изображений. Рисование пером, закрашивание кистью.
методичка [98,1 K], добавлен 19.06.2011Описание исходных текстов программного продукта. Системные требования и установка программного продукта. Тестирование пользователя по двадцати вопросам указанной темы и сохранение результатов тестирования. Форма отображения результатов тестирования.
курсовая работа [2,8 M], добавлен 09.07.2013Особенности отображения графики в приложениях. Представление контекста отображения; управление состоянием элементов меню. Реализация класса представления геометрических фигур GraphicsDisplay, конструктора окна MainFrame. Реализация чтения данных из файла.
лабораторная работа [1,1 M], добавлен 01.05.2014Разработка информационного обеспечения задачи, определение логической структуры реляционной базы данных. Разработка запросов и отчетов для обработки и отображения информации, интерфейса пользователя. Методика и этапы физического проектирования задачи.
курсовая работа [33,5 K], добавлен 25.07.2012Проектирование аппаратно-программного комплекса, предназначенного для отображения текстовой информации в виде бегущей строки (о дате, времени, температуре воздуха). Выбор микроконтроллера, элементной базы. Разработка принципиальной схемы устройства.
дипломная работа [1,9 M], добавлен 17.08.2013