Мобильный хронометр — бесплатное Android-приложение с открытым исходным кодом для судей и волонтёров, которые фиксируют время прохождения участников на контрольных точках велогонок и других циклических видов (дуатлон, бег и т. п.). Оно превращает обычный телефон в надёжный терминал отсечки: крупная кнопка, ввод номера, точное время до миллисекунд и мгновенное сохранение.

Для чего нужно

На контрольных точках (КП), старте и финише судьи вручную отмечают, что участник с определённым номером прошёл точку в конкретный момент. «Хронометр» делает это быстро, точно и без потери данных. Приложение спроектировано по принципу «сначала офлайн»: связь на трассе часто отсутствует, поэтому все отметки сначала пишутся локально, а отправка на сервер идёт фоном и сама возобновляется, как только появляется интернет. Формат выгружаемого файла совместим с настольными судейскими инструментами, которые собирают итоговые протоколы.

Для кого

  • Судьи и волонтёры на контрольных точках, старте и финише.
  • Организаторы небольших и средних велособытий, дуатлонов, забегов.
  • Все, кому нужен надёжный и простой инструмент отсечки без специального оборудования — достаточно телефона на Android.

Ключевые возможности

  • Отсечка в один тап. Большая кнопка фиксирует прохождение участника; каждое нажатие сразу пишется в локальную базу данных.
  • Режим финиша. Отметка записывается как «финиш» вместо «очередного круга».
  • Дисквалификация с причиной. Отдельная (вторичная) кнопка и поле для необязательной причины, которая сохраняется вместе с отметкой.
  • Ввод номера цифрами или текстом — на случай буквенно-цифровых номеров.
  • Дублирование в файлы. Каждое нажатие зеркалируется в выбранную папку: общий файл результатов и отдельный неизменяемый снимок на каждое нажатие.
  • Автозагрузка на сервер. Результаты уходят на сайт по HTTP(S), когда есть связь; отправкой управляет системный планировщик, поэтому она переживает выход из приложения.
  • Режим хронометража. Фоновая служба не даёт системе «убить» приложение во время долгой гонки, экран не гаснет, а приложение подсказывает включить «Не беспокоить».
  • Индикаторы состояния выгрузки и предупреждение, если файл результатов не удалось сохранить.
  • «Новая гонка» — сброс списка отсечек и токена (бэкапы сохраняются).
  • Три языка интерфейса (русский, казахский, английский), светлая/тёмная/системная тема, сохранение состояния при сворачивании и перезапуске.

Как пользоваться

  1. Настройка перед гонкой. В «Настройках» задайте папку для данных, номер контрольной точки, язык/тему/тип ввода. Для отправки на сервер укажите адрес сайта, токен выгрузки и включите «Выгрузка на сайт». Сохраните.
  2. Начало работы. Нажмите «Включить режим хронометража» — появится постоянное уведомление, экран перестанет гаснуть. Рекомендуется включить «Не беспокоить».
  3. Отметка участников. Введите номер и нажмите «Отсечка» в момент прохождения. Для дисквалификации введите номер, при желании впишите причину и нажмите «Дисквалификация».
  4. Выгрузка. При включённой отправке и наличии связи результаты уходят автоматически; без связи копятся локально и отправятся позже сами.
  5. Завершение. Нажмите «Завершить режим хронометража». Между гонками используйте «Новая гонка» для сброса.

Надёжность и формат данных

Каждое нажатие сначала пишется в локальную базу данных, поэтому отметки не теряются при сбое, потере связи или перезагрузке телефона. В выбранной папке хранятся общий файл результатов (совместим с настольными судейскими инструментами) и отдельные неизменяемые снимки на каждое нажатие. Формат строки результата: номер#время#событие#, где событие — nextLap (круг), finish (финиш) или DSQ / DSQ: причина (дисквалификация).

Где скачать

Приложение бесплатное и с открытым исходным кодом. Установочный файл (APK) для Android — на странице релизов: странице релизов на GitHub (скачивайте последнюю версию). Специальное оборудование не требуется — нужен только телефон на Android.

Открытый код, вклад и предложения

Исходный код: репозиторий на GitHub. Нашли ошибку или хотите предложить функцию — создайте issue. Пул-реквесты приветствуются.