Итак, я недавно начал осваивать программирование с ассистированием от AI.
Ну что... Я впечатлён! А теперь чуть поподробнее.
Я решил написать нативное приложение для андроид на kotlin.
Суть приложения: запись трека тренировки (бег / вело / прогулка).
Но к этому есть предыстория.
На просторах интернета я встретил одну библиотеку для записи GPS-трекинга в бэкграунде, с весьма любопытной идеей: когда мы останавливаемся - GPS на телефоне отключается (для экономии батареи). Далее GPS включается только в момент, когда детектировано начало движения. Детекция движения происходит через одно гугловое API, отслеживающее данные с датчиков телефона, а именно: акселерометр, гигрометр, магнетометр.
API называется "Activity Recognition Transition API", и оно, кстати, использует machine learning, для обработки данных с датчиков.
Для тех кому прям интересно, здесь есть коротенькая видео презентация: https://developers.google.com/location-context/activity-recognition
Так вот, я скачал упомянутую библиотечку, в версии для react-native (ну, для меня так проще), быстро набросал приложение (благо там в комплекте есть демо-приложение, так что много кодить не пришлось).
Ну и - пошёл в поля. Тестировать.
Оказалось, что в реальности детекция начала активности происходит... как бы это сказать... гораздо и гораздо медленнее, чем я этого ожидал. Вплоть до того, что: сел на вел, поехал, а событие "on_bicycle" произошло через 500-700 метров. Ну иногда быстрее, но в целом... неудовлетворительно.
Мне стало интересно - действительно гугловое API работает так хреновастенько... или может автор библиотеки намудрил там что-то.
Это, собственно, была предыстория, почему я решил написать своё приложение на эту тему :)
Сначала я поискал библиотеку для react-native, которая была бы чисто обёрткой и позволяла бы воспользоваться упомянутым API. И она даже нашлась... Но репозиторий не обновлялся 7 лет. Что в современном мире означает, что мне пришлось бы использовать очень старые версии всего, чтобы её заюзать. Не хотелось копаться в старом, поэтому решил набросать нативное приложение на kotlin. А с учётом того, что до этого момента я вообще ничего не знал о kotlin, то, конечно же, я решил прибегнуть к помощи AI.
Какой AI использовать - я долго не выбирал, прибегнул к "попсовому" варианту - тупо chat-GPT. Что хочу сказать - он помог мне довольно быстро написать рабочее приложение и заодно чуток приобщиться к android studio и kotlin. На это ушёл всего один вечер (ну ладно, это длилось до середины ночи). Я считаю это успешный успех, т.к. без него я ковырялся бы, даже не знаю сколько.... как минимум несколько дней точно.
В общем, вышло прикольное приложение... В полях я его тоже уже потестировал. Про гугловое API детекции активностей могу сказать следующее: если GPS включен, то детекция происходит довольно быстро, приемлемо быстро. И довольно точно - я тестировал велосипед, ходьбу, бег. А вот если GPS выключен, и ему приходится полагаться только на акселерометр-гирометр-магнетометр.... Всё гораздо печальней. В принципе, детекция тоже срабатывает... Но неприемлемо долго. Поэтому от главной идеи автора упомянутой библиотеки, видимо, придётся отказаться. Ну или не полагаться на API гугла... но самому анализировать данные с датчиков - мне пока что не хочется.
Образец трека, записанного разработанным приложением:
https://zvp.ru/misc/maps/out2025-03-12.html
(Хостится на raspberry, да и интернет убогий, надеюсь, не заддосят :))
Разными цветами отображаются разные виды activity, как они были задетектированы google-api.
Это - велопокатушка, поэтому, в основном, синий цвет.
А на картинках сегодня - маленький баттл между chat-gpt (последняя картинка) и deepseek (идёт первее, на скриншоте есть лого дипсика).
Вы, кстати, за кого? Напишите в комментариях :)
Также буду рад увидеть советы, на тему, как можно оптимизировать всё описанное, в частности - процесс разработки (ассистирование от AI), да и по возможной оптимизации технических моментов тоже интересно.
Несмотря на то, что зарегистрирован здесь более 6 лет, это мой первый пост, так что прошу сильно не пинать :)