# HabitForge Android Companion App Application Android permettant de synchroniser les données de Health Connect avec votre serveur HabitForge. ## 🆕 Nouvelles Fonctionnalités ### Suivi des Synchronisations - **Historique complet** : Visualisez l'historique de toutes les synchronisations - **Statistiques** : Nombre de syncs réussies/échouées, métriques totales synchronisées - **Détails** : Chaque sync affiche le temps de traitement, les données transférées et les erreurs ### Connectivité Serveur - **Indicateur en temps réel** : Voyez immédiatement si le serveur est en ligne - **Test de connexion** : Bouton dédié pour tester la connexion et l'authentification - **Temps de réponse** : Affichage du temps de réponse du serveur ### Validation des Données - **Vérification de compatibilité** : Validez que vos données Health Connect sont compatibles avec le schéma HabitForge - **Aperçu des données** : Prévisualisation des données avant synchronisation - **Diagnostic** : Identification des problèmes potentiels de mapping ### Configuration Avancée - **Période de sync configurable** : Choisissez la fréquence de synchronisation automatique - Toutes les heures - Toutes les 3 heures - Toutes les 6 heures (par défaut) - Toutes les 12 heures - Une fois par jour ## Prérequis - Android Studio (version 2024.2.1 ou plus récente) - JDK 17 - Un appareil Android avec Android 9+ (API 28+) - Health Connect installé sur l'appareil ## Structure du projet ``` android-companion/ ├── app/ │ ├── src/main/ │ │ ├── java/com/habitforge/companion/ │ │ │ ├── HabitForgeApp.kt # Application class │ │ │ ├── MainActivity.kt # UI principale │ │ │ ├── HealthConnectManager.kt # Lecture des données Health Connect │ │ │ ├── SyncService.kt # Service de sync en arrière-plan │ │ │ ├── SyncHistoryManager.kt # Gestion de l'historique des syncs │ │ │ ├── ServerConnectionManager.kt # Test de connectivité serveur │ │ │ ├── DataCompatibilityValidator.kt # Validation schéma de données │ │ │ ├── HabitForgeApi.kt # API Retrofit pour le backend │ │ │ └── PrivacyPolicyActivity.kt # Page de politique de confidentialité │ │ ├── res/ │ │ │ ├── layout/ # Layouts XML │ │ │ ├── values/ # Couleurs, strings, thèmes │ │ │ └── drawable/ # Icônes et indicateurs de status │ │ └── AndroidManifest.xml # Permissions Health Connect │ └── build.gradle.kts # Dépendances ├── build.gradle.kts # Configuration root ├── settings.gradle.kts # Settings Gradle └── gradle.properties # Propriétés Gradle ``` ## Données synchronisées L'application lit les données suivantes depuis Health Connect : ### Métriques quotidiennes - Pas (Steps) - Distance parcourue - Calories brûlées - Fréquence cardiaque (moyenne, min, max, repos) - Sommeil (durée, phases : profond, léger, REM, éveillé) - Poids - SpO2 ### Sessions d'exercice - Type d'exercice (Running, Walking, Cycling, Swimming, Weight Training, etc.) - Durée - Heure de début/fin - Notes ## Compilation ### Option 1 : Via Android Studio 1. Ouvrir Android Studio 2. `File` > `Open` > Sélectionner le dossier `android-companion` 3. Attendre que Gradle synchronise 4. `Build` > `Build Bundle(s) / APK(s)` > `Build APK(s)` ### Option 2 : Via ligne de commande ```powershell # Se placer dans le dossier du projet cd c:\dev\git\python\HabitForge\android-companion # Compiler en mode debug .\gradlew assembleDebug # Le fichier APK sera dans : # app\build\outputs\apk\debug\app-debug.apk # Compiler en mode release (nécessite une signature) .\gradlew assembleRelease ``` ## Installation sur téléphone ### Via ADB ```powershell adb install app\build\outputs\apk\debug\app-debug.apk ``` ### Via Android Studio - Connecter le téléphone en USB (Mode débogage activé) - Cliquer sur "Run" (bouton vert) ## Configuration 1. **Installer Health Connect** sur le téléphone (Play Store) 2. **Ouvrir HabitForge Companion** 3. **Accorder les permissions** quand demandé 4. **Se connecter à votre compte** : - Cliquez sur "Login" - Entrez l'URL du serveur (ex: `http://192.168.x.x:8000`) - Utilisez les **mêmes identifiants** que l'interface web HabitForge 5. **Tester la connexion** : Utilisez le bouton "Test Connection" pour vérifier 6. **Valider les données** : Cliquez sur "Validate Data Schema" 7. **Configurer la fréquence** : Choisissez l'intervalle de sync souhaité 8. **Synchroniser** manuellement ou laisser l'auto-sync ## Interface Utilisateur ### Cartes de l'écran principal | Carte | Description | |-------|-------------| | **Health Connect** | Statut de Health Connect, bouton pour l'ouvrir | | **Permissions** | Permissions accordées/requises, bouton pour les demander | | **Server** | Configuration serveur, indicateur de disponibilité, test de connexion | | **Sync Settings** | Fréquence de sync, dernière sync, bouton Sync Now | | **Data Compatibility** | Validation du schéma, aperçu des données | | **Sync History** | Historique récent, statistiques, bouton historique complet | ### Indicateurs de Status Serveur | Indicateur | Signification | |------------|---------------| | 🟢 Online | Serveur accessible et connecté | | 🟠 Auth needed | Serveur accessible mais non connecté | | 🟠 Timeout | Serveur lent à répondre | | 🔴 Offline | Serveur inaccessible | | ⚫ Unknown | Statut non vérifié | ## Dépannage ### "Health Connect not available" - L'appareil doit être sous Android 9+ - Installer Health Connect depuis le Play Store ### "Permissions not granted" - Réouvrir l'app et cliquer sur "Grant Permissions" - S'assurer que Health Connect a des données (d'autres apps comme Google Fit) ### "Login failed" / "Invalid username or password" - Vérifier que le serveur HabitForge est accessible (utilisez "Test Connection") - Vérifier que les identifiants sont corrects (mêmes que l'interface web) - Consulter les logs via `adb logcat | grep HabitForge` ### "Sync failed" - Vérifier que vous êtes bien connecté - Vérifier l'historique des syncs pour voir le message d'erreur ### "Connection timeout" - Vérifier que le serveur est démarré - Vérifier la connexion réseau - Si sur le même réseau local, utiliser l'IP locale (ex: 192.168.x.x) ### "Data validation issues" - Cliquez sur "Validate Data Schema" pour diagnostiquer - Vérifiez que Health Connect contient des données récentes - Accordez toutes les permissions demandées ## API Backend requise L'application nécessite les endpoints suivants sur votre serveur HabitForge : | Endpoint | Méthode | Description | |----------|---------|-------------| | `/api/health` | GET | Health check (retourne `{"status": "healthy"}`) | | `/api/auth/token` | POST | Authentification (OAuth2 form: username, password) | | `/api/auth/me` | GET | Récupérer les infos utilisateur connecté | | `/api/health-connect/sync` | POST | Réception des données synchronisées | ## Sécurité - L'authentification utilise les mêmes identifiants que l'interface web - Les tokens JWT sont stockés dans SharedPreferences (mode privé) - Toutes les connexions utilisent HTTPS en production - Les données ne quittent jamais l'appareil sauf vers votre serveur configuré - L'historique des syncs est stocké localement uniquement - Déconnexion possible via le bouton "Logout"