Мобільне застосування "Газові заправки України"

Android, iOS та Windows як основні платформи для розробки додатків для мобільних пристроїв. Перелік вимог до програмної системи. Основні вимоги, які є критичними для працездатності мобільного додатку. Аналіз основних напрямків розвитку системи.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 19.08.2016
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Харківський національний університет радіоелектроніки

Центр післядипломної освіти

Кафедра програмної інженерії

КОМПЛЕКСНИЙ КУРСОВИЙ ПРОЕКТ

пояснювальна записка

"Мобільне застосування "Газові заправки України"

Слухач гр.<ІПЗпз-15-1 Перешибкін М. М.

Керівник проекту, ст.викл. Широкопетлєва М.С.

Комісія: проф. Дудар З.В.

ст.викл. Широкопетлєва М.С.

доц. Мазурова О.О.

2016

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

Центр післядипломної освіти

Кафедра: Програмної інженерії

Дисципліна: Комплексний курсовий проект

Спеціальність: Інженерія програмного забезпечення

Або Програмне забезпечення систем

Курс 2 . Група ІПЗпз-15-1 . Семестр 3 .

ЗАВДАННЯ

на курсовий проект слухачу

Перешибкіну Максиму Миколайовичу

(Прізвище, Ім'я, По батькові)

Тема проекту: "Мобільне застосування "Газові заправки України"

Термін здачі слухачем закінченого проекту: “25” - березня - 2016 р.

Вихідні дані до проекту:

В мобільному додатку передбачити: відтворення карти України з визначенням маркерами місць розташування автомобільних газових заправних станцій(АГНС), реалізувати функцію отримання наявної інформації щодо заправної станції за допомогою властивостей сенсорного екрану мобільного пристрою, реалізувати підрахунок відстані до вибраної заправної станції. Використовувати ОС Windows, ОС Android, середу об'єктно-орієнтованого проектування IDE Eclipse, Java, Android studio.

4. Зміст розрахунково-пояснювальної записки:

Аналіз проблемної області і постановка задачі, аналіз вимог, опис об'єктних моделей, використовувані методи та алгоритми, опис розробленої програмної системи, аналіз дослідної експлуатації та можливих застосувань, висновки.______________________________________________________________________________________________________________________________________________________

Перелік графічного матеріалу (зміст слайдів на презентацію)

__Алгоритми, приклади екранних форм___________________

КАЛЕНДАРНИЙ ПЛАН

Назва етапів

Термін виконання етапів проекту

Примітка

1

Видача теми, узгодження і затвердження теми

15.01.2016

виконано

2

Аналіз предметної області

25.01.2016

виконано

3

Розробка постановки задачі

2.02.2016

виконано

4

Об'єктний аналіз поставленої задачі

16.02.2016

виконано

5

Розробка моделі взаємодії даних

23.02.2016

виконано

6

Розробка структури зберігання даних

1.03.2016

виконано

7

Створення коду програми

7.03.2016

виконано

8

Тестування і налагодження програми

12.03.2016

виконано

9

Оформлення пояснювальної записки, додатків, графічного матеріалу

16.03.2016

виконано

10

Перевірка виконаного проекту керівником, допуск до захисту

17.03.2016

виконано

11

Захист

25.03.2016

Слухач ______________________ Перешибкін М.М.

Керівник ______________________ Широкопетлєва М.С.

(прізвище, ініціали)

« 15 »_січня______________ 2016 р.

РЕФЕРАТ / ABSTRACT

Пояснювальна записка до проекту: 37 с., 9 рис., 2 додатки, 22 джерела.

Об'єктом дослідження є сегмент ринку мобільних додатків, що працюють у ОС Android, а саме, додатки що використовують засобі супутникової геолокації (GPS) і наявні картографічні сервіси, такі як Google Maps, Yandex Maps, для отримання інформації в залежності від поточної геопозиції користувача.

Метою роботи є розробка мобільного додатку для отримання інформації про розташування автомобільних газонаповнювальних станцій, візуалізація цих даних на основі картографічного сервісу Google Maps. Мобільний додаток розроблений на мобільній платформі ОС Android з використанням мови об'єктно-орієнтованого програмування Java.

У результаті роботи здійснена програмна реалізація мобільного додатку «Газові заправки України» на основі ОС Android з використанням API (application program interface - програмний інтерфейс додатку) Google Maps.

МОБІЛЬНИЙ ДОДАТОК, АНДРОИД, КАРТА, ГАЗОВІ ЗАПРАВКИ, УКРАЇНА, АГНС, JAVA, GOOCLE MAPS.

Explanatory note for course project: 37 pages, 6 pictures, 3 diagrams, 2 appendix, 22 sources.

The objective of this course project is to discover the market of Android mobile applications which use such tools as GPS (Global Positioning System), map services such as Google Maps and Yandex Maps and which provide to the user the information which related to user`s current geo position. As result of this course project is development of the Android mobile application which provide user with information about the automobile LPG filling stations in Ukraine - its locations is shown on the map of Ukraine using Google Map service.

Mentioned above Android mobile application was developed in integrated development environment Android Studio using objective-oriented programming language Java and Google Maps service API (application program interface).

MOBILE APPLICATION, ANDROID, MAP, AUTOMOBILE LPG FILLING STATIONS, UKRAINE, JAVA, GOOGLE MAPS.

ЗМІСТ

Вступ

1. Аналіз проблемної галузі і постановка задачі

1.1 Аналіз проблемної галузі

1.2 Постановка задачі

2. Перелік вимог до програмної системи

3. Опис прийнятих проектних рішень

4. Опис використання програмної системи

4.1 Опис програми

4.2 Аналіз напрямків розвитку системи

Висновки

Перелік посилань

Додаток А. Програмний код

ВСТУП

мобільний пристрій програмний додаток

В сучасних умовах тяжкої економічної кризи в Україні, особливо загострюється питання економії ресурсів і коштів як державних підприємств, так і приватних компаній та звичайних громадян держави. Питання економії коштів та енергоносіїв є одною з найбільш актуальних в цій час. Україна має на своїй території шість нафтопереробних заводів, які разом можуть переробляти 51 мільйон тонн сирої нафти на рік. При тому, що загальний видобуток нафти на материковій частині території України в 2015 році скоротилась на 10,9% (на 221,1 тис. тон) у зрівнянні з 2014 роком - до 1 805,6 тис. тон. Сучасна нафтопереробна промисловість України представлена шістьма нафтопереробними заводами загальною потужністю первинної переробки 51 -- 54 млн. т нафти на рік (це перевищує аналогічні потужності Польщі, Угорщини, Чехії та Словаччини взяті разом). Найпотужніші підприємства нафтопереробної промисловості України розташовані в Кременчуку, Лисичанську і Херсоні. Ці заводи виробляють 50 видів нафтопродуктів (всього відомо понад 300 найменувань цих продуктів). В умовах економічної криз, завантаженість вітчизняних нафтопереробних заводів знаходиться на рівні 25%. Застарілі технології та обладнання обумовлюють малу глибину переробки нафти -- близько 55-65% проти 80-90% в розвинених країнах. Загальні номінальні потужності установок поглибленої переробки нафти (каталітичного крекінгу, коксування, термічного крекінгу, виробництва масел, бітумів) на всіх НПЗ України становить 6,92 млн. т на рік, з них каталітичного крекінгу -- 3,68 млн т на рік, що становить відповідно 13,5 та 7,2% загальних потужностей переробки сирої нафти.

Наведені дані свідчать про певні диспропорції в джерелах ресурсів і потужностей для їх переробки. Видобуток газу в Україні (без урахування тимчасово окупованій території Автономної Республіки Крим, м. Севастополя та частині зони проведення антитерористичної операції) у січні-грудні 2015 р. порівняно з аналогічним періодом 2014 р. скоротився лише на 3,1% - до 19,2 млрд. куб. м.[1]. При цьому, Україна має на своєї території 7 газопереробних заводів. Найбільш сучасний і потужній газопереробний завод розташований в Харківській області - Шебелинський ГПЗ.

Таким чином, слід зазначити, що Україна має більш суттєві джерела ресурсів та потужності для видобутку і переробки газів і газового конденсату, аніж нафти. Саме розвиток переробки нафтового газу і газового конденсату є однім із шляхів диверсифікації джерел енергоносіїв. Крім цього, саме розвиток виробництва і реалізації скрапленого газу дає можливість отримання автомобільного палива по доступній ціні.

Окрім економічної складової використання скрапленого газу для автомобілів як шляху заощадження енергоносіїв, його використання має суттєвий екологічний ефект, у зв'язку з тим, що використання скрапленого газу у двигунах внутрішнього згорання менше забруднює навколишнє середовище.

Мета курсового проекту - розробка програмного забезпечення для водіїв, які обладнали свої автомобілі газовим устаткуванням і використовують скраплений газ як автомобільне пальне. Головна ідея проекту - надати водію можливість максимально використовувати газ для руху автомобіля і заздалегідь планувати його заправку газом, що знизить витрати коштів на пальне (газ суттєво дешевше бензину, навіть з урахуванням більшого, у порівнянні з бензином, споживання (більше на 10%)). Це питання є найбільш актуальним у тривалих подорожах, коли у водія не має інформації щодо найближчої автомобільної газової заправної станції.

1. АНАЛІЗ ПРОБЛЕМНОЇ ГАЛУЗІ І ПОСТАНОВКА ЗАДАЧІ

1.1 Аналіз предметної галузі

Основними платформами для розробки додатків для мобільних пристроїв є Android, iOS i Windows. Розподілення ринку продажу нових мобільних пристроїв у 2015 році можна визначити на прикладі ринку США, якій є одним з найбільших світових ринків мобільних пристроїв. Так, станом на кінець 2015 року, доля Android склала 66,9% (+2,5% за рік), iOS - 28,4% (-2,1%), Windows - 3,5% (без змін). При цьому слід зазначити, що упродовж довгих років, США були найбільш стабільним і постійно зростаючим ринком для реалізації мобільних пристроїв на iOS. Слід також зазначити досить цікавий факт - в 2015 році компанія Microsoft оновила середу розробки (integrated development environment - IDE) Visual Studio 2015, в якій підтримується можливість створення додатків з одного коду для основних мобільних платформ. А у лютому 2016 року було оголошено про придбання компанією Microsoft компанії Xamarin, яка реалізувала кросс-платформену середу Mono, яка використовує Common Language Infrastructure (CLI) i .NET від Microsoft для створення нативних додатків для Android i iOS. Вважаю, що рух Microsoft у напрямку розвитку інструментів для створення нативних додатків для інших платформ буде мати досить інтересний вплив на ринок розробки мобільних додатків і рівень популярності інструментів розробки, тому що у перше, Microsoft напряму конкурує з основними язиками розробки Java i Objective-C.

Якщо аналізувати зручність розробки мобільних додатків для різних платформ, можна зробити висновок, що по цьому критерію виграє платформа Android, завдяки відносної відкритості і простоті використання. iOS по цьому критерію посягає, мабуть, останню позицію, «завдяки» досить жорстким обмеженням щодо середи розробки (XCode) і апаратних засобів (лише комп'ютери Apple). Платформу Windows досить важко оцінювати у зв'язку з останніми змінами у підходах до розробки мобільних додатків і інструментах розробки. Зараз досить важко оцінити перспективи розвитку і просування мобільної платформи Windows. Вважаю, що до цього часу, з 2008-2009 років, компанія не приділяла необхідної уваги для розвитку своєї мобільної платформи. Тому, останні зміни на ринку мобільних платформ можуть мати досить інтересні наслідки і напрямки розвитку.

Найбільш популярною на цій час мобільною платформою є платформа Android. Яка, поки що, відрізняється від інших, простотою використання, ефективністю функціонування, розповсюдженістю. Основними напрямками розробки під Android як в Україні, так і у світі, є ігрова індустрія. Інша досить велика область розробки під Android - корпоративні додатки і програмні комплекси для компаній і бізнесу. Таки висновки можна зробити виходячи з досвіду використання найбільших й найпопулярніших сервісів для фрілансерів - Upwork.com i Freelance.com, на яких розміщуються закази на створення різних видів програмного забезпечення. Основними гравцями на ринку розробки мобільних додатків є дві групи виконавців - окремі фріланцери і компанії, які здійснюють розробку програмного забезпечення. Якщо аналізувати географічні регіони і представленість представників різних країн у вищезазначених системах, то лідерами з кількості виконавців є Індія, Китай, країни Азії і окремі арабські країни (Пакистан, наприклад). Але, виконавці з Індії,Азії і арабських країн мають досить неоднозначну репутацію у зв'язку з низькою якість виконання робіт. Про те, вони пропонують найнижчий рівень цін на розробку програмних продуктів.

У результаті аналізу мобільних додатків під Android, складається враження, що основний об'єм розробки спрямований на інші країни, що, в першу чергу, пов'язане з відсутністю постійного об'єму заказів на внутрішньому ринку. Це пов'язане, в свою чергу, зі складностями у продажу на внутрішньому ринку України платного програмного забезпечення. З іншої сторони, корпоративний сектор країни є досить консервативним і, у більшості випадків, не націлений на використання сучасних інформаційних технологій. Тому, вважаю розробку програмного забезпечення для внутрішнього ринку України досить важливою і цікавою задачею, яка буде просувати ринок внутрішньої розробки до світлого, правда не ближчого, майбутнього.

Незважаючи на бурхливий розвиток мобільної платформи Android і, відповідно, стрімке зростання обсягу програмного забезпечення для цієї платформи, існують досить важливі і інтересні напрямки і теми, які потребують більшої уваги розробників. Вперше, питання отримання інформації щодо розташування автомобільних газонаповнювальних компресорних станцій (АГНКС) -- станцій, які виробляють скраплений природний газ та здійснює заправку автомобілів та інших транспортних засобів, двигуни яких конвертовані або з початку розраховані на роботу на стиснутому природному газі - виникло в мене в 2014 р. Проект щодо створення подібної карти як веб-сервису був частково реалізований на сайті [2]. Але, судячи з відгуків відвідувачів сайту і власних спостережень, даний проект станом на 2014 рік припинив свій розвиток. Крім того, реалізація карти АГНКС у вигляді веб-сервіса незручна у разі її використання на мобільному пристрої.

Результати вивчення мобільних додатків у найбільшій системі розповсюдження Android додатків Google Play як у 2014 році, так і в 2016 році дає підстави стверджувати, що саме такого додатку (карта газових заправок України) взагалі не існує. Найбільш схожий за ідеєю додаток Gas Station існує для Росії [3]. Цій додаток реалізований за допомогою сервісів Yandex Maps. Інші існуючі додатки, в більшості, надають інформацію щодо наявних АЗС, цін на пальне та довідкову інформацію. З огляду на відгуки, ці додатки рідко оновлюються, мають досить перевантажені інтерфейси і, що найголовніше, не дають можливості отримувати інформацію по заправкам, які надають можливість заправлять автомобіль саме газом.

1.2 Постановка задачі

В курсовому проекті необхідно спроектувати та реалізувати додаток для мобільних пристроїв який надавав би користувачу інформацію щодо наявних АГНКС у графічному виді, а також дозволяв отримати додаткову інформацію по кожній заправочній станції (у разі наявності додаткової інформації). Додаток повинен використовувати стандарті служби мобільного пристрою: систему геопозиціювання, систему передачі даних, сенсорний екран, інші служби - у разі необхідності.

З огляду на наявну інформацію про існуючі додатки в обраної предметної галузі, їх функції, потреби потенційних користувачів, можна визначити наступні задачі для створення мобільного додатка «Газові заправки України»:

визначити джерело інформації про розташування АГНКС на території України;

визначити формат даних, які використовуються і прийнятність формату даних для використання у мобільному додатку. Визначити можливі шляхи перетворення наявних даних у прийнятний для мобільного додатку формат;

обрати мобільну платформу для розробки мобільного додатку (Android, iOS або Windows);

визначити інструменти, які необхідні для розробки мобільного додатку - необхідні середи розробки (integrated development environment - IDE) і програмні інтерфейси додатків(application programming interface - API);

визначити постачальника сервісу для реалізації базової функції - картографічного сервісу;

визначити потрібний функціонал додатку, виходячи з наявної інформації і можливостей, які надає API потрібного сервісу;

визначити поведінку користувача і необхідність створення інтерфейсу користувача, з огляду на наявні інструменти сервісів;

здійснити розробку мобільного додатку, враховуючи інформацію, що була отримана на попередніх етапах виконання проекту;

здійснити тестування розробленого додатку з метою знаходження наявних дефектів, недоліків і інших відхилень у поведінки додатку у порівнянні з результатом, який планувався.

2. ПЕРЕЛІК ВИМОГ ДО ПРОГРАМНОЇ СИСТЕМИ

Враховуючи дані, що отримані в результаті аналізу проблемної галузі і згідно з поставленою задачею, можна визначити наступні вимоги до мобільного додатку:

Бізнес-вимоги:

зазначене програмне забезпечення (ПО) призначене для отримання користувачем інформації щодо наявних АГНКС у графічній інтерпретації зі застосуванням відображення на карти території України відповідних позначок - наявних АГНКС. Зазначений контекст має певні обмеження: географічно, відображення інформації АГНКС обмежується територією України, інформація відображається лише по АГНКС, тобто про автомобільні заправні станції, які надають можливість заправки скрапленим газом (пропан-бутанова суміш). Надання інформації про АГНКС обмежується даними, які є доступні у публічному доступі.

Вимоги користувача:

запустити додаток на мобільному присторої;

визначити своє положення на карті;

визначити розташування АГНКС на карті;

отримати додаткову інформацію за визначеною АГНКС.

З огляду на визначені бізнес-вимоги и вимоги користувача, можна сформулювати наступні функціональні вимоги до мобільного додатку:

мобільний додаток встановлюється на мобільний прилад без додаткових умов і обмежень;

у разі запуску мобільного додатку, екран додатку повинен відображати карту України;

карта України повинна мати досить високу роздільність для можливості більш зрозумілого і точного відображення інформації у прив'язці до конкретної місцевості;

додаток повинен надавати можливість відображення поточної геопозиції користувача на карті додатку;

карта України повинна масштабуватися за допомогою властивостей сенсорного екрану - зведення або розведення двох областей дотику на бажаній ділянки карти;

карта повинна мати позначки (маркери), які відображають розташування наявних АГНС на території України;

маркери повинні добре читатися і мати легко впізнавальну форму, яка відображає сутність об'єкту;

додаток повинен надавати можливість отримати додаткову інформацію щодо АГНС, що відображені на карті. Обсяг додаткової інформації, що відображається, залежіть від обсягу і структури наявного джерела інформації;

індикація додаткової інформації здійснюється у прив'язці до конкретного маркеру на карті.

Враховуючи визначені вимоги до програмної системи діаграма прецедентів системи матиме вигляд, наведений на рис.2.1.

Рисунок 2.1 - Діаграма прецедентів

3. ОПИС ПРИЙНЯТИХ ПРОЕКТНИХ РІШЕНЬ

З огляду на проведений аналіз проблемної галузі, аналіз наявних технологічних платформ, стану ринку і розповсюдження мобільних платформ на світовому ринку, вважаю за доцільним для реалізації мобільного додатку вибрати програмну платформу Android. Доцільність вибору Android також пов'язана з вільним використанням і розповсюдженням мобільних додатків цій платформи, а також з вільним використанням язика програмування Java, який є базою для програмування під Android.

Обраний шлях реалізації додатку дозволяє скласти діаграму компоновки, наведену на рис.3.1.

Рисунок 3.1 - Діаграма компоновки додатку

Іншим фактором, вибору мобільної платформи Android є наявність власного картографічного сервісу Google Maps, у якого є досить розвинутий і добре задокументований application programming interface (API). З огляду на поширення використання операційної системи Android у мобільних пристроях, можна зробити висновок про досить широке використання і популярність картографічного сервісу Google Maps. Тому, у якості картографічного сервісу був обраний сервіс Google Maps. Слід зазначити, що для використання сервісів Google у додатках Android, які створюють інші програмісти, необхідно отримати відповідний API_KEY, який забезпечує працездатність сервісу, якій використовується у додатку. Для цього додатку був отриманий API_KEYдля використання сервісу Google Maps. Цій API_KEY вказується у AndroidManifest.xml додатка.

Пошук джерела даних виявився найбільш складної задачею у зв'язку з відсутність загальновідомих і доступних джерел інформації. Тим більш, які мають змогу надавати інформацію в форматі, що може бути використаний у мобільному додатку без додаткових операцій, таких як введення даних, сканування і т.п.

У результаті пошуку, був знайдений сайт http://agzs.info/, який за допомогою сервісу Google Maps реалізував веб-карту газових заправок. При цьому, у вільному доступі є файл з інформацією про газові заправки у форматі KML. KML - від англійського «Keyhole Markup Language» -- мова розмітки Keyhole) -- мова розмітки на основі XML для представлення трьохмірних геопросторових даних у програмі «Google Планета Земля» («Keyhole» до її придбання «Google»). XML - Розширювана мова розмімтки (англ. Extensible Markup Language, скорочено XML) -- запропонований консорціумом World Wide Web (W3C) стандарт побудови мов розмітки ієрархічно структурованих даних для обміну між різними застосунками, зокрема, через Інтернет [14]. Є спрощеною підмножиною мови розмітки SGML. XML-документ складається із текстових знаків, і придатний до читання людиною.

Для отримання необхідної інформації щодо кожної АГНКС до файлу KML застосовується парсер, який, використовує об'єктну модель документу. Об'єктна модель документа (англ. Document Object Model, DOM) є програмним інтерфейсом, який дозволяє здійснювати обхід цілого документа так, наче він є деревом, вузлами якого є об'єкти, що відтворюють зміст документа. Документ DOM може створюватись синтаксичним аналізатором або користувачами (з деякими обмеженнями). Типи даних вузлів DOM-дерев є абстрактними; реалізації мають власні, специфічні для мов програмування типи даних. Реалізації DOM мають тенденцію до інтенсивного використання пам'яті, оскільки зазвичай перед початком роботи документ має бути повністю завантажений, оброблений та перетворений на дерево об'єктів.

Нижче наведений фрагмент файлу KML з інформацією про АГНКС, який дає уяву про логічну структуру файлу даних:

#<?xml version='1.0' encoding='UTF-8'?>

<kml xmlns='http://www.opengis.net/kml/2.2'>

<Document>

<name>Карта газовых заправок Украины</name>

<description><![CDATA[Адреса газовых (пропан-бутан) автомобильных заправок.]]></description>

<Folder>

<name>Слой без названия</name>

<Placemark>

<name>БРСМ-Нафта</name>

<description><![CDATA[Адрес: Киевская

область, г.Борисполь, ул. Киевский Шлях 209]]></description>

<styleUrl>#icon-57</styleUrl>

<Point>

<coordinates>

30.987249999999996,

50.334737,0.0</coordinates>

</Point>

</Placemark>

Для створення додатку використовується integrated development environment (IDE) Android Studio 1.5.1, яка є основним інструментом створення додатків під Android. Ця система дозволяє створити стартовий екран для подальшого підключення джерел даних і налаштування управляючих елементів (див.рис.3.2).

Для реалізації додатку, IDE Android Studio був створений клас MyMainActivity, який успадковує від класу FragmentActivity і реалізує інтерфейси OnMapReadyCallback, GoogleMap.OnMarkerClickListener.

Метод onMapReady встановлює параметри завантаження і відображення карти на екрані мобільного пристрою. В додатку були встановлені наступні параметри для карти:

mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL) - вибір типу відображення карти «NORMAL» (див.рис.3.3), який є найбільш читабельним. Інші доступні типи відображення карти - HYBRID, SATELLITE, TERRAIN. Всі вказані типи були протестовані на зручність сприйняття;

Рисунок 3.2 - Стандартна початкова форма екрану мобільного додатку, який створюється у IDE Android Studio

mMap.setOnMarkerClickListener(this) - доступність взаємодії у разі натискання на позначку маркера;

mMap.setMyLocationEnabled(true) - дає змогу визначити поточне розташування користувача за допомогою GPS;

mMap.setBuildingsEnabled(true) - включено відображення окремих споруд на карті;

mMap.moveCamera( CameraUpdateFactory.newLatLng( myKharkiv ) ) - фокус карти встановлюється по заданих координатах. В цьому додатку - центр Харкова, координати (49.991002, 36.230676) ;

mMap.animateCamera( CameraUpdateFactory.zoomTo(13.0f ) ) - встановлюється приближення поверхні карти. Поточний рівень був обраний як найбільш комфортний для огляду і орієнтації.

Рисунок 3.3 - Відображення карти типу «NORMAL»

Наступна частина програмного коду - отримання необхідної інформації з KML-файлу. Спочатку, відкривається і зчитується KML-файл і дані з нього формуються у стандартний XML-файл. Як було зазначене вище, об'єктна модель документа (англ. Document Object Model, DOM) є програмним інтерфейсом, який дозволяє здійснювати обхід цілого документа так, наче він є деревом, вузлами якого є об'єкти, що відтворюють зміст документа. Наступний крок - обхід структури документу як дерева з обробкою вузлів-тегів. З початку, здійснюється пошук тегу <Placemark> у документі, який встановлюється корінням, і визначаються вузли-нащадки з тегамі <name> і <description>, з яких отримується текстовий контекст і перетворюється на рядковий формат. У разі визначення тегу <Point> - здійснюється обхід суб-вузлів з пошуком тегу <coordinates>, текстовий контекст якого перетворюється на рядковий формат. У наступному кроці, рядковий формат даних тегу <coordinates> розділяється на дві окремі частини з розділюючим знаком « , » - широту і довготу. Далі, рядковий формат широти і довготи перетворюється в формат double, на основі яких створюється об'єкт LatLang.

Таким чином, у результаті виконання коду-парсеру, ми послідовно отримуємо інформацію по кожній АГНКС у форматі: LatLang - координати, String description - опис, String name - найменування, після чого, здійснюється нанесення об'єкту Marker з визначеними властивостями на карту. Для більш наглядного і приємного вигляду, стандартне зображення маркерів типу «baloon» (див. рис.3.4) змінене на кастомне, тобто на зроблене для реалізації цього додатку графічну позначку (див. рис.3.5).

Рисунок 3.4 - Стандартна позначка «baloon», що використовується у Google Maps

Рисунок 3.5 - Розроблений графічний знак для позначення АГНКС

Діаграма активності «Використання сенсорного екрану» додатку наведена на рис.3.6.

Рисунок 3.6 - Діаграма активності «Використання сенсорного екрану».

4. ОПИС РОЗРОБЛЕНОЇ ПРОГРАМНОЇ СИСТЕМИ

4.1 Опис програми

При старті додатку на мобільному пристрої здійснюється завантаження по канал передачі даних (GPRS, HSPA) фрагменту карти Google Maps з фокусом на центральній частині міста Харків (див.рис. 4.1). Далі, на карті відображаються графічні знаки, якими позначені наявні АГНКС. На карті присутня позначка, натискання на яку призводить до визначення поточної геопозиції користувача і переведення фокусу карти на цю позицію.

Рисунок 4.1 - Початковий стан роботи додатку

Користувацький інтерфейс розробленого додатку є максимально простим і зрозумілим. Основні елементи інтерфейсу - карта Google Maps з позначкою визначення поточної геопозиції і маркери - розташування АГНКС. Натискання наобраний маркер АГНКС призводе до появи додаткового вікна-повідомлення, яке містить інформацію щодо назви, опису і координат. У зв'язку з тим, що інформація про наявні АГНКС є досить невпорядкованою, нажаль, відсутній єдиний формат назви и опису АГНКС. Але, наявність точних координат суттєво полегшує знаходження станцій за допомогою навігаційних додатків для мобільних пристроїв.

Основні вимоги, які є критичними для працездатності мобільного додатку є:

- мобільний пристрій з операційною системою Android;

- наявність і працездатність каналу передачі даних;

- наявність сенсорного екрану у мобільному пристрої;

- наявність датчику GPS мобільному пристрої (ця вимога є не критичною, оскільки буде обмежена лише функція визначення поточного місця знаходження користувача).

Отримання додаткової інформації по кожній АГНКС реалізоване шляхом натискання на графічну позначку АГНКС. Для цього, у програмі реалізований метод onMarkerClick, який при натисканні на позначку маркеру створює «Toast»-вікно (див. рис.4.2) біля маркеру з зазначенням властивостей цього об'єкту - назва, опис, координати. «Toast»-повідомлення є одною з стандартних бібліотек Android.

4.2 Аналіз напрямків розвитку системи

В процесі виконання комплексного курсового проекту з'явилась певна кількість ідей і напрямків, в яких можна продовжувати розвиток цього проекту:

Використання можливостей навігації. У ході розробки проекту ця функція була реалізована за допомогою Google Maps API, точніше, Google Maps Direction API на основі надсилання запитів до серверу Google Maps і отриманням повідомлення у вигляді JSON об'єкту. Але, протягом дня, коли ця функція була реалізована,сервер Google Maps почав

Рисунок 4.2 - Приклад «Toast»-повідомлення

надавати нульові результати запиту. Скоріш за все, це пов'язано с умовами використання сервісів Google:

- License Restrictions. Except as expressly permitted under the Terms, or unless you have received prior written authorization from Google (or, as applicable, from the provider of particular Content), Google's licenses above are subject to your adherence to all of the restrictions below. Except as explicitly permitted in Section 7 or the Maps APIs Documentation, you must not (nor may you permit anyone else to): 10.9 use the Service or Content with any products, systems, or applications for or in connection with:

- (a) real time navigation or route guidance, including but not limited to turn-by-turn route guidance that is synchronized to the position of a user's sensor-enabled device;

Тобто, Google забороняє використання свого сервісу або контенту, яке пов'язане з навігацією у реальному часі або прокладанням маршруту, включаючи, але не обмежуюся покроковим супроводженням маршруту, яке синхронізоване з позицією мобільного пристрою користувача, що обладнаний сенсором. Крім цього, було визначено, що використання сервісу для побудови маршруту має певні обмеження щодо кількості надісланих у відповідь одиниць на протязі дня. Більші об'ємі відповідей можливі тільки у разі платного використання.

Цікавим аспектом використання відомого картографічного сервісу Open Street Maps виявилась відсутність можливості навігації в України - у сервіс відсутні дані для навігації автошляхами.

Таким чином, один з напрямків розвитку проекту - використання інших постачальників картографічних і навігаційних сервісів.

Використання бази даних для зберігання інформації щодо АГНКС. Найбільш прийнятною є технологія SQLite, використання якої надасть можливість використовувати додавання та редагування інформації щодо АГНКС. А у подальшому, теоретично, використовувати модель «клієнт-сервер» для наповнення бази даних новими АГНКС і підтримання у актуальному стані баз даних додатків користувачів. Крім того, використання моделі «клієнт-сервер» надає можливість суттєво розширити функціонал додатку.

ВИСНОВКИ

Результатом виконання комплексного курсового проекту є створення мобільного додатку «Газові заправки України». Додаток являє собою повністю функціонально програмне забезпечення яке дозволяє користувачу отримувати необхідну специфічну інформацію - щодо розташування АГНКС на території України. Отримання цій інформації дає змогу користувачу, автомобіль якого обладнаний газовим обладнанням, завчасно планувати заправку автомобіля газом і, таким чином, знизити витрати бензину, який витрачається у разі закінчення газу. Як можливий супутній ефект можна визначити екологічний ефект, тому що вживання газу,як автомобільного палива, суттєво зменшує потрапляння шкідливих, забруднюючих речовин у атмосферу.

С технологічної точки зору, основна ціль проекту - створення власного додатку для мобільних пристроїв. Для розробки додатку були використані найбільш поширені й популярні технології - Android i Google Maps. Саме поєднання цих технологій забезпечило стабільне і швидке функціонування додатку.

Вважаю, що розроблений мобільний додаток дозволяє досягнути цілій, що були поставлені на початку проекту. Обрана проблемна область і тема курсового проекту є актуальними і такими, що потребують подальшого вивчення і розвитку.

ПЕРЕЛІК ПОСИЛАНЬ

1. Використання енергетичних матеріалів та продуктів перероблення нафти [Електронний ресурс]/ Державна служба статистики України . - Режим доступа : www/ URL: http://www.ukrstat.gov.ua/ - 10.03.2016 г. - Загл. з екрана.

2. Головна сторінка АГЗС.ИНФО [Електронний ресурс]/ АГЗС.ИНФО . - Режим доступу : www/ URL: http://agzs.info/ - 10.03.2016 г. - Загл. з екрана.

3. Сторінка додатку Gaz Stations на сійті сервісу Google Play Market/Google.- Режим доступу : www/ URL: https://play.google.com/store/apps/details?id=com.gazstation - 10.03.2016 г. - Загл. з екрана.

4. Варкин М. Разработка мобильних приложений под Android.[Текст] / Варкин М. - М.: Центр компьютерного обучения «Специалист» при МГТУ им.Баумана, 2012. - 128 с.

5. Герберт Шилдт. Java 8: Руководств для начинающих[Текст] / Герберт Шилдт; 6-е издание, М.: ООО «И.Д.Вильямс», 2015.- 720 с.

6. Канер Сэм. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бізнес-приложений. [Текст] / Сэм Канерб Джон Фолк, Енг Кек Нгуен; К. : «Диасофт», 2001.- 544с.

7. Лафоре Р. Структуры даннях и алгоритмы в Java. [Текст] / Р. Лафоре; СПб. : Питер, 2013.- 704 с.

8. Майер Р. Android 2: программирование приложений для планшетных компьютеров и смартфонов[Текст]/ Р. Майер; М.: Эксмо, 2011. - 672 с. ISBN 978-5-699-50323-0.

9. Медникс З. Программирование под Android. [Текст] / З. Медникс, Л. Дорнин, М. Блэйк, М. Накамура; 2-е изд., - СПб. : Питер, 2013.- 560 с.

10. Медведев В. И. Особенности объектно-ориентированного программирования на С++/CLI, C#, Java[Текст] / Медведев В. И. - 2-е издание, Казань: РИЦ «Школа», 2010. - 444с.

11. Харди Б. Программирование под Android . Для профессионалов. [Текст] / Б. Харди, Б. Филлипс; СПб. : Питер, 2014.- 592 с.

12. Цехнер М. Программирование игр под Android. [Текст]:/ Цехнер М.- СПб.: Питер, 2013.- 688с.

13. Эккель Б. Философия Java. [Текст] / Б. Эккель; СПб. : Питер, 2015.- 1168 с.

14. Bray, Tim; Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, Franзois Yergeau (September 2006). Extensible Markup Language (XML) 1.0 (Fourth Edition) -- Origin and Goals. World Wide Web Consortium. Архів оригіналу за 2013-06-23.

15. Burry Burd. Java Programming for Android Developers for Dummies. [Текст] / Burry Burd; John Wiley & Sons, Inc. : Hoboken, New Jersey, 2014.- 458 с.

16. Cay S. Hortsmann. Java SE8 for the Really Impatient[Текст] / Cay S. Hortsmann; Pearson Education, Inc. : New Jersey, 2014. - 238 c.

17. Cay S. Horstmann, Gary Cornell. Core Java Volume I fundamentals [Текст] / Cay S. Horstmann; Gary Cornell; Eighth Edition, Sun Microsystems, Inc.: Birmingham, UK, 2008. - 825c.

18. Cay S. Horstmann, Gary Cornell. Core Java™ Volume II-Advanced Features [Текст] / Cay S. Horstmann; Gary Cornell; Eighth Edition, Sun Microsystems, Inc.: Birmingham, UK, 2008. - 922 c.

19. Dasgupta S. Algorithms. [Текст] / S. Dasgupta, C.H. Papadimitriou, U.V. Vazirani, 2006.- 318 с.

20. Elliotte Rusty Harold, W. Scott Means (липень 2002). XML in a Nutshell (англ. ) (вид. друге). O'Reilly. ISBN 0-596-00292-0.

21. Jeff Friesen. Learn Java for Android Development [Текст] / Jeff Friesen; Third Edition, 2014. - 1190 c.

22. John Horton. Learning Java by Building Android Games[Текст] / John Horton; Packt Publishing : Birmingham, UK, 2015. - 392 c.

ДОДАТОК А

Фрагмент коду програми

package com.pereshibkin.max.gasstations;

import android.graphics.Point;

import android.net.Uri;

import android.support.v4.app.FragmentActivity;

import android.os.Bundle;

import android.text.Html;

import android.util.Log;

import android.view.Gravity;

import android.widget.Toast;

import com.google.android.gms.appindexing.Action;

import com.google.android.gms.appindexing.AppIndex;

import com.google.android.gms.common.api.GoogleApiClient;

import com.google.android.gms.maps.CameraUpdateFactory;

import com.google.android.gms.maps.GoogleMap;

import com.google.android.gms.maps.OnMapReadyCallback;

import com.google.android.gms.maps.Projection;

import com.google.android.gms.maps.SupportMapFragment;

import com.google.android.gms.maps.UiSettings;

import com.google.android.gms.maps.model.BitmapDescriptorFactory;

import com.google.android.gms.maps.model.LatLng;

import com.google.android.gms.maps.model.Marker;

import com.google.android.gms.maps.model.MarkerOptions;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

import java.io.IOException;

import java.io.InputStream;

import java.util.HashMap;

import java.util.Map;

import java.util.StringTokenizer;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

public class MyMainActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener {

private GoogleMap mMap;

Map<String, String> mMapLocation2Description = new HashMap<String, String>();

private static String MakeLocationMapKeyString( LatLng aLocation ) {

return String.format("%f-%f",aLocation.latitude,aLocation.longitude);

}

private void RegisterLocationDescription( LatLng aLocation, String strDescription ) {

mMapLocation2Description.put(MakeLocationMapKeyString(aLocation),strDescription);

}

private String GetLocationDescription( LatLng aLocation ) {

return mMapLocation2Description.get(MakeLocationMapKeyString(aLocation));

}

/**

* ATTENTION: This was auto-generated to implement the App Indexing API.

* See https://g.co/AppIndexing/AndroidStudio for more information.

*/

private GoogleApiClient client;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_my_main);

// Obtain the SupportMapFragment and get notified when the map is ready to be used.

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()

.findFragmentById(R.id.map);

mapFragment.getMapAsync(this);

// ATTENTION: This was auto-generated to implement the App Indexing API.

// See https://g.co/AppIndexing/AndroidStudio for more information.

client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();

}

/**

* Manipulates the map once available.

* This callback is triggered when the map is ready to be used.

* This is where we can add markers or lines, add listeners or move the camera. In this case,

* we just add a marker near Sydney, Australia.

* If Google Play services is not installed on the device, the user will be prompted to install

* it inside the SupportMapFragment. This method will only be triggered once the user has

* installed Google Play services and returned to the app.

*/

@Override

public void onMapReady(GoogleMap googleMap) {

mMap = googleMap;

mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

//mMap.setMapType( GoogleMap.MAP_TYPE_HYBRID );

//mMap.setMapType( GoogleMap.MAP_TYPE_SATELLITE );

//mMap.setMapType( GoogleMap.MAP_TYPE_TERRAIN );

mMap.setOnMarkerClickListener(this);

mMap.setMyLocationEnabled(true);

mMap.setBuildingsEnabled(true);

// UiSettings uis = mMap.getUiSettings();

// uis.setZoomControlsEnabled(true);

// uis.setCompassEnabled(true);

// uis.setIndoorLevelPickerEnabled(true);

// uis.setScrollGesturesEnabled(true);

// uis.setZoomGesturesEnabled(true);

// uis.setRotateGesturesEnabled(true);

// uis.setTiltGesturesEnabled(true);

// uis.setAllGesturesEnabled(true);

// uis.setMyLocationButtonEnabled(true);

// uis.setMapToolbarEnabled(true);

LatLng myKharkiv = new LatLng(49.991002, 36.230676);

mMap.moveCamera( CameraUpdateFactory.newLatLng( myKharkiv ) );

mMap.animateCamera( CameraUpdateFactory.zoomTo(13.0f ) );

String strPathToXML = getResources().getString(R.raw.my_map_data);

Document xmlDoc = null;

try {

InputStream fis = getResources().openRawResource( getResources().getIdentifier( "my_map_data", "raw", getPackageName() ) );

xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( fis );

} catch ( ParserConfigurationException e ) {

Log.e( "ParserConfigurationException", e.getMessage() );

} catch ( SAXException e ) {

Log.e( "SAXException", e.getMessage() );

} catch ( IOException e ) {

Log.e("IOException", e.getMessage());

}

if( xmlDoc != null) {

Element root = xmlDoc.getDocumentElement();

if (root != null) {

NodeList nodesPlacemark = root.getElementsByTagName("Placemark");

int idxPlacemark, cntPlacemarks = nodesPlacemark.getLength();

for (idxPlacemark = 0; idxPlacemark < cntPlacemarks; ++idxPlacemark) {

Node currNodePlacemark = nodesPlacemark.item(idxPlacemark);

String strNodeNamePlacemark = currNodePlacemark.getNodeName().toLowerCase();

if (strNodeNamePlacemark.equals("placemark")) {

String strName = "", strDescription = "";

LatLng aLatLng = null;

for( Node currNodeProp = currNodePlacemark.getFirstChild(); currNodeProp != null; currNodeProp = currNodeProp.getNextSibling() ) {

String strNodeNameProp = currNodeProp.getNodeName().toLowerCase();

switch (strNodeNameProp) {

case "name":

strName += currNodeProp.getTextContent();

break;

case "description":

strDescription += currNodeProp.getTextContent();

break;

case "point": {

for( Node currSubnode = currNodeProp.getFirstChild(); currSubnode != null; currSubnode = currSubnode.getNextSibling() ) {

String strNodeNameCoordinates = currSubnode.getNodeName().toLowerCase();

if (strNodeNameCoordinates.equals( "coordinates" )) {

String str = currSubnode.getTextContent();

StringTokenizer tokens = new StringTokenizer(str, ",");

String strLong = tokens.nextToken();

String strLat = tokens.nextToken();

aLatLng = new LatLng(Double.parseDouble(strLat), Double.parseDouble(strLong));

break;

}

}

}

break;

}

}

if( aLatLng != null ) {

RegisterLocationDescription(aLatLng, strDescription);

mMap.addMarker(

new MarkerOptions()

.position(aLatLng)

.title(strName)

.icon(BitmapDescriptorFactory.fromResource(R.drawable.gas_station_003))

);

}

}

}

}

}

}

@Override

public boolean onMarkerClick(Marker aMarker) {

Projection projection = mMap.getProjection();

LatLng markerLocation = aMarker.getPosition();

Point screenPosition = projection.toScreenLocation(markerLocation);

String str = String.format("<b>Name:</b> %s<br/><b>Description:</b> %s<br/><b>Long:</b> %.3f<br/><b>Lat:</b> %.3f<br/>", aMarker.getTitle(), GetLocationDescription(markerLocation), markerLocation.longitude, markerLocation.latitude);

// Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT);

Toast toast = Toast.makeText(getApplicationContext(), Html.fromHtml(str), Toast.LENGTH_LONG);

toast.setGravity(Gravity.TOP | Gravity.LEFT, screenPosition.x, screenPosition.y);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

return true;

}

@Override

public void onStart() {

super.onStart();

// ATTENTION: This was auto-generated to implement the App Indexing API.

// See https://g.co/AppIndexing/AndroidStudio for more information.

client.connect();

Action viewAction = Action.newAction(

Action.TYPE_VIEW, // TODO: choose an action type.

"MyMain Page", // TODO: Define a title for the content shown.

// TODO: If you have web page content that matches this app activity's content,

// make sure this auto-generated web page URL is correct.

// Otherwise, set the URL to null.

Uri.parse("http://host/path"),

// TODO: Make sure this auto-generated app deep link URI is correct.

Uri.parse("android-app://com.pereshibkin.max.gasstations/http/host/path")

);

AppIndex.AppIndexApi.start(client, viewAction);

}

@Override

public void onStop() {

super.onStop();

// ATTENTION: This was auto-generated to implement the App Indexing API.

// See https://g.co/AppIndexing/AndroidStudio for more information.

Action viewAction = Action.newAction(

Action.TYPE_VIEW, // TODO: choose an action type.

"MyMain Page", // TODO: Define a title for the content shown.

// TODO: If you have web page content that matches this app activity's content,

// make sure this auto-generated web page URL is correct.

// Otherwise, set the URL to null.

Uri.parse("http://host/path"),

// TODO: Make sure this auto-generated app deep link URI is correct.

Uri.parse("android-app://com.pereshibkin.max.gasstations/http/host/path")

);

AppIndex.AppIndexApi.end(client, viewAction);

client.disconnect();

}

Размещено на Allbest.ru


Подобные документы

  • Основи проектування мобільного додатку для операційної системи Android з використанням хмарної бази даних Cloud Firestore. Аналіз основних труднощів, які виникають під час розробки додатків. Визначення основних переваг та недоліків хмарних баз даних.

    статья [195,3 K], добавлен 07.02.2018

  • Cтворення системи для впорядковування інформації про файли, що зберігаються на компакт-дисках або інших знімних носіях. Загальні вимоги до розробки. Технології розробки Windows-додатків. Опис функціональних можливостей і програмної реалізації системи.

    дипломная работа [891,7 K], добавлен 25.10.2012

  • Апаратні особливості та порівняльна характеристика мобільних пристроїв. Огляд програм-аналогів. Інструментальні засоби для реалізації, вхідні та вихідні дані, специфікація вимог, проектування моделі і архітектури програмного забезпечення для Android.

    дипломная работа [3,2 M], добавлен 10.06.2014

  • Призначення та основні функції, типи та конструкція операційної системи. Історія розробки та вдосконалення основних операційних систем найбільшими виробниками (Unix, Linux, Apple). Порівняльні характеристики операційних систем. Покоління Windows та NT.

    курсовая работа [1,3 M], добавлен 28.02.2010

  • Проблема розробки інтелектуального агента. Вибір і обґрунтування аналогу. Реалізація програмної системи збору та аналізу статистичних даних про контакти користувача. Створення файлів, встановлення додатків Android (APK) з файлів скриптів на мові Python.

    дипломная работа [2,7 M], добавлен 05.10.2012

  • Характеристики вузлів системи автоматичного закривання жалюзі. Розробка схеми електричної функціональної. Блок-схема алгоритму роботи пристрою. Середовище розробки програмної частини пристрою. Основні компоненти розробки програмної частини системи.

    курсовая работа [1,0 M], добавлен 06.12.2014

  • Опис основних етапів розробки архітектури програмної системи: структурування системи, моделювання управління, декомпозиція підсистем. Ознайомлення із кроками створення інтерфейсу користувачів як однієї із фаз проектування програмного забезпечення.

    реферат [20,7 K], добавлен 24.11.2010

  • Порядок розробки автоматизованої системи електронних міжбанківських переказів Національного банку України, її призначення та мета створення, загальний опис вхідної та вихідної інформації, основні функції. Вимоги до апаратної системи та архітектура СЕП-2.

    контрольная работа [644,5 K], добавлен 26.07.2009

  • Виявлення основних сутностей предметної області. Побудова схеми реляційної бази даних. Вбудовані процедури і тригери. Опис архітектури програмної системи і концептуальної моделі бази даних, програмної реалізації та інтерфейсу користувача додатку.

    курсовая работа [4,3 M], добавлен 05.12.2012

  • Призначення і характеристика операційної системи Windows 98. Огляд основних можливостей. Встановлення ОС Windows 98. Основні компоненти вікон. Панель задач, головне початкове меню. Перемикання між програмами. Відкриття документів, планування завдань.

    дипломная работа [138,9 K], добавлен 28.10.2014

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