A modern Android IPTV streaming application built with Jetpack Compose and Kotlin.
- Live TV Streaming: Watch live IPTV channels from M3U playlists
- Channel Categories: Browse and filter channels by category (News, Sports, Entertainment, etc.)
- Favorites: Save your favorite channels for quick access
- Trending: Track trending and popular channels
- Search: Voice-enabled and text search for channels
- Day/Night Mode: Automatic theme switching based on system settings
- Colorful Categories: Each channel category has unique colors
- Responsive Design: Adapts to different screen orientations
- Modern Cards: Beautiful card-based UI with smooth animations
- ExoPlayer Integration: High-quality video streaming with HLS support
- Fullscreen Mode: Auto-rotate to landscape for immersive viewing
- Auto-hide Controls: Video controls auto-hide after 3 seconds
- Playback Controls: Play, pause, and fullscreen toggle
- Dark Mode Toggle: Switch between light and dark themes
- Auto-play: Automatically play channel when selected
- Live Badge: Show/hide LIVE indicator on channels
- Playlist Management: Load and refresh IPTV playlists
The app features:
- Home screen with channel list and voice search
- Category filtering with colorful chips
- Trending channels section
- Favorites management
- Channel details with playback controls
- Fullscreen video player with auto-hiding controls
- Settings with theme and playback options
- Kotlin: Modern Android development
- Jetpack Compose: Declarative UI framework
- Material Design 3: Modern Android design system
- ExoPlayer (Media3): Video playback engine
- Coil: Image loading and caching
- Navigation Compose: Screen navigation
- MVVM Pattern: Clean separation of concerns
- ViewModel: Lifecycle-aware state management
- State Management: Compose State with remember/mutableStateOf
app/src/main/java/com/reet/iptv/
├── MainActivity.kt # Main entry point
├── ui/
│ ├── screens/
│ │ ├── BrowseScreen.kt # Browse all channels
│ │ ├── ChannelDetailScreen.kt # Channel player
│ │ ├── FavoritesScreen.kt # Saved favorites
│ │ ├── SettingsScreen.kt # App settings
│ │ └── TrendingScreen.kt # Trending channels
│ └── theme/
│ ├── Color.kt # Color definitions
│ ├── Theme.kt # Theme configuration
│ └── Type.kt # Typography styles
└── ui/screens/
└── getCategoryColor.kt # Category color helper
- Android Studio Hedgehog or newer
- Kotlin 1.9+
- Android SDK 24+ (Android 7.0)
- Gradle 8.0+
- Clone the repository
- Open in Android Studio
- Sync Gradle files
- Build and run on device/emulator
./gradlew assembleDebugThe app loads channels from M3U playlists. Default playlist:
https://iptv-org.github.io/iptv/countries/in.m3u
To use a custom playlist:
- Go to Settings
- Tap "Default Playlist"
- Enter your M3U URL
The app includes demo channels for testing:
- DD National (News)
- Star Sports 1 (Sports)
- Sony SET (Entertainment)
- Zee TV (Entertainment)
- MTV India (Music)
- Discovery Channel (Documentary)
- Nickelodeon India (Kids)
- Aaj Tak (News)
Reet Kumar Bind
Software Engineer
Building scalable backend systems & Android applications using Java and Kotlin.
- Email: reetkumarbind@gmail.com
- Website: reetkumarbind.netlify.app
This project is open source and available for educational purposes.
- IPTV-org for providing free IPTV playlists
- Jetpack Compose team for the amazing UI toolkit
- ExoPlayer team for video playback solutions