Files
iptv-android-tv-2/IA/SPECIFICATIONS_IMEDIA_TV_PLUS.md
T

26 KiB
Raw Blame History

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

D:\07-Logiciels\11-IPTV Andoid TV 2

2.3. Java / JDK

JDK utilisé via Android Studio :

D:\Program Files\Android\Android Studio\jbr

Version constatée :

OpenJDK 21.0.10

2.4. Android SDK

SDK utilisé :

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 :

D:\Tools\Gradle\gradle-9.1.0

Wrapper Gradle généré dans le projet :

gradlew.bat

Commande utilisée :

gradle wrapper --gradle-version 9.1.0 --distribution-type bin

3. Configuration PowerShell recommandée

Avant compilation :

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 :

java -version
adb version
gradle -v

4. Compilation APK

4.1. Nettoyage

.\gradlew.bat clean --no-daemon

4.2. Compilation debug

.\gradlew.bat :app:assembleDebug --no-daemon

4.3. APK générée

.\app\build\outputs\apk\debug\app-debug.apk

5. Installation sur Google TV

5.1. Connexion ADB

adb connect 192.168.1.124
adb devices

Résultat attendu :

192.168.1.124:5555      device

5.2. Installation APK

adb install -r ".\app\build\outputs\apk\debug\app-debug.apk"

Résultat attendu :

Success

5.3. Lancement

adb shell am start -n ma.tkgraph.xtreamtv/.MainActivity

ou :

adb shell monkey -p ma.tkgraph.xtreamtv 1

6. Architecture générale

6.1. Structure logique

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 :

<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />

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

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 :

http://serveur.example.com:8080
username
password

10.2. Validation du compte

Endpoint utilisé :

/player_api.php?username=USER&password=PASS

Vérifications :

  • auth == "1"
  • status == "Active"

11. Sauvegarde des identifiants

11.1. Fichier

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 :

app/src/main/res/drawable-nodpi/imedia_tv_background.png

Ajout du fond de lancement :

app/src/main/res/drawable/launch_background.xml

Modification du thème :

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 :

/player_api.php?action=get_live_categories

Chaînes Live :

/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

/live/username/password/stream_id.m3u8

Fallback possible selon fournisseur :

/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

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

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 :

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 :

stream_icon

19.2. Composant

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

/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

EpgProgramDto.kt
EpgShortResponse.kt

20.4. Correction effectuée

Une erreur Kotlin a été corrigée dans une Regex :

Ancienne forme invalide :

Regex("(\d{2}:\d{2})")

Correction :

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

/player_api.php?action=get_simple_data_table&stream_id=STREAM_ID

21.4. URL Replay

/timeshift/username/password/durée/date/stream_id.ts

21.5. Écran dédié

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é

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 :

/player_api.php?action=get_vod_categories

Films VOD :

/player_api.php?action=get_vod_streams

23.2. Écran

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

/movie/username/password/stream_id.extension

L’extension vient de :

container_extension

Fallback :

mp4

24. Séries

24.1. Endpoints

Catégories séries :

/player_api.php?action=get_series_categories

Liste séries :

/player_api.php?action=get_series

Détail série :

/player_api.php?action=get_series_info&series_id=SERIES_ID

24.2. Écran

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

/series/username/password/episode_id.extension

Fallback :

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 :

É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

ui/screens/LoginScreen.kt

Rôle :

  • saisie serveur ;
  • saisie username ;
  • saisie password ;
  • vérification compte ;
  • sauvegarde si connexion réussie.

28.2. HomeScreen

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

ui/screens/PlayerScreen.kt

Rôle :

  • lecture vidéo ;
  • overlay ;
  • résolution ;
  • retour ;
  • zapping.

28.4. ReplayGuideScreen

ui/screens/ReplayGuideScreen.kt

Rôle :

  • replay par chaîne ;
  • choix de l’émission ;
  • recherche émission ;
  • lecture catch-up.

28.5. ProgramGuideScreen

ui/screens/ProgramGuideScreen.kt

Rôle :

  • guide TV global ;
  • chaînes + programmes ;
  • direct ;
  • replay.

28.6. VodScreen

ui/screens/VodScreen.kt

Rôle :

  • catalogue films ;
  • catégories ;
  • recherche ;
  • favoris ;
  • lecture.

28.7. SeriesScreen

ui/screens/SeriesScreen.kt

Rôle :

  • catalogue séries ;
  • catégories ;
  • saisons ;
  • épisodes ;
  • favoris ;
  • lecture.

29. Modèles principaux

29.1. XtreamConfig

serverUrl
username
password

29.2. LiveStreamDto

Champs typiques :

name
stream_id
stream_icon
category_id
epg_channel_id
tv_archive
has_archive
container_extension

29.3. LiveCategoryDto

category_id
category_name
parent_id

29.4. EpgProgramDto

Champs possibles selon serveur :

title
description
start
end
start_timestamp
stop_timestamp

29.5. VOD

Champs typiques :

name
stream_id
stream_icon
category_id
container_extension
rating
added

29.6. Séries

Champs typiques :

series_id
name
cover
category_id
genre
plot
cast
rating

29.7. Épisodes

Champs typiques :

id
episode_num
title
name
episode_name
container_extension
info

30. Génération d’URL

30.1. Fichier

util/XtreamUrlBuilder.kt

30.2. Live

/live/username/password/stream_id.m3u8

30.3. VOD

/movie/username/password/stream_id.extension

30.4. Série

/series/username/password/episode_id.extension

30.5. Replay

/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 :

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

cd "D:\07-Logiciels\11-IPTV Andoid TV 2"

.\gradlew.bat clean --no-daemon
.\gradlew.bat :app:assembleDebug --no-daemon

34.2. Installer

adb install -r ".\app\build\outputs\apk\debug\app-debug.apk"

34.3. Lancer

adb shell am start -n ma.tkgraph.xtreamtv/.MainActivity

34.4. Voir appareils

adb devices

34.5. Logs

adb logcat | findstr ma.tkgraph

34.6. Désinstaller

adb uninstall ma.tkgraph.xtreamtv

35. Sauvegardes recommandées

Avant chaque grande mise à jour :

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 :

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.