- Kotlin 98.2%
- Shell 1.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Fiche fastlane (fr-FR : titre, descriptions, icône, notes de la 1.0), scripts/version.sh pour incrémenter versionCode, fixer versionName et poser le tag, et un workflow qui vérifie chaque tag vX.Y. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| app | ||
| fastlane/metadata/android/fr-FR | ||
| gradle/wrapper | ||
| scripts | ||
| .gitignore | ||
| build.gradle | ||
| CLAUDE.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| logo-horaires-transport-v6.svg | ||
| README.md | ||
| settings.gradle | ||
Prochain train
Application Android qui affiche les prochains passages (train, RER, métro, tram, bus) aux arrêts d'Île-de-France de votre choix, en temps réel.
L'application est conçue pour être la plus sobre possible en ressources numériques (RAM, CPU, réseau, batterie, taille de l'APK) : aucune bibliothèque externe, aucun service en arrière-plan, aucune actualisation automatique.
Fonctionnalités
- Mes lieux : pour chaque lieu suivi, les prochains passages regroupés par ligne et destination, avec la pastille de la ligne à ses couleurs officielles, le délai (« 3 min, puis 11 · 19 ») et la voie quand elle est annoncée.
- Ajouter un lieu :
- recherche par nom de gare, de station, d'arrêt ou de commune (sans tenir compte des accents, un début de mot suffit) ;
- arrêts autour de moi, à partir de la position du téléphone.
- Lignes et directions : choix des lignes à suivre pour chaque lieu (filtre par texte et par mode) et, pour chaque ligne, d'une direction : seuls les trajets qui passent ensuite par la gare choisie sont affichés (par exemple, à Gare du Nord, uniquement les trains H qui s'arrêtent à Écouen - Ézanville).
Prérequis
Une clé API PRIM (clé d'accès gratuite aux données temps réel d'Île-de-France Mobilités). L'écran de premier lancement explique comment l'obtenir :
- Créez un compte sur https://prim.iledefrance-mobilites.fr
- Une fois connecté, touchez votre nom en haut à droite, puis « Mes jetons d'authentification », et générez un jeton d'API.
- Collez-le dans l'application au premier lancement.
Utilisation
- Au premier lancement, collez votre clé API. Elle est vérifiée avant d'être enregistrée. Vous pourrez la changer plus tard avec le bouton réglages de l'accueil.
- Touchez « Ajouter un lieu » (ou +), cherchez le lieu ou touchez « Arrêts autour de moi », puis touchez le lieu voulu.
- Cochez les lignes qui vous intéressent, choisissez si besoin une direction pour chacune, puis touchez « Suivre ».
- « Modifier » sur la carte d'un lieu permet de changer ses lignes ou de le retirer.
Sobriété
- Les horaires ne s'actualisent jamais tout seuls : une fois à l'ouverture de l'application si les données ont plus de 30 secondes, puis seulement quand vous touchez « Actualiser les passages ». Les délais (« 3 min ») sont recalculés à l'affichage, sans nouvelle requête.
- Les résultats sont gardés 30 secondes : des actualisations répétées ne refont pas de requête.
- Une seule requête par arrêt et par actualisation, même si cet arrêt sert aussi de direction à un autre.
- Les noms et couleurs des lignes sont demandés une seule fois puis gardés sur le téléphone.
- La position n'est demandée qu'au toucher de « Arrêts autour de moi », une seule fois, jamais en arrière-plan.
- Polices du système et images vectorielles : pas de police ni d'image embarquée.
Données utilisées
| Source | Usage | Clé |
|---|---|---|
| PRIM – API « Prochains passages » (SIRI stop-monitoring) | horaires temps réel | token PRIM |
Open data IDFM – zones-d-arrets |
recherche d'arrêts, modes d'un lieu | aucune |
Open data IDFM – arrets |
arrêts autour de moi | aucune |
Open data IDFM – relations, arrets-lignes |
lignes d'un arrêt, gares d'une ligne | aucune |
Open data IDFM – referentiel-des-lignes |
nom, mode et couleurs des lignes | aucune |
Les arrêts sont suivis par zone de correspondance : une gare et les arrêts de bus voisins forment une seule zone (par exemple 66533 pour Écouen - Ézanville).
Compilation
Projet Android Gradle (Kotlin, JDK 17, minSdk 24, targetSdk 34), sans dépendance externe.
./gradlew assembleDebug # compiler l'APK de debug
./gradlew installDebug # installer sur un téléphone branché (débogage USB activé)
./gradlew assembleRelease # APK de release (minifié)
local.properties doit indiquer le chemin du SDK Android (sdk.dir=…).
Il faut un JDK complet (avec
javac), par exemple celui fourni avec Android Studio. Si Gradle ne le trouve pas, indiquez son chemin dans~/.gradle/gradle.properties(et non dans le projet) :org.gradle.java.home=/chemin/vers/android-studio/jbr. Ce fichier est lu en ISO-8859-1 : écrivez les caractères accentués d'un chemin sous la forme\u00e9.
Publier une version
Les numéros de version sont écrits en dur dans app/build.gradle : F-Droid les y lit et
compile chaque tag vX.Y.
- Écrivez les notes de version dans
fastlane/metadata/android/fr-FR/changelogs/<versionCode suivant>.txt. - Sur
main:scripts/version.sh 1.1(incrémenteversionCode, fixeversionName, commit et tagv1.1). git push --follow-tags. La CI vérifie que le tag correspond à la version.
La fiche de l'application (titre, descriptions, icône) est dans
fastlane/metadata/android/fr-FR/.
Organisation du code
app/src/main/java/eu/lapotre/prochaintrain/ :
| Fichier | Rôle |
|---|---|
MainActivity.kt |
accueil « Mes lieux » : passages de chaque lieu |
SearchActivity.kt |
ajout d'un lieu : recherche par nom, arrêts autour de moi |
StopActivity.kt |
lignes et directions d'un lieu |
TokenActivity.kt |
saisie de la clé API PRIM |
Departs.kt |
chargement et cache des passages |
Api.kt |
appels à PRIM et à l'open data IDFM, filtrage et regroupement |
Prefs.kt |
stockage des réglages (SharedPreferences) |
Ui.kt |
couleurs de la charte et éléments d'interface partagés |
Toutes les interfaces sont construites en code, sans layout XML ni AndroidX.
Licence
Copyright (C) 2026 fabian faibankh@proton.me
Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier selon
les termes de la GNU General Public License publiée par la Free Software
Foundation, en version 3 ou (à votre choix) toute version ultérieure
(GPL-3.0-or-later).
Il est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie ; sans même la garantie implicite de qualité marchande ou d'adéquation à un usage particulier. Voir le fichier LICENSE pour le texte complet.
Les données affichées proviennent d'Île-de-France Mobilités (PRIM et open data) et restent soumises à leurs propres conditions d'utilisation.