Разработка мобильного приложения для наблюдения за состоянием здоровья
Введение
приложение интерфейс мобильный
Целью данной работы является разработка мобильного приложения для операционной системы Android, которое позволяет следить за состоянием здоровья во время выполнения определённых физических упражнений, в данном случае - катание на лыжах. Мониторинг осуществляется с помощью фитнес-браслета, работающего по протоколу Bluetooth Low Energy (BLE).
В наше время приложения для наблюдения за состоянием здоровья стали очень популярны, и многие из них нацелены на получение различных измерений во время выполнения какого-либо физического упражнение (бег, плавание). Большинство таких приложений используют данные, полученные только с мобильного устройства, другие, в свою очередь, используют измерения с фитнес-браслетов. Примеры измерений: частота сердечных сокращений, пройденная дистанция, количество сделанных шагов, сожженных калорий. Актуальность и новизна данной работы заключается в разработке приложения, способного поддерживать фитнес-браслеты разных производителей и предоставлять рекомендации по улучшению состояния здоровья, основываясь на полученных измерениях.
Так как данное приложение нацелено на использование при выполнении физической активности, то разумно разработать для этого мобильное приложение. В качестве платформы выбрана операционная система Android.
Структурно данная работа состоит из 3 глав: в первой главе приведены результаты исследования предметной области и обзор аналогов, во второй описаны архитектура приложения, подходы к разработке и используемые технологий, третья глава описывает детали реализации.
Для достижения цели необходимо решить следующие задачи:
· анализ существующих решений;
· формулировка требований к приложению и составу выполняемых функций;
· выбор архитектурного решения, методов и подходов к реализации;
· проектирование интерфейса и взаимодействия пользователя с приложением;
· реализация выбранных методов и подходов;
· тестирование готового приложения;
· разработка технической документации.
·
1. Обзор предметной области
1.1 Обзор существующих решений
В этой главе приводится анализ приложений, размещенных на рынке Play Market, которые позволяют отслеживать состояние здоровья человека.
Ski Tracker
Данное приложение предоставляет пользователю возможность отслеживать максимальную и среднюю скорость, пройденную дистанцию, затраченное время и изменение высоты над уровнем моря во время катания. (Рис. 1)
Так же есть возможность просмотра маршрута на карте и истории активностей.
Данное приложение не имеет возможности отслеживать состояние здоровья.
Huawei Health
Данное приложение поддерживает только устройства, разработанные компанией Huawei, и позволяет отслеживать состояние здоровья во время сна и выполнения различных видов спортивных активностей, таких как: прогулка, бег, езда на велосипеде. После завершения активности, есть возможность просмотреть статистику в графическом представлении. Пульс представлен в виде графика с разбиением на диапазоны (Рис. 2). Пользователю даются советы как улучшить свой сон, но для упражнений подобный функционал отсутствует.
Рисунок 2. Huawei Health
MiFit
Данное приложение имеет такой же функционал, как и приложение Huawei Health (Рис. 3). Существенное отличие - оно поддерживает только фитнес-браслеты компании Xiaomi.
Краткий обзор существующих приложений
|
Ski Tracker |
Huawei Health |
MiFit |
||
|
Отслеживание активности катания на лыжах |
+ |
- |
- |
|
|
Поддержка фитнес-браслетов |
- |
+ (только устройства компании Huawei) |
+ (только устройства компании Xiaomi) |
|
|
Предоставление пользователю рекомендаций по выполнению физических упражнений |
- |
- |
- |
Решение, представленное в данной работе, нацелено на объединение функционала описанных приложений, дополняя его новым функционалом.
1.2 Доля рынка Android-устройств
Выбор операционной системы производился между двумя самыми популярными платформами: Android и iOS. В соответствии с информационным порталом Statista[4], во втором квартале 2018 года 88% проданных пользователям устройств работает на платформе Android. Таким образом, Android является наиболее популярной операционной системой, поэтому именно она была выбрана для данной работы. Язык программирования, в свою очередь, выбран Java.
1.3 Архитектура системы Android
В данном разделе рассматривается архитектура системы Android, её основных компонентов[10]. Выделяют 5 слоев (Рис. 4):
Архитектура Android
1. Приложения (Application layer). Является верхним уровнем в состав которого входит комплект базовых приложений, таких как: управление контактами, клиенты e-mail и SMS, интернет-бразуер и др.
2. Платформа приложений (Application Framework layer). Предоставляет ряд API (application programming interface) для работы приложения с компонентами системы. Некоторые их них:
· система представлений (View system) - служит для построения внешнего вида (UI - user interface) приложения;
· менеджер действий (Activity Manager) - управляет жизненным циклом приложений.
3. Библиотеки (Libraries layer). Включает набор C/C++ библиотек, необходимых для работы компонентов системы
4. Уровень среди исполнения (Android Runtime Layer). Среда выполнения. Основными составляющими которой являются набор библиотек ядра и виртуальная машина.
5. Ядро Linux (Linux Kernel). Ядро Android основано на Linux версии 2.6.
В данной работе такие API как View system и Activity Manager являются наиболее важными в использовании, так как приложение должно иметь понятный и удобный для использования интерфейс. Так же следует следить за жизненным циклом приложения и его компонентов. В качестве компонентов могут выступать Activity или Fragment, каждый из которых имеет свой жизненный цикл (Рис. 5). Так как приложение, описанное в данной работе, во время мониторинга активности должно отслеживать показатели как при выключенном экране, так и пре смене фрагмента / приложения, то необходимо следить за жизненным циклом фрагментов.
Рисунок 5. Жизненный цикл Activity и Fragment
1.4 Обзор технологии Bluetooth Low Energy
Для взаимодействия с браслетом Android SDK предоставляет сервисы для работы с устройствами, поддерживающими Bluetooth Low Energy технологию. Их использование становится доступным на операционной системе Android 4.3 (API Level 18).
Как и следует из названия, это беспроводная технология с низким энергопотреблением.
Терминология:
· Generic Attribute Profile (GATT) - позволяет отправлять и получать данные, используя BLE протокол. Данный профиль содержит в себе набор сервисов. Пример сервиса - Heart Rate Monitor.
· Service - набор характеристик
· Characteristic - это подобие класса, у которого есть значение. Запросом на осуществление какой-либо операции является изменение значения конкретной характеристики.
Список всех Bluetooth GATT профилей, сервисов, характеристик и как с ними работать можно найти на официальном сайте технологии Bluetooth.
Было проведено исследование рынка приложений, направленных на мониторинг физической активности (катание на лыжах), и приложений, использующих фитнес-браслеты для получения дополнительных о данных о состоянии здоровья. Проанализирован функционал существующих аналогов. Описана архитектура, структура и компоненты приложений Android, с учетом которых необходимо подходить к разработке. Проведен краткий обзор технологии Bluetooth Low Energy.
2. Проектирование приложения
В данной главе описывается подход к проектированию архитектуры приложения и методы решения поставленных задач.
2.1 Архитектура приложения
В качестве архитектуры выбран следующий подход - использовать одну Activity и несколько экземпляров класса Fragment, которые заменяют один на другой и находятся внутри основной Activity. Таким образом, получается следующий список компонентов:
Activities:
· MainActivity - основная Activity в которой находится контейнер для фрагментов.
Fragments:
· ActivityFragment - фрагмент для отображения активности катания на лыжах
· DeviceFragment - фрагмент, содержащий в себе список ранее сохраненных устройств с возможностью установки соединения с ними
· DeviceScanFragment - фрагмент, содержащий в себе список доступных для подключения Bluetooth устройств, который пополняется по мере сканирования
· HistoryFragment - фрагмент, содержащий в себе список истории тренировок с возможностью детального просмотра
· CustomMapFragment - фрагмент, который содержит в себе Google Map
· UserFragment - фрагмент необходимый для ввода пользовательских данных (возраст, вес, рост)
Помимо фрагментов так же существуют классы категории «Helper» ответственные за взаимодействие с фитнес-браслетом, с базой данных, содержащие в себе статические (static) public методы.
2.2 Модель базы данных
Для данного приложения необходимо три сущности.
|
Название сущности |
Название поля |
|
|
User |
ID |
|
|
Name |
||
|
Weight |
||
|
Age |
||
|
Device |
ID |
|
|
Name |
||
|
MAC_address |
||
|
Activity |
ID |
|
|
Time |
||
|
Max_speed |
||
|
Average_speed |
||
|
Distance |
||
|
Max_height |
||
|
Min_height |
||
|
Heart_rate (list in string presentation) |
||
|
Map_points (list of LatLng) |
2.3 Формулировка требований
Состав выполняемых функций для разрабатываемого приложения:
· Отслеживание активности катания на лыжах:
o максимальную и среднюю скорость;
o пройденную дистанцию;
o затраченное время;
o изменение высоты над уровнем моря во время катания;
o измерение пульса.
· Поддержка фитнес-браслетов разных производителей.
· Предоставление пользователю рекомендаций по выполнению физических упражнений (катание на лыжах).
2.4 Проектирование взаимодействия с пользователем
Исходя из функциональных требований к приложению разработан основной сценарий (use case) работы приложения (Рис. 6)
Use case диаграмма
В данной главе был рассмотрен подход к проектированию как всего приложения в целом, так и его компонентов: activities и fragments. Также была представлена модель базы данных и основной сценарий работы приложения.
3. Разработка приложения
3.1 Используемые средства и технологии
В данном разделе представлено описание библиотек, инструментов и технологий, использованных при разработке и описаны особенности реализации.
Приложение разрабатывалось в интегрированной среде разработки Android Studio, основанной на программном обеспечении IntelliJ IDEA от компании JetBrains. Данной программное обеспечение предоставляет все необходимые инструменты для разработки программного кода и дизайна приложения. Выбранный язык программирования для реализации приложения - Java.
Для реализации хранилища данных была выбрана ObjectBox. Это объектно-ориентированная NoSql база данных, которая создана и оптимизирована для использования в мобильных приложениях, а также в сфере IoT. Разработчики утверждают, что операции CRUD (create, read, update, delete) выполняются до 10 раз быстрее, чем при использовании SQLite. [1] (Рис. 7)
ObjectBox vs SQLite
3.2 Взаимодействие с фитнес-браслетом
В первую очередь приложению необходимо «найти» фитнес-браслет. Это осуществляется с помощью BluetoothAdapter. Пользователь может выбрать нужное устройство среди найденных по имени или по MAC-адресу.
Следующий шаг - соединение с устройством.
|
BluetoothGatt bluetoothGatt = bluetoothDevice.connectGatt (this, true, bluetoothGattCallback); |
Получив экземпляр класса BluetoothGatt, появляется возможность получить список всех доступных сервисов, после чего можно изменять и читать значения характеристик.
BluetoothGattCallback - класс, который содержит в себе методы, вызываемые при изменении различных параметров.
Наиболее важные:
· onCharacteristicChanged(…) - вызывается при изменении характеристики
· onCharacteristicRead(…) - сообщает статус чтения характеристики
· onCharacteristicWrite(…) - сообщает статус чтения характеристики