
Создаем и настраиваем Android Studio проект.
Добавляем нижнее меню - BottomNavigationView
Создаем пустые фрагмены для дальнейшей работы с ними.
Созданем файл Extension и функцию для переключения фрагментов openFragment()
Создаем экран настроек. Добавляем PreferenceScreen и элемент для выбора время обновления GPS
Обработка нажатий и изменений Preference.
Продолжаем доделывать код экрана настроек. Пишем функцию для отображения на экране сохраненных значений.
Заканчиваем экран настроек. Добавляем еще один элемент в настройки, выбор цвета линии для отрисовки маршрута.
Предотвращаем открытие одного и того же фрагмента дважды.
Добавляем Open Street Maps в проект.
Настраиваем Open Street Maps в проекте.
Добавляем код для запроса разрешения у пользователя для использования сведений местоположения.
Делаем проверку включения GPS.
Создаем класс DialogManager.
Создаем interface для оброботки нажатия на кнопки AlertDialog.
Делаем обновление фрагмента после возврата из настроек.
Создаем разметку основного экрана fragment_main.xml.
Создаем классы LocationService и LocationModel.
Пишем код для инициализации и запуска сервиса.
Пишем код для остановки и запуска сервиса а также проверки состояния сервиса (запущен уже сервис или нет).
Создаем класс TimeUtils для работы с временем.
Создаем Timer для подсчета времени маршрута.
Делаем перезапуск таймера при возврате в приложение если идет запись маршрута.
ДОбавляем функцию получения месстоположения.
Пишем код для замера дистанции по местоположению.
Передача данных из сервиса на фрагмент.
Создаем BroadcastReceiver для получения данных из сервиса на фрагмент.
Создаем класс MainViewModel.
Пишем код для вычисления средней скорости движения.
Пишем код для отрисовки линии маршрута.
Создаем разметку для AlertDialog для сохранения маршрута.
Пишем код для показа AlertDialog.
Добавляем зависимости для использования библиотеки Room в нашем проекте. Создаем Entitie TrackItem.
Показываем информацию маршрута который хлтим сохранить в AlertDialog.
Пишем код для превращения координат в String для сохранения в БД.
Создаем класс для создания базы данных.
Создаем Dao интерфейс, и MainApp класс для инициализации БД.
Добавляем MainDb в MainViewModel класс и тестируем запись в БД.
Создаем разметку для элемента из списка маршрутов.
Создаем TrackAdapter для отображения списка сохраненных маршрутов.
Добавляем функционал для удаление маршрута из БД.
Создаем класс ClickType для определения типа нажатия на элемент из списка.
Создаем разметку для экрана просмотра пройденного маршрута в ViewTrackFragment.
Пишем код для отрисовки polyline в ViewTrackFragment.
ДОбавляем маркеры которые отмечают начало и конец пути.
Добавляем изменения цвета маршрута из настроек.
Исправляем ошибку со следыванием за местоположением и показываем местоположение в центре при нажатии на кнопку.
Исправляем ошибку с неверным замером дистанции если нет движения.
На данном курсе создаем приложение для записи маршрутов бега или хотьбы с помощью Gps. Изучаем использование OSM (Open Street Maps) для отображения карты на экране смартфона, добавления маркеров, отрисовка маршрута, время прохождения маршрута, дистанция и средняя скорость. Используем базу данных и библиотеку Room для сохранения маршрутов, запись в базу данных, считывание, удаление маршрутов. Научимся сохранять маршрут в виде координат в базе данных SQLite. Используем таймер для отсчета времени. А также в приложении для работы в фоновом режиме создаем сервис для получения местоположения. Научимся запускать, останавливать сервис, а также передавать информацию из сервиса во фрагменты с помощью класса Intent и Broadcast Receiver. Учимся правильно добавлять разрешения для использования местоположения в разных версиях андроид, так как в новых версиях для получения местоположения в фоновом режиме (при заблокированном экране или когда приложение закрыто) нам нужны дополнительные разрешения. Научимся создавать простой экран для настроек. Добавляем настройки для выбора цвета маршрута а так же выбор скорости обновления получения местоположения. Научитесь отслеживать состояние сервиса, замерять пройденное растояние и среднюю скорость по координатам. Пройдя данный курс вы будете понимать как добавить карты Open Street Maps в ваше приложение а также как работать с Gps, Service, Permissions, Fragments, PreferenceScreen, Room. Приложение можно будет развивать и дальше(для тех кому это интересно выйдет вторая часть).