Prochains départs aux arrêts suivis en Île-de-France (API PRIM)
  • Kotlin 98.2%
  • Shell 1.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
fabian a4e4c0153c
All checks were successful
CI / build (pull_request) Successful in 53s
CI / build (push) Successful in 51s
Version / verifier (push) Successful in 34s
Préparer la publication sur F-Droid
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>
2026-10-02 14:01:40 +02:00
.forgejo/workflows Préparer la publication sur F-Droid 2026-10-02 14:01:40 +02:00
app Identifiant de l'application : eu.lapotre.prochaintrain 2026-10-02 14:01:40 +02:00
fastlane/metadata/android/fr-FR Préparer la publication sur F-Droid 2026-10-02 14:01:40 +02:00
gradle/wrapper Passer à AGP 9.4.1 et Gradle 9.8.0 (lint marche avec le JDK 25) 2026-10-02 13:48:17 +02:00
scripts Préparer la publication sur F-Droid 2026-10-02 14:01:40 +02:00
.gitignore Ignorer l'export de la maquette de l'écran de clé 2026-10-02 12:40:42 +02:00
build.gradle Passer à AGP 9.4.1 et Gradle 9.8.0 (lint marche avec le JDK 25) 2026-10-02 13:48:17 +02:00
CLAUDE.md Préparer la publication sur F-Droid 2026-10-02 14:01:40 +02:00
gradle.properties Passer à AGP 9.4.1 et Gradle 9.8.0 (lint marche avec le JDK 25) 2026-10-02 13:48:17 +02:00
gradlew Passer à AGP 9.4.1 et Gradle 9.8.0 (lint marche avec le JDK 25) 2026-10-02 13:48:17 +02:00
gradlew.bat Passer à AGP 9.4.1 et Gradle 9.8.0 (lint marche avec le JDK 25) 2026-10-02 13:48:17 +02:00
LICENSE Première version de l'application « Prochain train » 2026-10-02 12:29:17 +02:00
logo-horaires-transport-v6.svg Première version de l'application « Prochain train » 2026-10-02 12:29:17 +02:00
README.md Préparer la publication sur F-Droid 2026-10-02 14:01:40 +02:00
settings.gradle Première version de l'application « Prochain train » 2026-10-02 12:29:17 +02:00

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 :

  1. Créez un compte sur https://prim.iledefrance-mobilites.fr
  2. Une fois connecté, touchez votre nom en haut à droite, puis « Mes jetons d'authentification », et générez un jeton d'API.
  3. Collez-le dans l'application au premier lancement.

Utilisation

  1. 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.
  2. Touchez « Ajouter un lieu » (ou +), cherchez le lieu ou touchez « Arrêts autour de moi », puis touchez le lieu voulu.
  3. Cochez les lignes qui vous intéressent, choisissez si besoin une direction pour chacune, puis touchez « Suivre ».
  4. « 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.

  1. Écrivez les notes de version dans fastlane/metadata/android/fr-FR/changelogs/<versionCode suivant>.txt.
  2. Sur main : scripts/version.sh 1.1 (incrémente versionCode, fixe versionName, commit et tag v1.1).
  3. 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.