Skip to main content

Getting Started

This SDK enables you to securely stream DRM-protected videos through your Android app.

Sample Android App

Adding dependency

  • If you have a settings.gradle file in your project root, then you need to add the repositories in the settings.gradle inside dependencyResolutionManagement with the given path below. Else, this will go in build.gradle file in project root.
repositories {
// other repo, e.g. google() or mavenCentral()
maven {
url "https://github.com/testpress/maven/raw/main/repo"
}
}

Then reference the library in the dependency section:

dependencies {
implementation "com.tpstreams.player:player:3.1.1"
}

Using ProGuard

If you use ProGuard in your app, you might need to add the following rule to your ProGuard file.

-keep class com.tpstream.player.** { *; }

Initializing Player SDK

You need to initialize the Player SDK at the top level in the Activity.

class PlayerActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_player)
TPStreamsSDK.initialize(TPStreamsSDK.Provider.TestPress, "your_subdomain") // demo for demo.testpress.in
}
}

Integrating player fragment

Drop a TpStreamPlayerFragment into your activity layout with an id. This is the fastest and easiest way to integrate the player into your application. TpStreamPlayerFragment includes a prebuilt UI for the player with ample features and functionality.

<androidx.fragment.app.FragmentContainerView
android:id="@+id/tpstream_player_fragment"
android:name="com.tpstream.player.TpStreamPlayerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:keepScreenOn="true"
tools:layout="@layout/fragment_tp_stream_player" />

and receive its instance in your activity using findFragmentbyId()

playerFragment = supportFragmentManager.findFragmentById(R.id.tpstream_player_fragment) as TpStreamPlayerFragment

Initializing Player And Starting Playback

You can set listener class with onInitializationSuccess method and receive the player in the onInitializationSuccess callback.

playerFragment.setOnInitializationListener(object: InitializationListener {
override fun onInitializationSuccess(player: TpStreamPlayer) {
this.player = player
}
})

Once you have a player, you can start loading media onto it for playback. You'll need a TpInitParams object to specify which media to load along with your playback preferences.

A TpInitParams object needs videoId, accessToken and orgCode.

try {
val parameters = TpInitParams.Builder()
.setVideoId(videoId) // mandatory
.setAccessToken(accessToken) // mandatory
.build()
player.load(parameters)
} catch (exception: IllegalArgumentException){
// videoId and accessToken must not be null or empty
}

Final code will look like this

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_player)
playerFragment =
supportFragmentManager.findFragmentById(R.id.tpstream_player_fragment) asTpStreamPlayerFragment
playerFragment.setOnInitializationListener(object: InitializationListener {
override fun onInitializationSuccess(player: TpStreamPlayer) {
val parameters = TpInitParams.Builder()
.setVideoId(videoId)
.setAccessToken(accessToken)
.build()
player.load(parameters)
}
});
}

Initializing Player Even Listener

Set up a listener to handle player even.

player.setListener(object : TPStreamPlayerListener {
override fun onPlaybackStateChanged(playbackState: Int) {
Log.d(TAG, "onPlaybackStateChanged: $playbackState")
}

override fun onAccessTokenExpired(videoId: String, callback: (String) -> Unit) {
// Provide the new access token.
val newAccessToken = "5c49285b-0557-4cef-b214-66034d0b77c3"
callback(newAccessToken)
}

override fun onPlayerError(playbackError: PlaybackError) {
Log.d(TAG, "onPlayerError: $playbackError")
}
})

Call this below method to enable auto fullscreen on rotate

  playerFragment.enableAutoFullScreenOnRotate()