Files
DataControl/README.md
Johnny 485d21344e DataControl v0.1.0 : contrôle du forfait data mobile via pare-feu VPN local
Surveillance de la consommation de données mobiles avec coupure automatique
en cas de dépassement de forfait, sans root ni impact sur le Wi-Fi.

- Pare-feu local (VpnService) actif uniquement sur données mobiles
- Liste blanche d'applications toujours autorisées
- Coupure cyclique totale après dépassement (intervalle paramétrable)
- Réglages complets (forfait, prix, date de début, reset auto/manuel)
- Estimation du coût total en temps réel
- Notification permanente colorée par état
- UI Compose Material 3

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 18:37:45 +02:00

5.4 KiB
Raw Blame History

DataControl

DataControl est une application Android qui surveille en arrière-plan la consommation de données mobiles et coupe automatiquement l'accès à Internet en cas de dépassement du forfait — sans jamais toucher au Wi-Fi.

JT-Tools by Johnny — v0.1.0


Fonctionnalités

  • Suivi de la consommation — Mesure en continu les données mobiles consommées depuis le début du cycle de forfait (TrafficStats, aucune permission spéciale requise).
  • Forfait configurable — Volume du forfait (Mo), prix du forfait (€), prix par Mo hors-forfait (€), date de début du cycle.
  • Estimation du coût — Calcul automatique : prix du forfait + (Mo hors-forfait × prix/Mo), affiché en temps réel sur le tableau de bord.
  • Réinitialisation — Automatique chaque mois à la date anniversaire du début de forfait, ou manuelle à tout moment depuis le tableau de bord.
  • Liste blanche d'applications — Les applications cochées gardent toujours accès aux données mobiles ; toutes les autres en sont privées en permanence (voir Comportement du pare-feu ci-dessous). Le Wi-Fi n'est jamais filtré.
  • Coupure cyclique en cas de dépassement — Une fois le forfait dépassé, une coupure totale (même pour la liste blanche) se déclenche automatiquement toutes les X minutes (paramétrable), pendant une courte pulsation, avant de revenir en mode "liste blanche seule".
  • Notification permanente — Affiche la consommation (Mo / forfait / %), l'état des données avec un code couleur (🟢 sous le forfait, 🟠 proche du forfait, 🔴 hors-forfait/coupure, 🔵 Wi-Fi actif), et le coût estimé. Rafraîchie toutes les 20 secondes et à chaque changement de réseau.
  • Démarrage au boot — Le service redémarre automatiquement après un redémarrage de l'appareil si le contrôle était actif.
  • Interface Material 3 — Thème clair/sombre avec couleurs dynamiques (Android 12+), 3 écrans : Tableau de bord, Réglages, Liste blanche.

Comportement du pare-feu (important)

Android interdit depuis longtemps aux applications normales de couper les données mobiles par programmation (l'API historique a été bloquée depuis Android 5). DataControl ne nécessite ni root ni Shizuku : il utilise un pare-feu local basé sur VpnService (comme NetGuard), qui ne route ni ne transmet aucun paquet — il capture le trafic des applications non autorisées dans un tunnel VPN local et le laisse silencieusement tomber ("trou noir"), tandis que les applications autorisées sont explicitement exclues du tunnel (addDisallowedApplication) et continuent de communiquer normalement.

Règles appliquées :

Réseau actif Sous le forfait Forfait dépassé
Wi-Fi Aucun filtrage, jamais Aucun filtrage, jamais
Données mobiles Liste blanche active en permanence : seules les apps cochées ont accès Liste blanche active + coupure totale cyclique toutes les X minutes (pulsation de 30 s, même les apps de la liste blanche sont coupées pendant la pulsation)

Le pare-feu est démarré/arrêté automatiquement selon le transport réseau actif détecté (ConnectivityManager.NetworkCallback) : dès que l'appareil bascule sur le Wi-Fi, le tunnel VPN est entièrement fermé.


Autorisations requises

Permission Usage
VPN (consentement système) Établir le pare-feu local — demandé au premier Activer le contrôle
Notifications (Android 13+) Afficher la notification permanente d'état
Ignorer l'optimisation de la batterie Éviter que le système ne tue le service de surveillance
QUERY_ALL_PACKAGES Lister toutes les applications installées dans l'écran Liste blanche
RECEIVE_BOOT_COMPLETED Relancer la surveillance après redémarrage si le contrôle était actif

Limites connues

  • Le compteur de consommation repose sur TrafficStats (cumul depuis le dernier redémarrage de l'appareil). Un redémarrage réinitialise ce compteur système ; DataControl détecte cette situation et rebascule automatiquement sa référence à 0 pour éviter un calcul négatif, mais la consommation entre le redémarrage et la détection n'est pas comptabilisée.
  • QUERY_ALL_PACKAGES est soumis à restriction sur le Google Play Store pour les apps grand public ; sans distribution via le Store, cela ne pose pas de problème.
  • Le pare-feu VPN local est incompatible avec l'usage simultané d'un autre VPN (limitation système Android : un seul VPN actif à la fois).

Architecture

  • Kotlin + Jetpack Compose (Material 3), Hilt pour l'injection de dépendances.
  • data/SettingsRepository (DataStore Preferences), UsageRepository (TrafficStats), InstalledAppsRepository (PackageManager).
  • service/FirewallVpnService (VpnService), ConnectivityObserver (détection Wi-Fi/cellulaire), DataMonitorService (orchestration + notification), MonitorStateHolder (pont service ↔ UI), BootReceiver.
  • ui/ — écrans Compose (dashboard, settings, whitelist), navigation par NavigationBar, thème dynamique.

Build

make build      # APK debug
make release    # APK release signé, copié en DataControl-<version>.apk
make install    # Installe le debug sur un appareil connecté (adb)

Prérequis : Android SDK (API 34), JDK 17. Le wrapper Gradle télécharge Gradle 8.13 au premier lancement.


Licence

Projet personnel — JT-Tools by Johnny.