Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Рисунок 12. Жизненный цикл Service
2.5 Разработка структуры ПО
При разработке приложения были использованы следующие классы:
1. MainActivity;
2. AddNewPlaceActivity;
3. MapsActivity;
4. SettingsActivity;
5. BackgroundService;
6. Profile.

Рисунок 13. Дерево классов
Класс MainActivity является главной активностью. В данном классе создается метод получения координат из FusedLocationProviderApi, переход к AddNewPlaceActivity, MapActivity и SettingsActivity, а также запуск сервиса BackgroundService.
Запуск приложений происходит с помощью намерения (Intent). Intent — механизм для описания одной операции (например, открыть фотографию, сделать звонок). В Android многие операции происходят через намерения. Также, через намерения можно передавать данные, которые затем считываются при помощи BroadcastReceiver.
BroadcastReceiver — один из важнейших компонентов при создании приложений для Android. Это компонент для получения внешних событий и реакции на них. Но самостоятельно Broadcast Receiver не выполняет никаких действий, а передает сигнал дальше, например, выводит уведомление.

Рисунок 14. Пример получения информации при помощи BroadcastReceiver
В классе AddNewPlaceActivity создается JSON файл, содержащий в себе профили, созданные пользователем в данной активности.
Класс MapActivity содержит в себе карту Google Map, отображающую текущее местоположение пользователя и метки, полученные из JSON файла.
Класс SettingsActivity обеспечивает пользователю выбор настроек для выбора способа оповещения и интервала обновления данных о местонахождении.
BackgroundService обеспечивает обработку поступающих координат в фоновом режиме.
2.6 Разработка геолокационного модуля
Для работы с FusedLocationProviderApi необходимо подключиться к сервисам Google Play.

Рисунок 15. Подключение к сервисам Google Play
После того, как приложение подключилось к GooglePlay Services, задаются параметры для запроса текущего местоположения.

Рисунок 16. Создание параметров получения координат
При выборе интервала, с которым приложение будет запрашивать координаты, и приоритета точности стояла проблема выбора оптимальных параметров. Был проведен тест, в котором проверялось потребление энергии при разных параметрах интервала обновления и точности координат, в результате которого был сделан вывод, что оптимальный интервал запроса обновления координат будет составлять полчаса при приоритете точности PRIORITY_HIGH_ACCURACY.
Далее, осуществляются запросы координат долготы и широты.

Рисунок 17. Запуск получения координат
После этого, в методах onLocationChanged и onConnected получаем координаты и отправляем их на обработку в BackgroundService.

Рисунок 18. Метод onConnected

Рисунок 19. Метод onLocationChanged

Рисунок 20. Создание и запуск сервиса, работающего в фоновом режиме
Затем, из полученных от сервиса данных создается уведомление, содержащее текущие координаты пользователя. Уведомление также создается если пользователь находится области действия, созданного им ранее профиля.
Уведомление — сообщение, которое отображается вне пользовательского интерфейса приложения. В начале, уведомление появляется в виде небольшой иконки в зоне уведомлений. Если пользователь хочет узнать подробную информацию, ему нужно открыть панель уведомлений.
2.7 Разработка модуля создания пользовательских настроек
При создании профиля настроек, пользователь должен ввести имя профиля, область, в которой данные настройки будут действовать, и затем сами настройки. Настройки включают в себя:
· Настройки громкости телефона:
o Silent — сигналы отсутствуют полностью;
o Vibrate — звуковые сигналы отсутствуют, включен вибровызов;
o Loud — звуковые сигналы полностью включены.
· Настройки беспроводных сетей. При необходимости, пользователь может задать выключение WiFi при применении настроек.
Затем, пользователь должен выбрать метод получения координат для создания профиля: от FusedLocationProviderAPI или через сервис геокодирования.
Далее, создается и сохраняется в память телефона структура JSON, включающая в себя:
· Название профиля;
· Массив координат;
· Массив настроек.

Рисунок 21. Создание и сохранение файла с настройками

Рисунок 22. Создание массива профилей

Рисунок 23. Создание массива координат

