Android SDK¶
The VaultStream Android SDK provides native player integration for Android applications (phone, tablet, and Android TV).
Installation¶
Add the VaultStream repository and dependency to your build.gradle.kts:
repositories {
maven { url = uri("https://maven.cyfr.technology/releases") }
}
dependencies {
implementation("technology.cyfr:vaultstream-player:2.1.0")
}
Quick Start¶
import technology.cyfr.vaultstream.VSPlayer
import technology.cyfr.vaultstream.VSConfig
class MainActivity : ComponentActivity() {
private lateinit var player: VSPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val playerView = findViewById<VSPlayerView>(R.id.player_view)
player = VSPlayer.Builder(this)
.contentId("c_7a3b9f1d")
.jwt("<USER_SESSION_JWT>")
.theme(VSTheme.DARK)
.autoplay(true)
.showControls(true)
.build()
player.attach(playerView)
player.play()
}
}
Configuration¶
val config = VSConfig(
contentId = "c_7a3b9f1d",
jwt = "<JWT>",
theme = VSTheme.DARK,
autoplay = false,
startPositionMs = 0L,
quality = VSQuality.AUTO,
branding = VSBranding(
logoUrl = "https://acme.corp/logo-white.svg",
accentColor = Color.parseColor("#2563eb"),
brandName = "Acme Training"
)
)
val player = VSPlayer.Builder(this)
.config(config)
.listener(object : VSPlayerListener {
override fun onReady() { Log.d("VS", "Ready") }
override fun onPlay() { Log.d("VS", "Playing") }
override fun onPause() { Log.d("VS", "Paused") }
override fun onComplete() { Log.d("VS", "Complete") }
override fun onError(error: VSError) { Log.e("VS", error.message) }
override fun onProgress(percent: Float) {
if (percent > 0.9f) Log.d("VS", "Near complete")
}
})
.build()
Android TV Support¶
The SDK includes built-in D-pad navigation, focus management, and leanback-optimized controls:
player.setTVMode(
TVConfig(
useDpadNavigation = true,
showNowPlayingCard = true,
channelName = "Training Videos"
)
)
Offline Download¶
player.download(contentId, quality = VSQuality.HD) { progress ->
updateProgressBar(progress.percent)
}
// Play downloaded content
player.playOffline(contentId)
ProGuard / R8¶
Add to proguard-rules.pro: