Android quick start
OGPlayer for Android is built on Media3/ExoPlayer with a Jetpack Compose player UI, distributed as AAR artifacts.
Requirements: Android 8.0+ (minSdk 26) · Kotlin 2.1+ · a Compose-enabled
app for the UI module (ogplayer-core alone works from any Android app).
1 · Add the dependencies
Section titled “1 · Add the dependencies”dependencies { implementation("tv.ogplayer:ogplayer-core:<version>") implementation("tv.ogplayer:ogplayer-ui:<version>") // optional capabilities: implementation("tv.ogplayer:ogplayer-ads-ima:<version>") implementation("tv.ogplayer:ogplayer-cast:<version>")}2 · Build a player and load media
Section titled “2 · Build a player and load media”val player = OGPlayer.Builder(context) .setLicenseKey("OGP1…") // omit → watermarked trial mode .setAdsProvider(ImaAdsProvider(context)) // optional .setCastConnector(OGCastConnector(context)) // optional .build()
player.load( OGMediaItem.Builder("https://example.com/stream.m3u8") .setStreamType(StreamType.VOD) .setTitle("My video") .setDrm( DrmConfig.Builder("https://license.example.com/widevine") .setTokenProvider("X-AxDRM-Message") { tokenService.freshToken() } .build(), ) .setThumbnailTrack("https://example.com/storyboard.vtt") .build(),)DRM tokens are fetched on every license request — never frozen at load
time — so sessions survive long pauses and license expiry transparently
(PlaybackListener.onDrmSessionRenewed).
3 · Show the player
Section titled “3 · Show the player”OGPlayerView( player = player, uiConfig = OGUiConfig.Builder().build(), fullscreenHandler = ActivityFullscreenHandler(activity), overlays = mapOf(OverlaySlot.TOP_END to { MyWatermark() }),)Release the player with player.release() when the screen goes away.
4 · Listen
Section titled “4 · Listen”player.addListener(object : PlaybackListener { override fun onStateChanged(state: PlaybackState) { /* IDLE/BUFFERING/READY/ENDED */ } override fun onError(error: OGPlayerError) { /* stable codes, see Error codes */ }})player.addAnalyticsListener { event -> analytics.track(event.toString()) }Complete examples
Section titled “Complete examples”Every guide in these docs has a matching screen in the open-source Android demo app — clone it and lift code from there.