Рисунок 24. Создание массива настроек
2.8 Разработка модуля автономной работы
Автономная работа осуществляется посредством IntentService. На вход в IntentService поступают координаты и данные, полученные из файла с настройками. Далее идет обработка данных и передача их обратно в главную активность. Благодаря этому, приложение будет получать и обрабатывать данные даже тогда, когда оно неактивно.
2.9 Разработка окна настройки приложения
Класс SettingsActivity унаследован от родительского класса PreferenceActivity и описывает создание различных параметров, необходимых для работы приложения.
Настройки являются важной частью Android приложения. Со стороны разработчика очень важно — позволять пользователям изменять настройки приложения, в зависимости от их предпочтений.
Существует два способа создания настроек: через создание файла preference_settings. xml в директории res/xml, или задавать настройки из кода. В данной работе был использован первый метод.
Элементы настроек имеют следующие атрибуты:
· android:key — ключ, по которому в дальнейшем можно получить значение настройки;
· android:title — заголовок элемента настройки;
· android:summary — описание элемента настройки;
· android:defaultValue — значение настройки по умолчанию.
Доступные типы элементов настроек:
· CheckBoxPreference — флаговая кнопка, возвращающая значение true или false;
· ListPreference — группа переключателей, из которых быть выбран может только один;
· EditTextPreference — поле ввода, возвращающее строку;
· RingtonePreference — группа переключателей с выбором рингтона;
· Preference — настройка, работающая как кнопка;
· PreferenceScreen — экран с настройками. Один PreferenceScreen может вмещать в себя другой, тогда открывается новое окно с настройками;
· PreferenceCategory — категория настроек.
Настройки приложения хранятся в структуре Preference. Приложение автоматически создает файл в своей папке и хранит простые данные в виде пары «ключ-значение».
В данном приложении пользователю позволяется выбрать способ оповещения о нахождении профиля, соответствующего координатам, а также интервал, с которым приложение будет запрашивать текущие координаты.
2.10 Разработка пользовательского интерфейса. Прототипирование
При разработке пользовательского интерфейса были учтены рекомендации, высказанные в гайдлайнах. Интерфейс создан максимально простым, интуитивно понятным и не напрягающим глаза пользователя.
Проектирование интерфейса производилось при помощи приложения для прототипирования пользовательских интерфейсов FluidUI.
FluidUI — мощный онлайн-конструктор, с помощью которого можно быстро создать макет интерфейса приложений для iPhone, iPad, Android, Windows Phone.
Основные достоинства FluidUI:
1. Экономия времени. FluidUI позволяет за короткое время набросать эскиз интерфейса и сразу же протестировать его на мобильном устройстве.
2. Оптимизация процесса проектирования. Сервис дает возможность разбить работу на несколько этапов, что позволяет сокращать сроки разработки приложения.
3. Совместное проектирование. В разработке может участвовать несколько дизайнеров и программистов, что позволяет обсуждать процесс проектирования непосредственно во время его выполнения.
Также следует отметить плюсы данного сервиса как для клиента, так и для программиста.
Плюсы для клиента. Благодаря FluidUI можно наглядно показать заказчику наглядно показать работу приложения на промежуточных этапах с целью выявления ошибок и недочетов в логике работы приложения.
Плюсы для разработчика. Сервис FluidUI значительно упрощает задачу программистов по «сборке» всех экранов в единое функционирующее приложение.

Рисунок 25. Прототип пользовательского интерфейса
2.11 Разработка пользовательского интерфейса. Верстка
Для верстки приложений для Android существует пять стандартных типов:
1. AbsoluteLayout. Каждый элемент верстки будет иметь абсолютную позицию относительно верхнего левого угла экрана.
2. FrameLayout. Тип верстки, внутри которого может отображаться только один элемент в строке. Это означает, что при помещении нескольких элементов в один FrameLayout, один элемент будет накладываться на другой.
3. LinearLayout. Тип верстки, при котором область верстки делится на строки и в каждую строку может помещаться один элемент. Разделение на строки может быть, как вертикальным, так и горизонтальным. Также, существует возможность комбинировать вертикальную и горизонтальную разбивки, а также комбинирование разных типов верстки.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


