# 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.