# iMedia TV+ / Xtream Google TV Player ## Spécifications, architecture et historique des modifications **Projet :** Lecteur IPTV Xtream pour Google TV / Android TV **Package Android :** `ma.tkgraph.xtreamtv` **Plateforme cible :** Google TV / Android TV **Langage :** Kotlin **Interface :** Jetpack Compose / Compose TV **Lecteur vidéo :** AndroidX Media3 ExoPlayer **API IPTV :** Xtream Codes compatible **Date du document :** 10/06/2026 --- ## 1. Objectif du projet Le projet consiste à développer une application Google TV permettant de lire des contenus IPTV fournis par un serveur compatible Xtream. L’application doit permettre : - la connexion à un serveur Xtream ; - la mémorisation des identifiants ; - la lecture des chaînes Live ; - la gestion des catégories ; - l’affichage des logos de chaînes ; - l’affichage de l’EPG ; - le replay / catch-up TV ; - la navigation dans un guide TV complet ; - la lecture des VOD ; - la lecture des séries ; - la gestion des favoris ; - l’épinglage d’une chaîne de démarrage ; - une navigation fluide avec télécommande Google TV. L’objectif final est de disposer d’un lecteur TV complet, ergonomique, utilisable au quotidien sur une box Google TV. --- ## 2. Environnement de développement ### 2.1. Système - OS de développement : Windows 11 - IDE conseillé : Android Studio - Terminal utilisé : PowerShell - Appareil cible : box Google TV / Android TV - Connexion appareil : ADB Wi-Fi ### 2.2. Chemin du projet ```powershell D:\07-Logiciels\11-IPTV Andoid TV 2 ``` ### 2.3. Java / JDK JDK utilisé via Android Studio : ```powershell D:\Program Files\Android\Android Studio\jbr ``` Version constatée : ```txt OpenJDK 21.0.10 ``` ### 2.4. Android SDK SDK utilisé : ```powershell C:\Users\abmou\AppData\Local\Android\Sdk ``` Composants installés : - Android SDK Platform 36.1 - Android SDK Build-Tools - Android SDK Platform-Tools - Android SDK Command-line Tools - Android Emulator - Android Emulator Hypervisor Driver ### 2.5. Gradle Gradle installé manuellement : ```powershell D:\Tools\Gradle\gradle-9.1.0 ``` Wrapper Gradle généré dans le projet : ```powershell gradlew.bat ``` Commande utilisée : ```powershell gradle wrapper --gradle-version 9.1.0 --distribution-type bin ``` --- ## 3. Configuration PowerShell recommandée Avant compilation : ```powershell cd "D:\07-Logiciels\11-IPTV Andoid TV 2" $env:JAVA_HOME = "D:\Program Files\Android\Android Studio\jbr" $env:ANDROID_HOME = "$env:LOCALAPPDATA\Android\Sdk" $env:Path = "$env:JAVA_HOME\bin;$env:ANDROID_HOME\platform-tools;$env:ANDROID_HOME\cmdline-tools\latest\bin;D:\Tools\Gradle\gradle-9.1.0\bin;$env:Path" ``` Vérifications : ```powershell java -version adb version gradle -v ``` --- ## 4. Compilation APK ### 4.1. Nettoyage ```powershell .\gradlew.bat clean --no-daemon ``` ### 4.2. Compilation debug ```powershell .\gradlew.bat :app:assembleDebug --no-daemon ``` ### 4.3. APK générée ```powershell .\app\build\outputs\apk\debug\app-debug.apk ``` --- ## 5. Installation sur Google TV ### 5.1. Connexion ADB ```powershell adb connect 192.168.1.124 adb devices ``` Résultat attendu : ```txt 192.168.1.124:5555 device ``` ### 5.2. Installation APK ```powershell adb install -r ".\app\build\outputs\apk\debug\app-debug.apk" ``` Résultat attendu : ```txt Success ``` ### 5.3. Lancement ```powershell adb shell am start -n ma.tkgraph.xtreamtv/.MainActivity ``` ou : ```powershell adb shell monkey -p ma.tkgraph.xtreamtv 1 ``` --- ## 6. Architecture générale ### 6.1. Structure logique ```txt app/ └── src/ └── main/ ├── AndroidManifest.xml ├── java/ma/tkgraph/xtreamtv/ │ ├── MainActivity.kt │ ├── data/ │ │ ├── model/ │ │ ├── network/ │ │ ├── repository/ │ │ └── storage/ │ ├── ui/ │ │ ├── components/ │ │ ├── screens/ │ │ └── theme/ │ └── util/ └── res/ ├── drawable/ ├── drawable-nodpi/ ├── mipmap/ └── values/ ``` ### 6.2. Rôle des couches | Couche | Rôle | |---|---| | `MainActivity.kt` | Point d’entrée, navigation principale, état global | | `data/model` | Modèles DTO Xtream | | `data/network` | Définition Retrofit de l’API Xtream | | `data/repository` | Abstraction des appels réseau | | `data/storage` | Sauvegarde locale des identifiants, favoris, épinglage | | `ui/screens` | Écrans Compose | | `ui/components` | Composants réutilisables : logo, cartes, éléments UI | | `util` | Génération d’URL, tri, helpers | | `res/drawable-nodpi` | Image de démarrage iMedia TV+ | --- ## 7. Dépendances principales ### 7.1. Lecture vidéo - `androidx.media3:media3-exoplayer` - `androidx.media3:media3-exoplayer-hls` - `androidx.media3:media3-exoplayer-dash` - `androidx.media3:media3-ui` - `androidx.media3:media3-session` ### 7.2. Interface - Jetpack Compose - Compose TV - Material 3 ### 7.3. Réseau - Retrofit - Gson Converter ### 7.4. Images - Coil Compose - Coil Network OkHttp Utilisé pour afficher : - logos chaînes ; - affiches VOD ; - affiches séries ; - logo dans le lecteur. --- ## 8. Manifest Android TV Le manifest a été corrigé pour rendre l’application lançable depuis Google TV. Catégories nécessaires : ```xml ``` Sans `LAUNCHER`, l’application était installée, mais le bouton **Ouvrir** restait désactivé dans Google TV. Magnifique démonstration d’une application installée dans un couloir sans porte. --- ## 9. Fichiers de configuration Gradle ### 9.1. Corrections effectuées Le projet initial a nécessité plusieurs corrections : - suppression du plugin `org.jetbrains.kotlin.android` devenu inutile avec AGP 9 ; - suppression du bloc `kotlin { jvmToolchain(17) }` ; - ajout du Gradle Wrapper ; - ajout / correction de `gradle.properties` ; - augmentation de la mémoire Gradle. ### 9.2. Exemple `gradle.properties` ```properties org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -Dfile.encoding=UTF-8 -XX:+UseG1GC org.gradle.parallel=false org.gradle.configuration-cache=false android.useAndroidX=true ``` --- ## 10. Connexion Xtream ### 10.1. Données utilisateur L’écran de connexion demande : - URL serveur ; - username ; - password. Exemple : ```txt http://serveur.example.com:8080 username password ``` ### 10.2. Validation du compte Endpoint utilisé : ```txt /player_api.php?username=USER&password=PASS ``` Vérifications : - `auth == "1"` - `status == "Active"` --- ## 11. Sauvegarde des identifiants ### 11.1. Fichier ```txt data/storage/ConfigStorage.kt ``` ### 11.2. Stockage Utilisation de `SharedPreferences`. Données sauvegardées : - serveur ; - username ; - password ; - favoris chaînes ; - favoris VOD ; - favoris séries ; - chaîne épinglée ; - état de sélection ; - préférences nécessaires au fonctionnement. ### 11.3. Fonctionnalités - connexion automatique au démarrage ; - suppression des données à la déconnexion ; - conservation des favoris ; - conservation de la chaîne épinglée. --- ## 12. Écran de démarrage iMedia TV+ ### 12.1. Problème initial Au démarrage, l’application affichait un écran blanc avant le chargement Compose. ### 12.2. Correction Ajout de l’image fournie par l’utilisateur : ```txt app/src/main/res/drawable-nodpi/imedia_tv_background.png ``` Ajout du fond de lancement : ```txt app/src/main/res/drawable/launch_background.xml ``` Modification du thème : ```txt app/src/main/res/values/themes.xml ``` ### 12.3. Résultat attendu Au lancement : - affichage du visuel iMedia TV+ ; - disparition de l’écran blanc ; - message de chargement superposé pendant la connexion automatique. --- ## 13. Live TV ### 13.1. Endpoints utilisés Catégories Live : ```txt /player_api.php?action=get_live_categories ``` Chaînes Live : ```txt /player_api.php?action=get_live_streams ``` ### 13.2. Fonctionnalités - affichage des catégories ; - recherche de catégories ; - recherche de chaînes ; - filtrage par catégorie ; - logo chaîne ; - compteur chaînes ; - favoris ; - chaîne épinglée ; - zapping gauche/droite ; - retour vers la même chaîne ; - focus restauré sur la chaîne après retour du lecteur ; - boutons accessibles avec la télécommande. ### 13.3. URL de lecture Live ```txt /live/username/password/stream_id.m3u8 ``` Fallback possible selon fournisseur : ```txt /live/username/password/stream_id.ts ``` --- ## 14. Tri des catégories ### 14.1. Objectif Trier les catégories dans cet ordre : 1. catégories françaises ; 2. catégories arabes ; 3. autres catégories. ### 14.2. Catégories prioritaires Les catégories internes restent toujours en haut : - Toutes les chaînes ; - Toutes les VOD ; - Toutes les séries ; - Favoris. ### 14.3. Fichier utilitaire ```txt util/CategorySortUtils.kt ``` ### 14.4. Écrans concernés - Live TV ; - Guide TV global ; - VOD ; - Séries. --- ## 15. Favoris Live ### 15.1. Fonctionnalités - ajout / retrait d’une chaîne favorite ; - catégorie automatique `★ Favoris` ; - sauvegarde persistante ; - badge favori ; - focus compatible télécommande. ### 15.2. Comportement Dans une ligne chaîne : - OK sur le nom : regarder ; - bouton `★` : ajouter / retirer favori ; - bouton `Pin` : épingler. --- ## 16. Chaîne épinglée ### 16.1. Objectif Permettre à l’utilisateur de choisir une chaîne à ouvrir rapidement au démarrage. ### 16.2. Comportement - une seule chaîne épinglée à la fois ; - sauvegarde persistante ; - bouton d’épinglage dans la ligne chaîne ; - possibilité de désépingler. ### 16.3. Remarque La chaîne épinglée est prévue comme point de démarrage rapide. Selon l’état de l’application, elle peut être utilisée pour ouvrir directement la chaîne ou faciliter son accès. --- ## 17. Lecteur vidéo ### 17.1. Fichier principal ```txt ui/screens/PlayerScreen.kt ``` ### 17.2. Fonctionnalités - lecture Live ; - lecture Replay ; - lecture VOD ; - lecture épisodes séries ; - affichage du nom ; - affichage du logo ; - affichage de la résolution ; - overlay temporaire ; - gestion retour ; - zapping gauche/droite. ### 17.3. Overlay L’overlay affiche : - logo ; - nom de la chaîne / VOD / épisode ; - résolution détectée ; - programme en cours si disponible ; - badge Replay si replay ; - badge Favori si applicable. ### 17.4. Disparition automatique Les informations disparaissent après environ **3 secondes**. ### 17.5. Bouton retour Comportement demandé : - premier appui sur retour : réaffiche les informations ; - deuxième appui sur retour : retour au menu. ### 17.6. Zapping Pendant le Live : - bouton gauche : chaîne précédente ; - bouton droite : chaîne suivante. --- ## 18. Résolution affichée ### 18.1. Objectif Afficher la résolution du flux vidéo dans le lecteur. ### 18.2. Source La résolution est récupérée depuis le format vidéo exposé par ExoPlayer. Exemples d’affichage : ```txt 1920x1080 1280x720 SD HD FHD ``` Selon les données disponibles, l’app affiche la résolution exacte ou un fallback. --- ## 19. Logos chaînes ### 19.1. Source Champ Xtream : ```txt stream_icon ``` ### 19.2. Composant ```txt ui/components/ChannelLogo.kt ``` ### 19.3. Comportement - chargement du logo distant ; - fallback avec initiales si absent ; - fallback si URL cassée ; - affichage dans liste Live ; - affichage dans lecteur. --- ## 20. EPG court ### 20.1. Endpoint ```txt /player_api.php?action=get_short_epg ``` ### 20.2. Utilisation Affichage dans la liste Live : - programme en cours ; - programme suivant ; - disponibilité replay. ### 20.3. Modèles ```txt EpgProgramDto.kt EpgShortResponse.kt ``` ### 20.4. Correction effectuée Une erreur Kotlin a été corrigée dans une Regex : Ancienne forme invalide : ```kotlin Regex("(\d{2}:\d{2})") ``` Correction : ```kotlin Regex("""(\d{2}:\d{2})""") ``` --- ## 21. Replay / Catch-up TV ### 21.1. Objectif initial Le replay fonctionnait, mais lançait directement un replay sans donner le choix de l’émission. ### 21.2. Correction demandée Pour chaque chaîne, l’utilisateur doit pouvoir : - ouvrir la liste des programmes disponibles ; - voir les jours disponibles ; - choisir l’émission ; - lancer le replay de cette émission. ### 21.3. Endpoint guide complet ```txt /player_api.php?action=get_simple_data_table&stream_id=STREAM_ID ``` ### 21.4. URL Replay ```txt /timeshift/username/password/durée/date/stream_id.ts ``` ### 21.5. Écran dédié ```txt ui/screens/ReplayGuideScreen.kt ``` ### 21.6. Fonctionnalités - liste des émissions disponibles ; - regroupement par jour ; - recherche d’émission ; - bouton Revoir ; - retour vers la chaîne sélectionnée ; - lecture replay avec badge spécifique. --- ## 22. Guide TV global ### 22.1. Objectif Ajouter un écran de guide TV complet avec toutes les chaînes et tous les programmes disponibles. ### 22.2. Écran ajouté ```txt ui/screens/ProgramGuideScreen.kt ``` ### 22.3. Fonctionnalités - liste des catégories ; - liste des chaînes ; - recherche catégorie ; - recherche chaîne ; - recherche émission ; - chargement du programme complet de la chaîne sélectionnée ; - bouton Direct ; - bouton Revoir si replay disponible. ### 22.4. Correction du focus Problème rencontré : - la zone de recherche perdait le focus après saisie d’une lettre. Correction : - le focus automatique sur la chaîne ne se déclenche plus pendant la saisie ; - le focus revient sur la chaîne uniquement après retour depuis lecteur ou guide. --- ## 23. VOD ### 23.1. Endpoints Catégories VOD : ```txt /player_api.php?action=get_vod_categories ``` Films VOD : ```txt /player_api.php?action=get_vod_streams ``` ### 23.2. Écran ```txt ui/screens/VodScreen.kt ``` ### 23.3. Fonctionnalités - catégories VOD ; - recherche catégorie ; - recherche film ; - affiches ; - favoris ; - catégorie `★ Favoris` ; - lecture film. ### 23.4. URL de lecture VOD ```txt /movie/username/password/stream_id.extension ``` L’extension vient de : ```txt container_extension ``` Fallback : ```txt mp4 ``` --- ## 24. Séries ### 24.1. Endpoints Catégories séries : ```txt /player_api.php?action=get_series_categories ``` Liste séries : ```txt /player_api.php?action=get_series ``` Détail série : ```txt /player_api.php?action=get_series_info&series_id=SERIES_ID ``` ### 24.2. Écran ```txt ui/screens/SeriesScreen.kt ``` ### 24.3. Fonctionnalités - catégories séries ; - recherche catégorie ; - recherche série ; - affiches ; - saisons ; - épisodes ; - recherche épisode ; - favoris séries ; - catégorie `★ Favoris` ; - lecture épisode. ### 24.4. URL lecture épisode ```txt /series/username/password/episode_id.extension ``` Fallback : ```txt mp4 ``` ### 24.5. Correction noms épisodes Problème : - les noms des épisodes apparaissaient sous forme de points ou étaient vides. Correction : - utilisation de plusieurs champs possibles : - `title` - `name` - `episode_name` Fallback lisible : ```txt Épisode 1 • Nom de la série Épisode 2 • Nom de la série ``` --- ## 25. Favoris VOD et Séries ### 25.1. VOD Fonctionnalités ajoutées : - bouton `☆ / ★` sur chaque film ; - catégorie automatique `★ Favoris` ; - badge favori ; - sauvegarde persistante. ### 25.2. Séries Fonctionnalités ajoutées : - bouton `☆ / ★` sur chaque série ; - catégorie automatique `★ Favoris` ; - badge favori ; - sauvegarde persistante. ### 25.3. Stockage Stockage dans `ConfigStorage.kt`. --- ## 26. Navigation télécommande ### 26.1. Navigation générale L’application est pensée pour la télécommande Google TV : - haut / bas : navigation dans les listes ; - gauche / droite : passage entre zones ou zapping dans lecteur ; - OK : sélection ; - retour : retour contextuel ou confirmation. ### 26.2. Menu Live - focus sur catégories ; - focus sur chaîne ; - actions accessibles dans la ligne chaîne ; - retour depuis lecteur vers la même chaîne. ### 26.3. Lecteur - gauche : chaîne précédente ; - droite : chaîne suivante ; - retour : afficher overlay, puis revenir au menu. ### 26.4. Menu principal Quand l’utilisateur clique sur retour dans le menu : - une confirmation de sortie est affichée. --- ## 27. Design UI ### 27.1. Évolution L’interface a été progressivement corrigée : 1. première version trop massive ; 2. réduction des textes ; 3. réduction des zones ; 4. correction du contraste dans les zones de texte ; 5. affichage lisible des noms de chaînes ; 6. correction des boutons Favori / Épingler inaccessibles ; 7. actions déplacées dans les lignes ; 8. focus restauré sur la chaîne. ### 27.2. Problèmes corrigés - texte trop gros ; - boutons trop grands ; - champs sombres avec texte sombre ; - noms de chaînes masqués ; - impossibilité d’atteindre Favori / Épingler ; - focus dans les champs de recherche après retour ; - affichage des épisodes incomplet. --- ## 28. Écrans principaux ### 28.1. LoginScreen ```txt ui/screens/LoginScreen.kt ``` Rôle : - saisie serveur ; - saisie username ; - saisie password ; - vérification compte ; - sauvegarde si connexion réussie. ### 28.2. HomeScreen ```txt ui/screens/HomeScreen.kt ``` Rôle : - Live TV ; - catégories ; - chaînes ; - favoris ; - épinglage ; - recherche ; - accès Guide TV ; - accès VOD ; - accès Séries. ### 28.3. PlayerScreen ```txt ui/screens/PlayerScreen.kt ``` Rôle : - lecture vidéo ; - overlay ; - résolution ; - retour ; - zapping. ### 28.4. ReplayGuideScreen ```txt ui/screens/ReplayGuideScreen.kt ``` Rôle : - replay par chaîne ; - choix de l’émission ; - recherche émission ; - lecture catch-up. ### 28.5. ProgramGuideScreen ```txt ui/screens/ProgramGuideScreen.kt ``` Rôle : - guide TV global ; - chaînes + programmes ; - direct ; - replay. ### 28.6. VodScreen ```txt ui/screens/VodScreen.kt ``` Rôle : - catalogue films ; - catégories ; - recherche ; - favoris ; - lecture. ### 28.7. SeriesScreen ```txt ui/screens/SeriesScreen.kt ``` Rôle : - catalogue séries ; - catégories ; - saisons ; - épisodes ; - favoris ; - lecture. --- ## 29. Modèles principaux ### 29.1. XtreamConfig ```txt serverUrl username password ``` ### 29.2. LiveStreamDto Champs typiques : ```txt name stream_id stream_icon category_id epg_channel_id tv_archive has_archive container_extension ``` ### 29.3. LiveCategoryDto ```txt category_id category_name parent_id ``` ### 29.4. EpgProgramDto Champs possibles selon serveur : ```txt title description start end start_timestamp stop_timestamp ``` ### 29.5. VOD Champs typiques : ```txt name stream_id stream_icon category_id container_extension rating added ``` ### 29.6. Séries Champs typiques : ```txt series_id name cover category_id genre plot cast rating ``` ### 29.7. Épisodes Champs typiques : ```txt id episode_num title name episode_name container_extension info ``` --- ## 30. Génération d’URL ### 30.1. Fichier ```txt util/XtreamUrlBuilder.kt ``` ### 30.2. Live ```txt /live/username/password/stream_id.m3u8 ``` ### 30.3. VOD ```txt /movie/username/password/stream_id.extension ``` ### 30.4. Série ```txt /series/username/password/episode_id.extension ``` ### 30.5. Replay ```txt /timeshift/username/password/durée/date/stream_id.ts ``` --- ## 31. Historique des mises à jour ### 31.1. Version initiale Ajout : - projet Android TV ; - connexion Xtream ; - lecture Live ; - Media3 ExoPlayer ; - Retrofit ; - écran Login ; - écran Home ; - lecteur vidéo. ### 31.2. Correction environnement Ajout / correction : - Gradle Wrapper ; - configuration Java ; - configuration Android SDK ; - suppression plugin Kotlin obsolète ; - correction mémoire Gradle. ### 31.3. Correction lancement Google TV Ajout : ```xml LAUNCHER LEANBACK_LAUNCHER ``` Résultat : - bouton Ouvrir actif ; - lancement via Google TV ; - lancement via ADB. ### 31.4. Mémoire Xtream Ajout : - `ConfigStorage.kt` ; - sauvegarde identifiants ; - connexion automatique ; - déconnexion. ### 31.5. Catégories Live Ajout : - `get_live_categories` ; - affichage catégories ; - filtrage chaînes ; - catégorie Toutes. ### 31.6. UI avancée Ajout : - design sophistiqué ; - favoris Live ; - état de retour ; - chaîne épinglée ; - résolution ; - recherche catégorie ; - recherche chaîne ; - zapping gauche/droite. ### 31.7. UI compacte Correction : - textes réduits ; - champs plus petits ; - meilleurs contrastes ; - noms chaînes visibles. ### 31.8. Focus actions Correction : - boutons Favori / Épingler accessibles ; - actions dans chaque ligne. ### 31.9. Player back/focus Ajout : - overlay 3 secondes ; - retour en deux étapes ; - confirmation sortie ; - focus sur chaîne après retour. ### 31.10. Logos Ajout : - logos chaînes ; - logos dans lecteur ; - fallback initiales. ### 31.11. EPG + Replay Ajout : - EPG court ; - programme en cours ; - programme suivant ; - replay de base. ### 31.12. Correction EPG Regex Correction : - chaîne brute Kotlin pour Regex horaire. ### 31.13. Replay Guide complet Ajout : - guide replay par chaîne ; - liste des émissions ; - choix émission ; - replay spécifique. ### 31.14. Guide TV global Ajout : - écran guide TV toutes chaînes ; - programmes complets ; - recherche émission ; - direct / replay. ### 31.15. VOD + Séries Ajout : - catalogue films ; - catalogue séries ; - catégories VOD ; - catégories séries ; - saisons ; - épisodes ; - lecture VOD ; - lecture séries. ### 31.16. Favoris VOD + Séries Ajout : - favoris films ; - favoris séries ; - catégories Favoris ; - badges. ### 31.17. Correction noms épisodes Correction : - affichage titres épisodes ; - fallback épisode lisible. ### 31.18. Tri catégories Ajout : - catégories françaises en premier ; - catégories arabes ensuite ; - autres catégories après. ### 31.19. Splash iMedia TV+ Ajout : - image de démarrage ; - suppression écran blanc ; - thème launch background. --- ## 32. Points connus / limites ### 32.1. Dépendance fournisseur Certaines fonctions dépendent entièrement du serveur Xtream : - logos ; - EPG ; - replay ; - noms épisodes ; - durée ; - extension ; - catégories propres. Si le serveur renvoie des données vides ou incohérentes, l’application applique des fallbacks. ### 32.2. Replay Le replay ne fonctionne que si le serveur fournit : - `tv_archive` ; - `has_archive` ; - données EPG complètes ; - dates exploitables ; - durée correcte. ### 32.3. VOD / Séries Les affiches, catégories, noms et épisodes dépendent aussi de la qualité des métadonnées Xtream. ### 32.4. Sécurité Les identifiants sont stockés en `SharedPreferences`. Amélioration recommandée : - passer à `EncryptedSharedPreferences` ou solution équivalente ; - éviter tout log contenant username/password. --- ## 33. Roadmap recommandée ### 33.1. Priorité haute - sécuriser le stockage des identifiants ; - optimiser le chargement EPG global ; - ajouter cache local EPG ; - ajouter historique de lecture ; - reprendre la lecture VOD / séries ; - améliorer la page détail VOD ; - améliorer la page détail série ; - ajouter choix audio / sous-titres ; - ajouter option qualité / fallback TS-HLS. ### 33.2. Priorité moyenne - profils utilisateurs ; - contrôle parental ; - thème clair/sombre ; - tri personnalisé des catégories ; - masquer catégories inutiles ; - recherche globale Live + VOD + Séries ; - écran paramètres ; - export/import configuration. ### 33.3. Priorité produit - icône finale ; - bannière Android TV ; - politique de confidentialité ; - conditions d’utilisation ; - version release signée ; - préparation publication Play Store TV. --- ## 34. Commandes utiles ### 34.1. Compiler ```powershell cd "D:\07-Logiciels\11-IPTV Andoid TV 2" .\gradlew.bat clean --no-daemon .\gradlew.bat :app:assembleDebug --no-daemon ``` ### 34.2. Installer ```powershell adb install -r ".\app\build\outputs\apk\debug\app-debug.apk" ``` ### 34.3. Lancer ```powershell adb shell am start -n ma.tkgraph.xtreamtv/.MainActivity ``` ### 34.4. Voir appareils ```powershell adb devices ``` ### 34.5. Logs ```powershell adb logcat | findstr ma.tkgraph ``` ### 34.6. Désinstaller ```powershell adb uninstall ma.tkgraph.xtreamtv ``` --- ## 35. Sauvegardes recommandées Avant chaque grande mise à jour : ```powershell Copy-Item "D:\07-Logiciels\11-IPTV Andoid TV 2" "D:\07-Logiciels\11-IPTV Andoid TV 2 - Backup NOM_VERSION" -Recurse ``` Exemples de sauvegardes utilisées : ```txt OK lancement OK mémoire Xtream Backup avant categories Backup avant UI compacte Backup avant EPG replay Backup avant VOD series Backup avant splash iMedia ``` --- ## 36. Résumé fonctionnel actuel | Fonction | Statut | |---|---| | Connexion Xtream | OK | | Mémoire identifiants | OK | | Google TV launcher | OK | | Live TV | OK | | Catégories Live | OK | | Recherche catégories | OK | | Recherche chaînes | OK | | Logos chaînes | OK | | Favoris chaînes | OK | | Chaîne épinglée | OK | | Zapping gauche/droite | OK | | Résolution lecteur | OK | | Overlay lecteur auto-hide | OK | | Retour en deux étapes | OK | | Confirmation quitter | OK | | EPG court | OK | | Replay de base | OK | | Guide replay par chaîne | OK | | Guide TV global | OK | | VOD | OK | | Séries | OK | | Favoris VOD | OK | | Favoris séries | OK | | Tri catégories FR / AR / autres | OK | | Splash iMedia TV+ | OK | --- ## 37. Conclusion Le projet est passé d’un simple lecteur Xtream expérimental à une application Google TV structurée avec : - Live TV ; - EPG ; - Replay ; - Guide TV ; - VOD ; - Séries ; - favoris ; - logos ; - écran de démarrage personnalisé ; - navigation télécommande ; - sauvegarde locale. La prochaine étape sérieuse consiste à stabiliser, sécuriser et optimiser : 1. stockage chiffré ; 2. cache local ; 3. performances EPG ; 4. design final ; 5. signature release ; 6. publication éventuelle. Fin du document. Le logiciel fonctionne, ce qui reste un événement statistiquement respectable.