docs: подробный README (разбор проекта при переносе в Gitea)
Старый README сохранён как README.upstream.md.
Этот коммит содержится в:
+74
-17
@@ -1,27 +1,84 @@
|
||||
# [Traccar Client for Android](https://www.traccar.org/client)
|
||||
# traccar-client-android (форк)
|
||||
|
||||
[](https://play.google.com/store/apps/details?id=org.traccar.client) [](https://f-droid.org/repository/browse/?fdid=org.traccar.client)
|
||||
Android-приложение Traccar Client — GPS-трекер, который снимает координаты устройства и отправляет их на сервер Traccar по протоколу OsmAnd (HTTP GET с параметрами). Работает фоновой службой, накапливает точки в локальной SQLite-очереди и досылает их при появлении сети.
|
||||
|
||||
## Overview
|
||||
Форк сделан как резервная копия официального репозитория [traccar/traccar-client-android](https://github.com/traccar/traccar-client-android) (автор — Anton Tananaev) в самохостовом Gitea: приложение используется вместе со своим сервером Traccar, и наличие независимой копии исходников гарантирует возможность пересобрать APK даже без доступа к GitHub.
|
||||
|
||||
Traccar Client is an Android GPS tracking application. It can work with Traccar open source server software.
|
||||
Документация оригинала (ссылки на Google Play/F-Droid, команда, лицензия Apache 2.0) сохранена в [README.upstream.md](README.upstream.md).
|
||||
|
||||
## Team
|
||||
## Отличия от оригинала
|
||||
|
||||
- Anton Tananaev ([anton@traccar.org](mailto:anton@traccar.org))
|
||||
Изменений нет. Все 438 коммитов принадлежат авторам оригинала (386 + 19 — Anton Tananaev, остальные — внешние контрибьюторы через pull request'ы). Собственных правок владельца форка в истории нет. Форк взят как резервная копия.
|
||||
|
||||
## License
|
||||
## Стек
|
||||
|
||||
Apache License, Version 2.0
|
||||
- Kotlin 1.8.0, Android SDK (compileSdk/targetSdk 33, minSdk 16)
|
||||
- Gradle 7.5.1 + Android Gradle Plugin 7.4.1
|
||||
- AndroidX: `core-ktx` 1.9.0, `preference-ktx` 1.2.0, `multidex` 2.0.1, Material Components 1.6.1
|
||||
- `com.github.judemanutd:autostarter` 1.1.0 и `dev.doubledot.doki` — обход агрессивного энергосбережения вендоров (DKMA)
|
||||
- Flavor `google`: Firebase BOM 28.2.1 (Analytics, Crashlytics), Play Services Location 21.0.1, Play Core
|
||||
- SQLite (`SQLiteOpenHelper`) — буфер непереданных позиций
|
||||
- Тесты: JUnit 4.13.2, Robolectric 4.7.3
|
||||
- Локализация: Transifex (48 каталогов `values-*`)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
## Структура
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
| Путь | Назначение |
|
||||
|---|---|
|
||||
| `app/src/main/java/org/traccar/client/MainActivity.kt`, `MainFragment.kt` | Экран настроек (PreferenceFragment), запуск/остановка трекинга, запрос разрешений на геолокацию и отключение энергосбережения |
|
||||
| `app/src/main/java/org/traccar/client/TrackingService.kt`, `TrackingController.kt` | Foreground-служба и логика цикла: получить позицию → записать в БД → отправить → удалить |
|
||||
| `app/src/main/java/org/traccar/client/PositionProvider.kt`, `AndroidPositionProvider.kt` | Источник координат на системном `LocationManager` |
|
||||
| `app/src/{regular,google,hidden}/java/.../PositionProviderFactory.kt` | Выбор источника позиций по flavor: системный или Google Fused Location |
|
||||
| `app/src/main/java/org/traccar/client/ProtocolFormatter.kt` | Формирование URL запроса к серверу (протокол OsmAnd) |
|
||||
| `app/src/main/java/org/traccar/client/RequestManager.kt`, `NetworkManager.kt` | HTTP-отправка и отслеживание состояния сети |
|
||||
| `app/src/main/java/org/traccar/client/DatabaseHelper.kt` | SQLite-очередь позиций |
|
||||
| `app/src/main/java/org/traccar/client/AutostartReceiver.kt`, `BatteryOptimizationHelper.kt`, `WakefulBroadcastReceiver.kt` | Автозапуск после перезагрузки, wake lock, борьба с убийством процесса |
|
||||
| `app/src/main/java/org/traccar/client/ShortcutActivity.kt`, `DialLaunchReceiver.kt` | Ярлыки старт/стоп и запуск по набору кода в звонилке |
|
||||
| `app/src/main/java/org/traccar/client/StatusActivity.kt` | Журнал событий приложения |
|
||||
| `app/src/main/res/xml/preferences.xml` | Описание всех пользовательских настроек |
|
||||
| `app/src/main/res/xml/network_security_config.xml` | Разрешён HTTP-трафик, доверие пользовательским CA (для HTTPS-прокси) |
|
||||
| `app/src/test/java/...` | Unit-тесты форматтера URL, БД и отправки запросов |
|
||||
| `translate.py` | Выгрузка переводов из Transifex (проект `traccar`, ресурс `client`) в `res/values-*` |
|
||||
| `.github/` | Только CONTRIBUTING, FUNDING и шаблоны issue. CI-workflow в репозитории нет |
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
## Как собрать/запустить
|
||||
|
||||
```bash
|
||||
./gradlew assembleRegularDebug # сборка без сервисов Google
|
||||
./gradlew assembleRegularRelease
|
||||
./gradlew assembleGoogleRelease # вариант с Firebase и Fused Location
|
||||
./gradlew assembleHiddenRelease # скрытый вариант (applicationId org.traccar.client.hidden)
|
||||
./gradlew test # unit-тесты (JUnit + Robolectric)
|
||||
```
|
||||
|
||||
Три product flavor'а: `regular` (по умолчанию), `google`, `hidden`. Для сборки `google`-варианта задача `copyJson` копирует `google-services.json` из внешнего каталога `../../environment/google-services/traccar-client-android.json` — этого каталога в репозитории нет, для своей сборки нужен собственный файл Firebase либо использование flavor `regular`.
|
||||
|
||||
Обновление переводов: `./translate.py -t <transifex_token>` (требуется пакет `transifex-python`).
|
||||
|
||||
## Конфигурация
|
||||
|
||||
Настройки задаются в самом приложении и хранятся в SharedPreferences (`app/src/main/res/xml/preferences.xml`):
|
||||
|
||||
| Ключ | Назначение |
|
||||
|---|---|
|
||||
| `status` | Переключатель «служба запущена» |
|
||||
| `id` | Идентификатор устройства; генерируется автоматически при первом запуске, должен совпадать с идентификатором в Traccar |
|
||||
| `url` | Адрес сервера, куда шлются позиции (http:// или https://) |
|
||||
| `accuracy` | Точность: high / medium / low |
|
||||
| `interval` | Период опроса, секунды (по умолчанию 300) |
|
||||
| `distance` | Минимальное смещение для отправки, метры (0 — выключено) |
|
||||
| `angle` | Минимальное изменение курса, градусы (0 — выключено) |
|
||||
| `buffer` | Буферизация точек при отсутствии сети |
|
||||
| `wakelock` | Удержание процессора |
|
||||
|
||||
Сборочные параметры: `applicationId org.traccar.client` (у flavor `hidden` — `org.traccar.client.hidden`), `versionCode 81`, `versionName 7.0`, `gradle.properties` содержит только `android.useAndroidX=true`.
|
||||
|
||||
Секретов в репозитории нет: ключи Firebase и токен Transifex в коде отсутствуют и подставляются извне.
|
||||
|
||||
## Состояние
|
||||
|
||||
Рабочий, но копия устаревшая: 438 коммитов, последний — 05.04.2023 (Anton Tananaev, «Non nullable fields»), версия приложения 7.0 (versionCode 81). Оригинальный проект с тех пор развивается дальше, форк с ним не синхронизировали. Собственных коммитов владельца форка нет, поэтому дата последней своей правки отсутствует.
|
||||
|
||||
## Что не доделано
|
||||
|
||||
Меток TODO/FIXME и заглушек в коде нет — это релизная версия официального приложения. Применительно к самому форку не хватает только синхронизации с upstream: копия отстаёт от оригинала более чем на три года.
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# [Traccar Client for Android](https://www.traccar.org/client)
|
||||
|
||||
[](https://play.google.com/store/apps/details?id=org.traccar.client) [](https://f-droid.org/repository/browse/?fdid=org.traccar.client)
|
||||
|
||||
## Overview
|
||||
|
||||
Traccar Client is an Android GPS tracking application. It can work with Traccar open source server software.
|
||||
|
||||
## Team
|
||||
|
||||
- Anton Tananaev ([anton@traccar.org](mailto:anton@traccar.org))
|
||||
|
||||
## License
|
||||
|
||||
Apache License, Version 2.0
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
Ссылка в новой задаче
Block a user