Player Control
Control video playback programmatically — play, pause, seek, adjust volume, and manage multiple players.
Basic Control
Use the channel view model to control the active player:
val viewModel = remember { BBChannelViewModel() }
// Play / Pause
viewModel.play()
viewModel.pause()
// Seek to 30 seconds
viewModel.seek(30.0)
// Volume (0.0 to 1.0)
viewModel.setVolume(0.5)
// Mute / Unmute
viewModel.setMuted(true)
Available Methods
All methods accept an optional playerId parameter. Without it, they target the active player.
| Method | Description |
|---|---|
play(playerId?) | Start or resume playback |
pause(playerId?) | Pause playback |
seek(time, playerId?) | Seek to position in seconds |
setVolume(level, playerId?) | Set volume (0.0 – 1.0) |
setMuted(muted, playerId?) | Mute or unmute |
enterFullscreen(playerId?) | Enter fullscreen mode |
exitFullscreen(playerId?) | Exit fullscreen mode |
Multi-Player
Channels can have multiple players active simultaneously.
Common Player IDs
| ID | Context |
|---|---|
player | Main page inline player |
detailPage | Detail page player |
overviewPage | Overview/playlist page player |
Targeting Specific Players
// Pause the main player while detail page is open
viewModel.pause(playerId = "player")
// Play only the detail page player
viewModel.play(playerId = "detailPage")
Player Events
Listen for player lifecycle and state changes via callbacks:
val callbacks = BBChannelCallbacks(
onPlayersChange = { players ->
println("Active players: ${players.size}")
},
onActivePlayerChange = { playerId ->
println("Active player: ${playerId ?: "none"}")
},
onPlayerStateChange = { state ->
println("Player ${state.state}")
}
)