Разработка мобильного приложения
Обзор состава и параметров технических средств мобильных устройств, применимых языков программирования и обоснование выбора. Исследование структуры Android-приложения, требования к его возможностям. Особенности архитектуры программного обеспечения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.08.2017 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
приложение программный мобильный архитектура
В настоящее время различные 3D-технологии все чаще и чаще становятся неотъемлемой частью нашей жизни. Современный человек даже не догадывается, как бы выглядел мир, если бы их не существовало. Данные технологии пронизывают практически все сферы деятельности человека: от простых мобильных игр и мультипликации до полетов человека в космос. Назначения 3D-технологий очень сильно различаются: их применяют в развлекательной сфере (в играх, в киноиндустрии), в образовательной сфере (симуляции для обучения управлению техникой, создание стрессовых ситуаций и поиск выходы из них), в бизнесе и в рекламной индустрии (презентации новинок компаний, показ возможностей компании). Примером могут послужить различные автомобильные презентации, например, немецкая компания по производству автомобилей Audi активно развивает направление VR (virtual reality - искусственная реальность) для демонстрации новейших моделей автомобилей. В частности, в приложении Audi A4 VR Experience для Android пользователь может изучить внешний вид автомобиля Audi A4, также можно сидеть в виртуальном салоне машины, полностью соответствующему настоящему [1]. VR-приложение предлагает познакомиться с новыми функциями автомобиля. Многим компания выгоднее заплатить за разработку подобного рекламного 3D приложения, чем использовать настоящий экземпляр их продукта.
В приложениях, имеющих рекламную направленность, пользователи могут не только рассматривать готовые 3D-объекты и модели каких-либо настоящих предметов, но и взаимодействовать с ними. Для создания подобных приложений и программ недостаточно только иметь готовые 3D-модели, нужно создавать целый комплекс программ. Для этого используют различные инструменты, а именно «игровые движки» (Unity3D, Unreal Engine, CryEngine). Все современные «игровые движки» позволяют создавать полноценные интерактивные приложения, в которых пользователи напрямую воздействуют на окружающую среду (изменяют параметры 3D-объектов). Для того чтобы демонстрировать работу каких-либо продуктов используется 3D-анимация.
Основной задачей практически всех приложений с использованием 3D-технологий является задача визуализации. То есть демонстрация чего-либо (какого-либо продукта, здания, процесса и т.д.) пользователю или потенциальному покупателю.
Задачей данной работы является разработка приложения для распознавания и визуализации планировок квартир в многоэтажных жилых комплексах. Актуальность данной темы заключается прежде всего в том, что в настоящее время бурно развивается строительство жилых комплексов в крупных городах страны. Растет количество непроданных квартир, что приводит к снижению рыночных цен. В свою очередь, застройщики заинтересованы как можно скорее сбыть свою продукцию, то есть квартиры. В строительной сфере идет быстрое освоение современных технологий, в том числе технологий 3D. Разрабатываемое приложение позволит привлечь внимание к той или иной строительной компании. За счет разрабатываемого программного обеспечения пользователи, обладающими смартфонами на базе Android смогу легко визуализировать макеты квартир, планировки которых изображены на бумаге. За счет 3D визуализации пользователи смогут легко понять, как будет выглядеть их будущая квартира, будет возможность сравнить несколько разных планировок квартир, смогут продумать расстановку мебели. В настоящее время на рынке нет аналогичных приложений в открытом доступе, так как у каждой строительной фирмы свои стандарты создания планировок.
Данная работа подразумевает не только визуализацию макетов квартир, но и дальнейшее сохранение полученных моделей. Такая функция открывает большие возможности не только для потенциальных покупателей, но и для самих строителей и дизайнеров. Например, дизайнеры смогут легко и быстро получать готовые 3D-модели квартир для создания интерьеров. Также полученную 3D-модель можно использовать в виртуальной реальности, гулять по будущей квартире, планировать в какие цвета покрасить стены, или же просто как будет выставлена мебель.
Цель данной работы состоит в том, чтобы уменьшить время на создание трехмерной модели квартиры из планировки. Из этого следует, что главная задача работы - создание мобильного приложения для устройств под управлением операционной системы Android, которое способно создавать трехмерные модели квартир, соответствующие планировкам изображенных на листах бумаги. Также в приложении должна быть реализована возможность просмотра полученных моделей в режиме дополненной реальности. Пользователь сможет сохранять полученный результат распознавания, то есть модель квартиры в памяти телефона. Цель также заключается в увеличении количества продаж квартир у застройщиков, которые будут использовать предлагаемое программное обеспечение. Готовое программное обеспечение, установленное на смартфоне или каком-либо другом мобильном устройстве под управлением операционной системы Android, имеющее камеру должно выполнять следующие функции:
· сканирование планировок существующих домов или планов квартир с помощью камеры мобильного устройства;
· распознавания чертежей-планов зданий;
· построение 3д-модели здания на экране мобильного устройства как элемента дополненной реальности;
· возможность масштабировать и вращать полученную 3д-модель;
· сохранение 3D модели в формате «STL».
Для достижения поставленной цели следует решить следующие задачи:
· обзор и анализ существующих решении?;
· исследование методов и алгоритмов решения поставленной задачи;
· разработка мобильного приложения с воплощением всех вышеописанных функций;
· проведение эксперимента.
В данной работе проведен обзор и анализ существующих решений для обработки изображений с камеры смартфона, создания 3D-моделей и их отображения мобильным устройством в том числе в дополненной реальности. Описываются результаты проведенной работы.
1. Обзор и анализ предметной области
1.1 Обзор основных понятий предметной области
Рассмотрим подробнее объекты предметной области, а именно понятие «компьютерное зрение». Компьютерное зрение - теория и технология создания устройств или программ, которые могут производить обнаружение, отслеживание и классификацию объектов по получаемому изображению с фото- и видеокамер. Компьютерное зрение дает полную информацию об исходном изображении, например, какой формы или цвета изображенный объект. Также множество алгоритмов компьютерного зрения призваны не только распознавать какие-либо определенные объекты, движения или метки, но также изменять параметры исходного изображения для улучшения качества. Данный механизм обработки изображения очень часто используется в настоящее время практически во всех сферах деятельности человека. Например, компьютерное зрение используется в алгоритме работы камер наружного наблюдения, которые следят за порядком на улицах. Рассмотрим, в каких ещё сферах деятельности человека используются алгоритмы компьютерного зрения:
· оптическое распознавание символов: чтение рукописных почтовых кодов на письмах. Распознавания номерных знаков;
· проверка качества на предприятиях: контроль выпускаемой продукции на соответствие стандартам;
· розничная торговля: распознавание товаров для автоматизированного контроля покупаемой продукции;
· создание 3D-модели: полностью автоматическое построение 3D-моделей зданий на основе аэрофотоснимков, используемых в таких системах, как Google Maps;
· медицинская визуализация: регистрация предоперационной и интраоперационных изображений. Долгосрочные исследования морфологии мозга людей по мере их старения;
· безопасность дорожного движения (внутренние системы автомобиля): обнаружение неожиданных препятствий, таких как пешеходы на улице.
· захват движения: отслеживание отражающих маркеров, с нескольких инфракрасных камер;
· наружное наблюдение: мониторинг нарушителей общественного порядка, анализ движения на автомобильных шоссе;
· распознавание отпечатков пальцев и биометрия: для автоматической аутентификации доступа [2].
Как можно понять, практически любой человек сталкивается с компьютерным зрением каждый день.
В работе используется понятие «дополненная реальность» и «виртуальная реальность». Рассмотрим, что это такое. Дополненная реальность - результат введения в поле восприятия каких-либо графических или иных данных с целью дополнения информации об окружении или улучшения восприятия, а также для развлекательных целей [3]. Дополненная реальность широко используется в мобильных играх, например, Pokemon Go, также применения подобной технологии распространено в промышленной сфере, на предприятиях, выпускающих сложное оборудование. Основной принцип, который используется в приложениях с дополненной реальностью следующий: на картинку, получаемую с фотокамеры смартфона или какого-то другого устройства, накладывается какой-либо графический объект, чаще всего трехмерная модель, или другая информация. Для создания иллюзии того, что искусственно введенная трехмерная модель является частью реального мира в приложении должен быть хороший алгоритм привязки данного объекта к картинке-метки. Чаще всего для этих расчетов используются данные из датчика гироскопа, но также можно использовать просто данные изображения.
«Виртуальная реальность» (искусственная реальность) - созданный с помощью технических средств компьютерный мир, передаваемый человеку через его ощущения: зрение, слух, обоняние, осязание. Разработчики ставят задачу создать у пользователя ощущение присутствия в виртуальной среде. Самый популярный и доступный вид искусственной реальности - очки-шлем виртуальной реальности. Для того чтобы погрузиться в мир виртуальной реальности, необходимо иметь очки виртуальной реальности, но также существует огромное количество шлемов-органайзеров для того, чтобы приспособить для таких целей смартфон. Для просмотра стереоскопических 3D-сцен используется дисплей (в случае смартфона - экран смартфона). Надев шлем виртуальной реальности, человек имеет возможность оглядеться вокруг, повернув голову, и «переместиться» с помощью ручного управления или датчиков движения. Таким образом достигается эффект полного присутствия [4].
1.2 Обзор состава и параметров технических средств мобильных устройств
По последним статистическим данным исследовательской компании Gartner, можно сказать, что на рынке мобильных операционных систем остались всего два крупных игрока - iOS и Android. В четвертом квартале 2015 года их общая доля составляла 98.4% [5]. Из данного отчета следует, что операционная система Android занимает первое место по продажам в мире, а именно 80.7%. В свою очередь на ОС IOS приходится около 17.7% всех продаж. Android («Андромид») - операционная система (ОС) для всех мобильных устройств (смартфонов, интернет-планшетов, электронных книг, цифровых проигрывателей, наручных часов, игровых приставок, нетбуков и других устройств). Данная ОС основана на ядре Linux и собственной реализации виртуальной машины Java от компании Google. Изначально операционная система Android разрабатывалась одноименной компанией Android Inc., которую в дальнейшем купила компания Google [6]. В результате обзора рынка устройств, было решено осуществить работу данного приложения на устройствах под управлением ОС Android начиная с API 16 (Jelly Bean) или новее. В перспективе планируется перенести работающее приложение на ОС iOS.
Минимальная конфигурация мобильного устройства:
· мобильное устройство должно иметь фотокамеру с разрешением от 8 Mp (Мегапикселов);
· устройство должно иметь следующие датчики: акселерометр, гироскоп. При отсутствии данных сенсоров будет невозможно просматривать полученную 3D-модель в режиме дополненной реальности;
· желаемое разрешение экрана - 1280х720 пикселей и выше.
1.3 Обзор применимых языков программирования и обоснование выбора
Операционная система Android изначально работала на виртуальной машине Dalvik Virtual Machine (DVM), которая написана на языке программирования Java. Но в дальнейшем при работе над операционной системой, создатели решили заменить Dalvik на иную виртуальную машину под названием ART (Android Runtime). Она отличается от Dalvik только тем, что она компилирует приложения только во время их установки, а не во время их запуска. За счет этого увеличивается скорость выполнения программ и уменьшается время при переключении между разными приложениями. Другими словами, Java - это родной язык для Android, на основе которого реализовано большинство приложений системы. Но на самом деле все приложения на Android работают не на байт-коде Java, а используют специфический байт-код Dalvik (расширение.dex). Этот байт-код включается в пакет приложения (.apk). Google в 2008 выпустила первый пакет для разработчиков SDK (Software Development Kit), с помощью которого появилась возможность сторонним разработчикам создавать свои собственные приложения для Android. Также для разработки любых программ для данной операционной системы потребуется комплект разработчика приложений Java Development Kit (JDK) [7].
В 2009 году был опубликован пакет Native Development Tolls (NDK). Он входил в набор для разработки Android Development Tools (ADT). NDK представляет собой пакет инструментариев и библиотек для того, чтобы реализовать часть кода на языке C/C++, что позволяет увеличить быстродействие системы. NDK: используют в следующих ситуациях [8]:
· увеличение производительности приложения для обработки большого количества данных;
· использование сторонней библиотеки (например, OpenCV - библиотека компьютерного зрения, написанная на языке С++);
· расчет сложных физических процессов, либо расчет поведения объектов в играх.
Чтобы выбрать подходящий инструментарий для дальнейшей разработки приложения, следует рассмотреть основные функции будущего программного обеспечения. Во-первых, в приложении будет реализована возможность просмотра полученных 3D-моделей в режиме дополненной реальности. Для этого необходимо будет использовать библиотеку дополненной реальности. Во-вторых, сама возможность просмотра трехмерных моделей требует использовать какую-либо графическую библиотеку. В-третьих, для распознавания планировок квартир нужно использовать библиотеку компьютерного зрения, которых существует огромное количество.
Выбор графической библиотеки
Очевидно, что экраны компьютеров и мобильных устройств плоские. Чтобы отобразить двухмерную графику не нужно никаких специальных библиотек и инструментов, но когда речь заходит про 3D, то тут просто необходимо использовать какой-нибудь инструмент, для проецирования трехмерного виртуального мира на экран мобильного устройства или компьютера. При выборе подобного набора инструментов (графической библиотеки) для операционной системы Android ничего не остается, кроме как графическая библиотека OpenGL ES (Embedded Systems) для встраиваемых систем, так как для Android не существует иных графических библиотек. На самом деле OpenGL - это просто спецификация, то есть документ, который описывает общий набор функций и их поведение, иначе говоря API (Application Programming Interface). Опираясь на эти спецификации, производители оборудования создают реализации, то есть библиотеки функций, что и используется при разработке приложения, а именно OpenGL ES 3.0 - графическая библиотека предназначенная для работы на мобильных устройствах [9]. OpenGL предоставляет один и тот же интерфейс разработчику в независимости от языка программирования. Но нужно уточнить, что шейдерные программы - компьютерная программа, созданная для определения параметров геометрических объектов или для изменения изображения на экране - возможно описать на нескольких языках программирования, чаще всего на специально созданном языке GLSL.
Выбор библиотеки компьютерного зрения
Для реализации возможности распознавания планировок квартир, изображенных на бумажном носителе, необходимо использовать какую-либо библиотеку компьютерного зрения. Их существует достаточно большое количество:
· OpenCV - библиотека компьютерного зрения, включающая в себя более 500 функций, которые реализуют работу самых популярных алгоритмов. В нее также входят библиотеки машинного обучения. Во второй версии предоставляется интерфейс C++;
· VXL - библиотека, осуществляющая несколько популярных алгоритмов компьютерного зрения. Написана на C++. Существует несколько версия данной библиотеки: VGL, VIL, VNL, VSL;
· LTI - написанная на C++ библиотека, поддерживающая многопоточность, синхронизацию и доступ через последовательный порт.
В результате сравнительного анализа [10] библиотек компьютерного зрения, оказалось, что самой быстродействующей оказалась самая популярная на сегодняшний день OpenCV. Также только OpenCV имеет специализированный для Android SDK набор инструментов. К тому же, она имеет самое большое количество реализованных алгоритмов компьютерного зрения.
OpenCV - библиотека с открытым исходным кодом, что является огромным преимуществом перед остальными, так как каждая компания, использующая ее, часто добавляет в нее новые функции и алгоритмы. Впервые она была реализована и выпущена в открытый доступ в 2006 году. Как отмечалось ранее, компьютерное зрение - это технология создания таких приложений или программ, которые могут обнаруживать, отслеживать и производить классификацию объектов и предметов по получаемому изображению с фото- и видеокамер. В OpenCV также присутствуют возможности для создания приложения с функцией дополненной реальности, но для данной разработки будет использоваться другая библиотека дополненной реальности, работающая иначе. На момент появления библиотека алгоритмов обработки изображений и компьютерного зрения была написана на языках C/C++, но сегодня также разрабатывается наPython, Ruby и Java и других языках.
Для реализации возможности использования дополненной реальности в разрабатываемом приложении будет подключена библиотека дополненной реальности. Vuforia от компании Qualcomm. В 2015 году компания PTC купила её. Vuforia - это платформа дополненной реальности и инструментарий разработчика (SDK) для создания дополненной реальности в собственных приложениях для мобильных устройств. Эта библиотека дает возможность генерировать метки (то к чему привязываются 3D-модели на экране мобильного устройства) во время работы приложения [11].
Следовательно, если не учитывать выбранные вспомогательные библиотеки, то основным языком для разработки программного обеспечения будет служить Java, так как он является «родным» для Android. Также для разработки нужен комплект разработчика JDK версии 8, инструментарий для разработки Android SDK и внешние библиотеки OpenGL ES 2.0 и OpenCV 3.0. Для реализации просмотра полученных моделей в режиме дополненной реальности будет использоваться библиотека Vuforia.
1.4 Обзор сред разработки и обоснование выбора
Для разработки приложения для операционной системы Android, необходимо использовать какую-либо подходящую среду разработки, а именно - интегрированную среду разработки (Integrated development environment, IDE). Следует отметить, что в понятие «разработка» входит не только написание кода программы, но и сборка, отладка, компиляция программного кода. Для этого и используется IDE. То есть, при использовании IDE программист получает все необходимые инструменты для разработки в одной среде, что максимизирует его производительность.
Любая IDE состоит из следующих компонентов:
· текстовый редактор;
· компилятор и / или интерпретатор;
· средства автоматизации сборки;
· отладчик.
IDE является сложным программным комплексом, что приводит к трудностям на этапе знакомства со средой разработки, однако в дальнейшем, производительность разработчика только увеличивается. Интегрированные среды разработки зачастую содержат множество функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения. IDE позволяет любому программисту легко ориентироваться в создаваемом программном продукте, так как в них всегда есть навигатор классов, в котором отражены все текущие классы программы. Большинство современных сред разработки являются графическими, то есть имеют дружелюбный пользовательский интерфейс, в них есть возможность графически создавать интерфейс разрабатываемой программы. Часто IDE предоставляют вести разработку на разных языках программирования. Существует большое количество IDE для разработки приложения под операционную систему Android. Рассмотрим самые популярные из них:
· Android Studio - «родная» IDE для Android, так как представлена компанией Google. Основана на программном обеспечении IntelliJ IDEA;
· IntelliJ IDEA - IDE разработанная компанией JetBrains. Предназначена для следующих языков программирования: Java, JavaScript, Python и не только.
· Xamarin Studio - IDE для создания приложений для Android и iOS на нативном языке программирования.
Среда разработки Android Studio
Данная интегрированная среда разработки является одной из самой популярной прежде всего из-за того, что предоставляется компанией Google и является бесплатной. Впервые была представлена в 2014 году, тогда же была прекращена поддержка Android Development Tools (ADT) - плагина для другой среды разработки Eclipse (сейчас её используют всё реже). С помощью этой IDE можно разрабатывать приложения не только для смартфонов и планшетов на операционной системе Android, но так же и для других мобильных устройств, таких как: Android Wear (версия Android предназначенная для умных часов и носимых устройств) и Android TV (версия операционной системы Android разработанная для телевизоров и мультимедийных приставок). Разработчики Android Studio постоянно выпускают обновления.
Рассмотрим основные особенности Android Studio:
· использование системы автоматической сборки Gradle;
· содержит большое количество шаблонов основных макетов Material Design и компонентов для Android;
· поддержка разработки приложений для Android Wear и Android TV;
· встроенная поддержка Google Cloud Platform, включающая в себя интеграцию с сервисами Google Cloud Messaging и App Engine;
· возможность разработки для ещё не вышедших версий Android;
· различные виды сборок и генерация нескольких.apk файлов;
· рефакторинг кода;
· статический анализ кода (Lint);
· способность работать с UI компонентами при помощи Drag-and-Drop, что способствует увеличению скорости разработки;
Рассмотрим плюсы использования интегрированной среды разработки Android Studio:
· большое количество готовых шаблонов для создания приложений соответствующих Material Design;
· удобное управление ресурсами приложения;
· возможность использования контроля версий;
· предпросмотр приложений для разных расширений экрана, и версий Android;
· улучшенная поддержка Java 8;
· функция Instant Run, позволяющая ускорить тестирование разрабатываемых приложений;
· удобное отслеживание логов;
· уведомление о появлении новых версий ПО.
Рассмотрим минусы использования Android Studio:
· частая синхронизация проекта с Gradle замедляет разработку, из-за долгой компиляции проекта;
· неудобный процесс обновления IDE;
· нет автоматического добавления сторонних библиотек [12].
Среда разработки IntelliJ IDEA
IntelliJ IDEA - это интегрированная среда разработки, появившаяся в 2001 году, предназначенная для работы на многих языках программирования, в частности Java, JavaScript, Python. Данная IDE разработана компанией JetBrains, которую основали российские программисты. Дизайн этой IDE ориентирован в первую очередь на ускорение производительности программистов. На данный момент среда разработки поддерживает более 10 различных языков программирования. Ряд языков программирования поддерживается посредством плагинов от сторонних разработчиков. Так как Android Studio основана на IntelliJ IDEA, редактирование кода и навигация по проекту очень схожи.
Рассмотрим особенности IntelliJ IDEA:
· рефакторинг кода;
· встроенный механизм контроля версий;
· возможность использования разных языков программирования;
· фреймворки для тестирования JUnit and TestNG;
· возможность создания пользовательского UI с помощью Drag-and-Drop.
Следует отметить, что редактирование кода в Android Studio и IntelliJ IDEA очень похоже.
Рассмотрим основные преимущества IntelliJ IDEA:
· самый удобный и простой рефакторинг кода;
· доступна разрабоотка не только для Android, но также и для iOS;
· огромное количество всевозможных подсказок;
· большое количество подключаемых модулей.
Рассмотрим минусы использования данной IDE:
· нет готовых макетов для приложений;
· не является специализированной IDE для создания Android приложений [13].
Среда разработки Xamarin. Android
Xamarin является удобным фреймворком для кроссплатформенной разработки мобильных приложений на языке C#. С помощью данной среды разработки возможно создавать приложения для Android, iOS и Windows Phone. В этом случае не нужно обладать знаниями Java для написания приложений для Android или Swift для iOS, вся разработка происходит на C# с полным доступом ко всем возможностям SDK платформы. Возможно создавать UI интерфейсы с помощью встроенных инструментов. Несмотря на «не родной» для Android язык программирования, приложения созданные с помощью Xamarin не уступают приложениям в производительности, созданным с помощью Android Studio. В Xamarin входят следующие компоненты:
· Xamarin.IOS и Xamarin. Android - это библиотеки классов для C#, предоставляющие разработчику доступ к iOS SDK и Android SDK соответственно;
· компиляторы для iOS и Android;
· IDE Xamarin Studio - сама интегрированная среда разработки;
· плагин для Visual Studio.
Рассмотрим преимущества Xamarin Studio:
· создание приложений под Android, iOS, Windows Phone на одном языке программирования (C#);
· кроссплатформенность;
· возможность использовать нативные средства разработки UI;
· огромное количество подключаемых модулей, таких как Json.NET или RestSharp;
· встроенная интеграция с контролями версий SVN, Git и TFS [14].
Рассмотрим недостатки Xamarin:
· достаточно дорогая лицензия для коммерческой разработки;
· небольшое количество вспомогательных материалов.
Сравнение и выводы
После анализа всех плюсов и минусов трех самых популярных интегрированных сред разработки, было принято решение использовать для разработки IDE Android Studio. Главный аргумент за данную IDE - то что Android Studio специально разрабатывался для создания приложений на Android. Также огромными плюсами служат большое количество дизайн-макетов, SDK-менеджер и большое количество обучающего материала в интернете. При чем, Android Studio включает в себя все положительные стороны IntelliJ IDEA. Возможно использование Gradle замедляет разработку, но используя функцию Instant Run эта проблема исчезает.
1.5 Обзор существующих аналогов
Таблица 1. Системы захвата стереоизображений
Название приложения |
Принцип построение плана квартиры |
Возможность построение 3D-модели |
Возможность просмотра 3D |
Просмотр в AR |
Возможность сохранить полученную модель |
|
Разрабатываемое ПО |
Автоматически |
+ |
+ |
+ |
+ |
|
MagicPlan |
Ручное |
- |
- |
- |
- |
|
Floor Plan Creator |
Ручное |
+ |
+ |
- |
- |
|
STANLEY Floor Plan |
Ручное |
- |
- |
- |
- |
|
Inard Floor Plan |
Ручное |
- |
- |
- |
- |
Сравнительный анализ мобильных приложений, которые используются для облегчения создания планировок квартир и домов (см. Табл. 1), показывает, что полностью аналогичных приложений в данной сфере в настоящее время нет. Приложения для строительной сферы либо предлагают создавать планы вручную, либо загружать уже готовые планировки в специальном формате и визуализируют их. Это ещё раз доказывает, что разработка приложения актуальна и не имеет прямых конкурентов, что должно способствовать быстрому распространению разрабатываемого ПО.
2. Обзор и анализ существующих методов
2.1 Обзор структуры Android-приложения
Как упоминалось ранее, приложения для Android пишутся на языке Java, а Android SDK (Software Development Kit - комплект разработки программного обеспечения) компилирует написанный код и все ресурсы приложения в файл.APK. В данном файле содержится все, что нужно для работы приложения на любом устройстве под управлением Android.
Каждое приложение, установленное на устройстве, работает в изолированной программной среде. Для Android приложений справедливы следующие тезисы:
· ОС Android представляет собой многопользовательскую систему Linux, где каждое приложение является пользователем;
· система назначает каждому работающему приложению уникальный идентификатор пользователя Linux и в соответствии с этим устанавливает права доступа;
· каждое приложение имеет виртуальную машину, код выполняется изолированно;
· каждое приложение выполняется в собственном процессе Linux.
В связи с этим, ОС Android реализует принцип предоставления минимальных прав, где каждому программному процессу предоставляется доступ только к тем компонентам, которые необходимы для его работы и не к каким другим. Однако, приложения могут обмениваться своими данными в двух случаях. Во-первых, если два приложения подписаны одни и тем же идентификатором пользователя Linux. Во-вторых, приложение может запросить доступ к данным устройства, например, к камере или другим пользовательским данным.
Рассмотрим компоненты приложений Android, из которых и состоят все существующие приложения. Каждый компонент приложения является самостоятельной структурной единицей приложения, который определяет, как именно будет работать приложение. Отдельный компонент приложения предназначен для какой-либо цели и имеет свой жизненный цикл. Рассмотрим эти компоненты, всего их четыре:
· операции (Activity) - представляют собой экран, содержащий пользовательский интерфейс. Выражаясь простыми словами - это то, что видит пользователь во время работы приложения (аналог окнам в ОС Windows). Например, в разрабатываемом приложении три Activity: Activity для захвата изображения и просмотра 3D-модели в дополненной реальности, Activity для просмотра 3D модели без дополненной реальности и Activity для просмотра результатов распознавания. Несмотря на то, что приложение выступает как единое целое, каждый Activity работает независимо;
· службы (Service) - компонент, который работает в фоновом режиме и выполняет длительные операции, которые связаны с работой удаленных процессов (воспроизведение музыки, в то время как пользователь работает в другом приложении);
· поставщики контента (Content provider) - компонент, управляющий общим набором данных приложения. Данные можно хранить в различных местах, в том числе и облаке куда приложение имеет доступ. С помощью поставщика контента другие приложения могут запрашивать или изменять данные;
· приемщики широковещательных сообщений (Broadcast receiver) - компонент, реагирующий на сообщения, распространяемые по всей системе. Большинство из них распространяет сама система, например, что был седлан фотоснимок или батарея разряжена. Также обычные приложения могут распространять подобные сигналы.
Следует отметить, что уникальной особенностью операционной системы Android является то, что любое приложение, может вызвать компонент другого.
Чтобы приложение понимало, какие компоненты в нем содержатся, и какими обладает правами доступа, в структуре Android-приложения для этого существует специальный файл AndroidManifest.xml. В нем указывается какими полномочиями обладает пользователь, использующий приложение, объявление минимального уровня API, объявление минимальных аппаратных и программных функций, указание библиотек API и многое другое [15].
2.2 Обзор библиотеки OpenGL
Трёхмерная графика обычно имеет дело с виртуальным, воображаемым трёхмерным пространством, которое отображается на плоской, двухмерной поверхности дисплея или листа бумаги. Чтобы получить какую-либо трехмерную модель нужно выполнить несколько этапов построения: моделирование и текстурирование объекта. В настоящее время существует множество программ, которые помогают это сделать, их называют 3D-редакторы. Каждая трехмерная модель состоит из полигональной сетки - это совокупность вершин, рёбер и граней, которые определяют форму многогранного объекта в трехмерной компьютерной графике. Гранями чаще всего выступают треугольники (полигоны). Для получения графического изображения 3D-модели нужно не только правильно построить ее в виртуальном пространстве, но и правильно создавать геометрическую проекцию трёхмерной модели сцены на плоскость. Это реализуется с помощью специализированных программ, которые называются шейдеры, которые упоминались ранее. Для описания трехмерного мира обычно используют декартову систему координат в пространстве. Чтобы описывать геометрические формы объектов используют несколько матриц, обычно их три: вершинная матрица, фрагментная матрица и матрица нормалей. В вершинной матрице содержится описание точек, то есть она определяет как именно будет формироваться полигональная сетка модели, задает положение каждого полигона с помощью трех точек. Каждая точка соответственно задается тремя координатами. Фрагментная матрица служит для обозначения цвета каждого полигона. В ней цвет задается также для каждой точки полигона. Также фрагментная матрица служит для наложения текстурного изображения на модель для создания большей реалистичности. Матрица нормалей содержит в себе описание векторов нормалей к каждому полигону. Нормали предназначены для того, чтобы шейдерная программа смогла рассчитать цвет полигона при определенном падении на него освещения. Без определения матрицы нормалей 3D-модель становится нереалистична, визуально тяжело определить ее форму.
Чтобы механизмы OpenGL смогли правильно расположить все имеющиеся полигоны, в метод glDrawArrays следует передать тип треугольников, расположение вершин которых хранятся в вертексной матрице. Всего существует три типа треугольников: GL_TRIANGLES, GL_TRIANGLE_STRIP и GL_TRIANGLE_FAN. Если передадать в метод glDrawArrays атрибут со значением GL_TRIANGLES, то отрисовка полигонов (треугольников) будет осуществляться по следующему принципу: из вертексной матрицы будут браться по три точки, которые и составляют треугольник. Важно чтобы при данном принципе построения треугольников, каждый следующий полигон (треугольник) составлял прямоугольную фигуру с предыдущим полигоном. Иначе в 3D-модели будут присутствовать «дырки». GL_TRIANGLE_STRIP означает, что каждый следующий треугольник будет состоять из двух предыдущих точек и одной новой точки. В таком случае количество точек в вертексной матрице значительно сокращается. GL_TRIANGLE_FAN означает, что каждый следующий треугольник строится на последней вершине предыдущего треугольника и на самой первой вершине.
Стоит отметить, что отличие двухмерного мира от трехмерного заключается прежде всего в том, что в трехмерном мире есть такое явления как перспектива. Перспектива - техника изображения пространственных объектов на какой-либо поверхности в соответствии с определенными изменениями их размеров, изменениями очертаний формы и светотеневых отношений, которые соответствуют натуральному виду объекта. Говоря иначе это:
· изобразительное искажение пропорций и форм реальных тел при их визуальном восприятии. Например, два параллельных рельса кажутся сходящимися в точку на горизонте;
· способ изображения объемных объектов, который передает их собственную пространственную структуру и расположение в пространстве.
То есть чтобы отображать трехмерные объекты на экране, нужно также учитывать перспективу - искажать исходные формы 3D-моделей. Для этого в OpenGL имеется специальных механизм реализации перспективы по средствам матриц. Благодаря данным матрицам и происходит весь процесс проецирования виртуального трехмерного мира на экран. Имея все вершины в трехмерном пространстве, программа передает их в шейдер. Также в шейдер передается матрица перспективы (frustrum-матрица). А шейдер с помощью этой матрицы будет преобразовывать вершины и получать на выходе значения, в которых уже будет рассчитана перспектива, и именно эти значения будут использованы системой для рисования. То есть матрица рассчитывает, как из исходных координат пространства получить координаты плоского экрана, для правильного отображения объектов. Тем самым матрица выполнит переход от виртуального трехмерного мира к координатам двумерного экрана.
Рисунок 1. Frustrum-матрица
На рисунке 1 изображена пирамида - пространство трехмерного мира, которое будет проецироваться на экран. Camera position - это та точка, в которой находится камера, то есть с этой точки пользователь будет видеть изображение (куда будет проецироваться изображение 3D-мира). Пространство между двумя плоскостями near plane и far plane - граница проецирования, то есть на экране будет изображены только те объекты, которые попали в эту границу.
Рассмотрим механизм отображения. Вначале нужно задать frustrum-матрицу, для этого задаются ограничения near и far plane, также задаются ограничения по осям. То есть для каждой оси задаются границы отображения, если объект не помещается в эти границы, то он просто не будет отображаться. Также нужно изменить вертексный шейдер для корректного отображения так, чтобы каждый вертекс объекта перемножался с frustrum-матрицей.
Для того чтобы реализовать механизм вращения вокруг объектов или просто передвигаться по сцене, можно воспользоваться ещё одной матрицей, которая будет содержать данные о положении и направлении камеры. Это часто используется на практике, потому что если сцена содержит много 3D-объектов, то будет не рационально перемещать каждый из них, проще переместить саму камеру. Система будет пересчитывать отображение каждой точки, что не так нагружает процессор, как изменения нескольких больших матриц или массивов. В итоге нужно просто задавать положение, направление камеры и up-вектор, определяющий наклон камеры. Положение камеры можно задавать любым в трехмерной системе координат. Для направления камеры также задается точка, состоящая из трех координат, она определяет куда именно смотрит камера. Up-вектор обычно задается единичным вектором, который «смотрит» вверх [16].
Обычно для обозначения перечисленных матриц используют следующие переменные:
· ProjectionMatrix - матрица, отвечающая за создание трехмерного мира (перспективы), которая содержит near и far plane значения (по-другому frustrum-матрица);
· ViewMatrix - эта матрица будет содержать данные о положении и направлении камеры;
· Matrix - итоговая матрица, которая будет получена путем перемножения ProjectionMatrix и ViewMatrix. В результате Matrix будет содержать данные одновременно и о перспективе, и о камере. Эта итоговая матрица передается в шейдер. Шейдер будет прогонять через нее точки всех заданных объектов, и в результате на экран будет выведена трехмерная картинка, которая будет выглядеть по-разному в зависимости от того, как была задана камера.
ViewMatrix обычно задается с помощью метода setLookAtM, в который передаются следующие параметры:
· eyeX, eyeY, eyeZ - координаты точки положения камеры, другими словами место, где находится камера;
· centerX, centerY, centerZ - координаты точки направления камеры, то есть куда смотрит камера;
· upX, upY, upZ - координаты up-вектора, то есть вектора, позволяющего задать поворот камеры вокруг оси «взгляда».
Библиотека OpenGL ES входит в стандартный набор библиотек Anroid SDK. Рассмотрим структуру данной библиотеки.
Существует два основных класса для того, чтобы создавать и изменять графические объекты c помощью OpenGL ES API: GLSurfaceView и GLSurfaceView. Renderer. GLSurfaceView представляет собой класс, в котором можно отрисовывать и манипулировать графическими объектами, используя вызовы API OpenGL. Экземпляр данного класса позволяет работать с экраном как же, как и SurfaceView. Чтобы выводить изображение 3D-модели на экран мобильного устройства нужно использовать ещё один объект, а именно экземпляр класса, реализовать интерфейс GLSurfaceView. Renderer. Для того, чтобы обрабатывать события прикосновения сенсорного экрана, нужно реализовать в классе GLSurfaceView обработчик событий Touch Events. GLSurfaceView. Renderer - это интерфейс, который определяет методы, необходимые для рисования графики в GLSurfaceView. Нужно обеспечить реализацию этого интерфейса как отдельного класса и присоединить его к экземпляру класса GLSurfaceView, используя метод GLSurfaceView.setRenderer(). Рассмотрим методы, которые нужно реализовать в GLSurfaceView. Renderer:
· onSurfaceCreated() - вызывается автоматически при создании GLSurfaceView. Также используется чтобы инициализировать графические объекты OpenGL;
· onDrawFrame() - система вызывает данный метод при каждой перерисовке GLSurfaceView. В данном методе и происходит само отображение 3D-моделей на экране;
· onSurfaceChanged () - вызывается при изменении геометрических размеров экрана, например когда меняется ориентация устройства.
2.3 Обзор библиотеки компьютерного зрения OpenCV
Библиотека OpenCV была создана для обеспечения общей инфраструктуры приложений компьютерного зрения и для упрощения использования машинного восприятия для коммерческих целей. Будучи лицензированным BSD-продуктом, OpenCV упрощает для предприятий использование и модификацию кода.
В библиотеке имеется более 2500 оптимизированных алгоритмов, которые включают в себя полный набор классических и современных программ и алгоритмов машинного обучения. Эти алгоритмы могут использоваться для обнаружения и распознавания лиц, идентификации объектов, определения действий человека по видео, отслеживания движений, создания 3D-моделей по видео или фото, создания 3D-точечных облаков с помощью стереокамер, совмещения изображений для получения высокого разрешения, сопоставления и поиска похожих изображений, удаления эффекта «красных глаз» из изображений, сделанных с помощью вспышки, слежения за движениями глаз, распознавания маркеров, чтобы накладывать их на дополненную реальность. В OpenCV насчитывается более 47 тысяч пользователей сообщества разработчиков и оценочное количество загрузок превышает 14 миллионов. Библиотека широко используется в компаниях, исследовательских группах и правительственных органах [17].
Рассмотрим как OpenCV хранит данные самой картинки, которую в дальнейшем можно обработать каким-либо методом. Так как скорость обработки картинки зависит от того, как именно в памяти компьютера будет храниться информация об изображении, очень важно использовать самый оптимальный способ. Изображения в OpenCV хранятся в экземпляре класса Mat. Это сделано для того, чтобы не затруднять работу программиста, потому что благодаря классу Mat не нужно постоянно выделять память и освобождать её после использования. Большинство функций OpenCV автоматически выделяют и освобождают память. Mat - это класс, содержащий два типа данных: заголовок матрицы (содержащий информацию, такую как размер матрицы, метод, используемый для хранения) и указатель на матрицу, содержащую значения пикселей изображения (принимая любые размеры в зависимости от метода, выбранного для хранения). Размер заголовка матрицы является постоянным, однако размер самой матрицы может изменяться от изображения к изображению. Размер матрицы для хранения изображения зависит от типа самой картинки, если она черно-белая, то оптимальным будет хранение только значений интенсивности белого.
Операции над матрицами очень просты. Идея заключается в том, что программа пересчитывает значение каждого пикселя в изображении в соответствии с шаблонной матрицей (также известной как ядро или маска, то есть её размер определяет, как будет изменяться изображение). Эта маска хранит значения, которые будут регулировать, насколько и как изменяются соседние пиксели (и текущий пиксель) на новое значение. С математической точки зрения происходит расчет средневзвешенного значения с заданными параметрами маски. Рассмотрим алгоритм повышения контрастности изображения. В основном для этого нужно применить следующую формулу для каждого пикселя, а именно:
При использовании маски, программа помещает центр матрицы маски (в верхнем регистре, отмеченном нулевым индексом) на пиксель, который нужно вычислить. Далее происходит суммирование значений пикселей, умноженные на перекрывающиеся значения матрицы. Так происходит до тех пор, пока каждый пиксель изображения не поменяет свое значение в соответствие со значениями маски.
В основном так и работают все методы и алгоритмы в библиотеке компьютерного зрения OpenCV. То есть происходит какой-либо математический расчет пикселей в пределах определенной маски и с определенными ограничениями.
Рассмотрим работу ключевых методов библиотеки компьютерного зрения OpenCV, использующихся в разрабатываемом приложении.
Метод Canny
Метод Canny находит края (или границы) изображения. Края(границы) - это такие кривые на изображении, вдоль которых происходит резкое изменение яркости или другие виды неоднородностей. Проще говоря, края - это те места, где происходит изменения цвета изображения, освещенности или глубины сцены, то есть изменяется ориентация поверхности. Обычно края отражают основные важные особенности изображения. Детектор Кенни является самым популярным методом выделения границ. Он появился в далеком 1986 году, но до сих пор является один из самых эффективных. Детектор Кенни используют для выделение существенных характеристик изображения и сокращение объема информации для последующего анализа.
Границы на изображении часто находятся в различных направлениях, из-за этого в алгоритме Кенни используется четыре фильтра для выявления горизонтальных, вертикальных и диагональных границ. Воспользовавшись оператором обнаружения границ (например, оператором Собеля) получается значение для первой производной в горизонтальном направлении (Gу) и вертикальном направлении (Gx).
Из этого градиента можно получить угол направления границы:
Угол направления границы округляется до одной из четырех углов, представляющих вертикаль, горизонталь и две диагонали (например, 0, 45, 90 и 135 градусов). После этого происходит проверка того, достигает ли величина градиента локального максимума в соответствующем направлении.
Например, для маски 3x3:
· при условии, что угол направления градиента равен нулю, то точка будет считаться границей в том случае, если её интенсивность больше чем у вышестоящей и нижестоящей точки;
· при условии, что угол направления градиента равен 90, то данная точка будет считаться границей, если её интенсивность больше чем у левостоящей и правостоящей точки;
· при условии, что угол направления градиента равен 135 градусам, то данная точка будет считаться границей, если её интенсивность больше, чем у точек, находящихся в верхнем левом и нижнем правом углу;
· при условии, что угол направления градиента равен 45 градусам, то данная точка будет считаться границей, если её интенсивность больше, чем у точек, находящихся в верхнем правом и нижнем левом углу.
Таким образом, получается двоичное изображение, которое будет содержать только границы исходного изображения. С помощью этого метода в приложении удалось осуществить поиск планировки квартиры из изображения, также с помощью него осуществляется поиск дверных и оконных проёмов.
Метод adaptiveThreshold
Данным метод является пороговым, то есть при определенном значении интенсивности пикселя, он либо делает его полностью черным, либо полностью белым. Другими словами, если значение пикселя больше порогового значения, ему присваивается одно значение (может быть белым), иначе ему присваивается другое значение (может быть черным). Использование статического для всего изображения порогового значения не всегда хорошо, так как в разных частях изображения часто разная освещенность. Из-за этого работа пороговых методов не является эффективной. В данном случае нужно использовать адаптивное пороговое значение, принцип которого реализован в методе adaptiveThreshold. При этом алгоритм вычисляет порог для небольших областей изображения, то есть для определенной маски. Таким образом, мы получаем различные пороги для разных областей одного и того же изображения, и это дает лучшие результаты для изображений с различным освещением. Этот метод конвертирует черно-белое изображение в бинарное (имеющее только два цвета - черный и белый) в соответствии с формулой:
(4)
Здесь dst (x, y) - значение пикселя в точке (x, y) конечного изображения, src (x, y) - значение пикселя в точке (x, y) исходного изображения, T (x, y) - полученное пороговое значение в пределах маски, путем расчета среднего значения интенсивностей пикселей маски минус заданная константа. maxValue - атрибут метода, по умолчанию 255 - белый цвет.
С помощью этого метода в приложении реализован алгоритм поиска стен. Вклад данного метода заключается в преобразовании черно-белого изображения планировки в бинарное, что значительно упрощает распознавание стен.
Метод findContours
Метод findContours является одним из самых важных в библиотеке OpenCV, так как контурный анализ - одни из эффективных способов описания, хранения, распознавания и сравнения графических образов и объектов. Контур - это внешние очертания (обвод) предмета / объекта. Обнаружение контуров на изображении имеет некоторые ограничения, так как в некоторых ситуациях невозможно правильно распознать контур объекта:
· из-за одинаковой яркости с фоном объект может не иметь чёткой границы, что приводит к невозможности выделения контура;
· перекрытие объектов или их группировка приводит к тому, что контур выделяется неправильно и не соответствует границе объекта.
Для работы алгоритма findContours вначале исходное изображение нужно конвертировать в бинарное с помощью метода Canny, то есть выделить его границы. По границам изображения и будет происходить поиск замкнутых контуров. После этого, из границ выделяются контуры и кодируются специальным образом с помощью цепного кода Фримена. Цепные коды применяются для представления границы в виде последовательности отрезков прямых линий определённой длины и направления. В основе этого представления лежит 4- или 8 - связная решётка. Длина каждого отрезка определяется разрешением решётки, а направления задаются выбранным кодом.
...Подобные документы
Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.
курсовая работа [2,6 M], добавлен 15.06.2013Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Постановка задач и требований к проектируемому интернет-приложению. Обоснование выбора системы управления базы данных и языков программирования. Разработка архитектуры заданного интернет-приложения, технико-экономическое обоснование его эффективности.
дипломная работа [461,3 K], добавлен 24.02.2013Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.
дипломная работа [2,2 M], добавлен 08.06.2017Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.
дипломная работа [4,1 M], добавлен 24.04.2013Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.
дипломная работа [1,4 M], добавлен 03.06.2014Анализ популярных игровых приложений. Жанр – аркады с геймплеем Runner. Получение продукта, ориентированного на людей, использующих мобильные устройства на базе Android, и предназначенный для развлечения пользователей. Визуальная составляющая приложения.
дипломная работа [742,7 K], добавлен 10.07.2017Электронные носители и их преимущества. Создание приложения электронного журнала для учета посещаемости и выполнения студентами лабораторных работ для мобильных устройств на базе Android. Автоматизация заполнения журнала, упрощение ведения учета.
курсовая работа [681,5 K], добавлен 13.06.2017Изучение языков программирования PHP, SQL, C++, HTML. Рассмотрение правил запуска и использования локального сервера Denwer. Составление технического задания по разработке программного продукта. Описание создаваемого мобильного и веб-приложения.
курсовая работа [212,4 K], добавлен 07.04.2015Анализ игровых жанров для мобильных устройств и целевой аудитории. Разработка концепции игрового приложения, основной механики, меню и интерфейса игры. Описание переменных скриптов. Реализация выбора цели и стрельбы. Настройка работоспособности игры.
дипломная работа [1,4 M], добавлен 19.01.2017Обзор рынка мобильных приложений, социальных сетей, аналогов. Обзор инструментов разработки: Android Studio, Microsoft visual С# 2012, PostgreeSQL, API Открытых данных Вологодской области, API Социальных сетей. Программный код, разработка интерфейса.
дипломная работа [2,6 M], добавлен 10.07.2017Общая характеристика и структурная схема приложения, требования к нему и функциональные особенности, сферы практического применения. Обоснование выбора языка программирования. Описание интерфейса и инструкция пользователя. Проведение листинга программы.
дипломная работа [1,0 M], добавлен 10.07.2017Анализ российского рынка мобильных приложений. Мобильное приложение как новый канал коммуникации с целевой аудиторией. Этапы создания мобильного приложения. План продвижения мобильного приложения в сети Интернет. Бесплатные инструменты продвижения.
дипломная работа [1,6 M], добавлен 23.06.2016Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.
дипломная работа [2,7 M], добавлен 03.04.2015Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.
дипломная работа [1,6 M], добавлен 17.06.2017Мобильные операционные системы. Основные характеристики систем iOS и Android, их достоинства, недостатки и индивидуальные возможности. Анализ преимуществ лидирующих мобильных платформ для разработки приложения. Основные различия в механизмах безопасности.
дипломная работа [806,5 K], добавлен 01.01.2018Проектирование удобного приложения для комфортной навигации по файлам облачного хранилища в одном файловом менеджере. Выбор интегрированной среды разработки. Выбор инструментов для визуализации приложения. Выбор средств отслеживания HTTPзапросов.
курсовая работа [3,6 M], добавлен 16.07.2016