Skip to content
Example of a custom configured IPTV Android app based on IPTV Core.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Migrate to Android Studio Sep 15, 2017
gradle/wrapper Migrate to Android Studio Sep 15, 2017
.gitignore Migrate to Android Studio Sep 15, 2017
LICENSE.txt Initial version Jun 4, 2014 Add hide_all_channels_tab option Jul 19, 2018
build.gradle Migrate to Android Studio Sep 15, 2017
gradlew Migrate to Android Studio Sep 15, 2017
gradlew.bat Migrate to Android Studio Sep 15, 2017
settings.gradle Migrate to Android Studio Sep 15, 2017

IPTV Client Example

Example of a custom configured IPTV Android app based on IPTV Core app.


Finctionality of this app is quite similar to IPTV app, but this app is easier to use for the end users because it doesn't require any complicated settings.

Features similar to IPTV:

  • M3U and XSPF playlists support
  • Grid or list view of TV channels
  • EPG support in JTV (zip) or XMLTV (xml, gz) formats

Differences with IPTV:

  • Single playlist is used, users can't add custom playlists
  • No UDP proxy settings

Building custom IPTV app

To build you custom IPTV app you can do one of the following:

  • Clone iptv.example project, change app name, launcher icon, and package name.
  • Create new Android project with empty activity and use the code from

You will also need to set custom playlist URL in MainActivity.onStart().

If you're are new in Android development, you can find some useful tutorials here.

Supported playlists formats

IPTV Core app supports M3U and XSPF playlist formats. Additionally to standard M3U file format it supports extended M3U playlists with custom attrubutes.

Here is an example of extended M3U playlist:

#EXTM3U url-tvg=""
#EXTINF:-1 group-title="Science", Discovery
#EXTINF:-1 group-title="Sport", Eurosport
#EXTINF:-1 tvg-logo="Eurosport" tvg-name="Eurosport" tvg-shift="+1",Eurosport +1
#EXTINF:-1 group-title="Custom" tvg-logo="",My Custom channel
  • url-tvg - URL for EPG in JTV (zip) or XMLTV (xml, gz) format. Several URLs may be specified separated by comma
  • group-title - Title for channels group
  • tvg-logo - Channel logo name (from internal database) or URL to the image that will be used as channel logo
  • tvg-name - Name of the channel from EPG, should be equal to the value of "display-name" tag in XMLTV
  • tvg-id - XMLTV channel id. When both tvg-id and tvg-name are specified for the same channel, tvg-id will be used.
  • tvg-shift - Shift in hours for EPG

Intent API

Intent API which is used for launching IPTV Core from third-party package (launcher app)

    Playlist URL
Extras (optional):
        Type: String
        Example: intent.putExtra("package", getPackageName());
        "package" extra is used for sending package name of your app to IPTV Core. If this extra is set, 
        IPTV Core will be able to show your app name as a title
    url-tvg (Since IPTV Core 3.3)
        Type: String
        Example: intent.putExtra("url-tvg", "<Your EPG URL>");
        EPG URL can be set either by "url-tvg" parameter in your playlist or by "url-tvg" extra
        Type: int
        Example: intent.putExtra("http_connect_timeout", 30 * 1000); // Set http connect timeout to 30 seconds
        Http connect timeout for loading playlist and EPG (not video streams)
        Type: int
        Example: intent.putExtra("http_read_timeout", 30 * 1000); // Set http read timeout to 30 seconds
        Http read timeout for loading playlist and EPG (not video streams)
    http_user_agent (Since IPTV Core 3.3.1)
        Type: String
        Example: intent.putExtra("http_user_agent", "<Custom user agent>")
        Custom value for "User-Agent" http request property which is used for loading playlist and EPG (not video streams)
    preferred_player_package (Since IPTV Core 3.3.2)
        Type: String
        Example: intent.putExtra("preferred_player_package", "org.videolan.vlc"); // Set VLC as preferrred video player
        Preferred video player should be one of the supported players that can be found in IPTV Core settings.
        At the first launch the app will check if one of supported players is installed. 
        When no supported players found, the user will be forced to install the preferred video player.
        By default, the app uses MX Player as preferred player.

    hide_all_channels_tab (Since IPTV Core 3.9.4)
        Type: boolean
        Example: intent.putExtra("hide_all_channels_tab", true);
        Option to hide "All Channels" tab. This option works only when you have categories in your playlist.


Copyright (C) 2014 Alexander Sofronov

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.