mAPRS — мой авторский проект приложения для систем Android и iOS, предназначенного для работы с APRS. Оно появилось не потому, что на рынке не хватало приложений с поддержкой APRS: таких программ уже несколько, и многие из них отлично справляются со своей задачей. Причина была гораздо проще. При ежедневном использовании APRS меня раздражала необходимость постоянно вручную менять настройки в зависимости от того, чем я в данный момент занимаюсь. Когда я еду на автомобиле, я хочу отображаться иначе, чем во время пешего передвижения. Ещё один набор данных должен передаваться, когда я нахожусь дома. Каждый раз приходилось об этом помнить. И тогда возник вопрос: почему приложение не может делать это самостоятельно? Так началась разработка mAPRS.

Как появилась идея mAPRS?
Основная идея проекта с самого начала была очень конкретной: приложение должно работать максимально автономно. Я не хотел перед каждой поездкой задумываться, выбрал ли правильный значок. Не хотел после парковки автомобиля и начала прогулки вручную менять профиль. Не хотел также помнить о следующем переключении настроек по возвращении домой. mAPRS должно распознавать ситуацию и соответствующим образом реагировать.
Приложение определяет, чем я сейчас занимаюсь: еду на автомобиле, иду пешком или нахожусь дома. На основании этого оно автоматически выбирает подходящие элементы, передаваемые в APRS, — прежде всего значок, комментарий и соответствующий символ/знак станции. Поэтому пользователю не нужно каждый раз менять конфигурацию вручную. Именно эта автоматизация стала главной причиной создания mAPRS и одновременно особенностью, вокруг которой строится весь проект.
Интеграция с APRS-IS
mAPRS взаимодействует с сетью APRS-IS, то есть с интернет-составляющей инфраструктуры APRS. Приложение формирует информацию о станции и передаёт её в сеть. Благодаря этому позиция и другие данные могут отображаться также в других сервисах и приложениях, использующих APRS-IS. При этом для меня очень важно сохранять совместимость с APRS. Автоматизация не должна создавать собственный, закрытый способ работы. Напротив, mAPRS должно использовать существующую инфраструктуру APRS, выполняя за пользователя часть действий, которые обычно приходится выполнять вручную. С точки зрения самой сети это небольшое отличие, но для человека, ежедневно использующего приложение, оно очень существенно.
Трек должен оставаться точным
Одной из важных функций приложения является запись и отображение маршрута. Разрабатывая mAPRS, я хочу, чтобы оптимизация работы приложения не происходила за счёт качества трека. Если я двигаюсь по маршруту, то позже хочу видеть его реальный путь, а не несколько случайных точек, соединённых прямыми линиями. Поэтому механизмы, отвечающие за отправку информации в APRS, и механизмы построения трека не обязаны работать абсолютно одинаково. Для корректной работы и отображения маршрута приложению может требоваться подробная информация о движении, хотя не каждая из этих данных должна немедленно передаваться в APRS-IS.
Следующая задача: энергопотребление
Приложение, отслеживающее местоположение в течение многих часов, легко может стать одним из крупнейших потребителей энергии телефона. Поэтому оптимизация расхода заряда аккумулятора — следующий важный этап развития mAPRS. Однако речь не идёт о простейшем решении, при котором местоположение проверяется реже. Это могло бы ухудшить качество трека и эффективность определения способа передвижения. Цель — найти такой способ использования служб геолокации, при котором приложение будет получать необходимые данные, но одновременно не будет заставлять телефон выполнять ненужную работу. Особенно важно это во время длительной поездки или целого дня активности вне дома. mAPRS должно долго работать в фоновом режиме, не заставляя постоянно задумываться о том, сколько заряда осталось в телефоне.
Поэтапное развитие приложения
mAPRS постоянно развивается. Однако я стараюсь не вносить одновременно множество случайных изменений. У каждой новой версии есть конкретная задача — улучшить определённый элемент, изменить поведение приложения или оптимизировать существующий механизм. Затем новая версия проходит тестирование. Такой подход значительно упрощает проверку того, действительно ли изменение дало ожидаемый результат и не повлияло ли одновременно негативно на то, что раньше работало правильно. Это особенно важно для приложения, работающего с геолокацией в фоновом режиме. Некоторые проблемы не проявляются после пяти минут использования. Их можно заметить только во время длительной поездки, стоянки, прогулки или после нескольких часов работы. Поэтому тестирование в реальных условиях — очень важная часть всего проекта.
Речь не о создании ещё одного приложения APRS
mAPRS не должно конкурировать с каждой существующей программой количеством функций. Цель проекта была не в этом. Прежде всего я хочу решить проблему, с которой сам столкнулся при использовании APRS. Если приложение само может понять, что я еду, зачем мне вручную менять символ автомобиля? Если вскоре после этого я иду пешком, почему я снова должен открывать настройки? А если я вернулся домой, телефон тоже может это распознать. Именно эта идея для меня наиболее важна: APRS должно подстраиваться под действия пользователя, а не пользователь — под приложение.
Проект, на котором я сам многому учусь
mAPRS — одновременно практический и технический проект. Создавая его, я должен объединять несколько совершенно разных областей: работу операционной системы, геолокацию, работу приложения в фоновом режиме, сетевое взаимодействие, специфику APRS, анализ движения и оптимизацию энергопотребления. Кроме того, необходимо готовить новые версии, проводить тестирование и заниматься всем процессом распространения приложения. Каждый следующий этап выявляет новые проблемы, которые часто незаметны вначале. Именно это делает проект особенно интересным. mAPRS не создавалось как готовый продукт, спланированный от первого до последнего экрана. Оно развивается вместе с последующими тестами и идеями, возникающими при реальном использовании приложения.
Что дальше с mAPRS?
Основная идея остаётся неизменной: максимально автоматизировать работу с APRS, сохраняя контроль над действиями приложения. Следующие этапы развития прежде всего связаны с совершенствованием распознавания ситуации, корректным переключением профилей, работой геолокации, способом передачи координат и снижением энергопотребления. Я также хочу, чтобы пользователь ясно понимал, что в данный момент делает приложение и какие данные оно передаёт в APRS-IS. При этом я не стремлюсь добавлять функции только ради того, чтобы список стал длиннее. Я предпочитаю, чтобы несколько наиболее важных механизмов работали действительно хорошо.
mAPRS — меньше переключений, больше APRS
Проект начался с очень простого раздражения: постоянного ручного переключения настроек APRS. Так появилась идея приложения, которое наблюдает за ситуацией и само может решить, как в данный момент должна отображаться моя станция. Я еду. Я иду. Я дома. mAPRS должно распознать это и соответствующим образом выбрать значок, комментарий и символ APRS. Без необходимости помнить о переключателях. Без постоянного открытия настроек. Именно в этом заключается главная идея mAPRS — с неё и начался весь остальной проект.
Политика конфиденциальности приложения mAPRS находится здесь.

