# Using ByteArk Player SDK for Android
This walkthrough shows how to set up ByteArkPlayerFragment in your app. For details of each Option / API / Event, see the linked reference pages.
# 1. Set up the view container
Set up a view container to host ByteArkPlayerFragment. You may also create a ViewGroup container for Companion Ads.
private fun setupView() {
enableEdgeToEdge()
mBinding = ActivityMainBinding.inflate(layoutInflater)
ViewCompat.setOnApplyWindowInsetsListener(mBinding.main) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
mFragmentContainer = mBinding.fragmentContainer
mCompanionAdsSlotContainer = mBinding.companionAdSlotContainer
setContentView(mBinding.root)
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2. Create ByteArkPlayerFragment
Build a ByteArkPlayerBuilder with the features you want, then build setting objects for each capability and pass them to ByteArkPlayerFragment.createInstance(...).
private fun setupPlayerFragment() {
// Build the player
val playerBuilder = ByteArkPlayerBuilder.Builder()
.withContext(this)
.withAutoPlay()
.withControl()
.withFullScreenButton()
.withPictureInPicture()
.withSeekButtons()
.withSeekTime(10)
.withShareOption()
.withSettingButton()
.build()
// Companion Ad slot (optional)
val companionAdSlot = ByteArkPlayerFragment.createCompanionAdSlot(
mCompanionAdsSlotContainer, 728, 90
)
// Setting objects for each integration
val chromeCastSetting = ByteArkPlayerFragment.createChromeCastSetting(true)
val lighthouseSetting = ByteArkPlayerFragment.createLighthouseSetting(true, "PROJECT_ID", true)
val nielsenSetting = ByteArkPlayerFragment.createNielsenSetting(
"APP_ID", "APP_NAME", "th", "", "DEBUG"
)
val playbackSetting = ByteArkPlayerFragment.createPlaybackSetting(
listOf(0.5F, 1.0F, 1.5F, 2.0F), 1F
)
// Create the fragment instance
mPlayerFragment = ByteArkPlayerFragment.createInstance(
playerBuilder,
mFragmentListener,
companionAdSlot,
nielsenSetting,
playbackSetting,
lighthouseSetting,
chromeCastSetting
)
supportFragmentManager.beginTransaction()
.replace(mFragmentContainer.id, mPlayerFragment)
.commit()
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
See Options for the full list of builder methods and setting objects.
# 3. Create a fragment listener
The listener receives events from the player. The example below shows the most common callbacks.
private var mFragmentListener = object : PlayerFragmentListener {
override fun onPlayerReady() {
// Player ready
}
override fun onPlay() {
// Playback started
}
override fun onPause() {
// Playback paused
}
override fun onEnded() {
// Playback ended
}
override fun onError(errorCode: String, errorMessage: String) {
// Handle playback error
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Then attach the listener:
mPlayerFragment.addFragmentEventListener(mFragmentListener)
See Event Listeners Reference for all callbacks (~30) of
PlayerFragmentListener.
# 4. Open a video and call the API
Create a ByteArkPlayerItem and call openMedia(...):
val playerItem = ByteArkPlayerItemBuilder.Builder()
.withMediaId("VIDEO_ID")
.withTitle("Big Buck Bunny")
.withUrl("https://example.com/playlist.m3u8")
.withPosterImage("https://example.com/poster.jpg")
.build()
mPlayerFragment.openMedia(playerItem)
2
3
4
5
6
7
8
Common API calls:
mPlayerFragment.play()
mPlayerFragment.pause()
mPlayerFragment.seekTo(60_000L)
mPlayerFragment.setPlaybackSpeed(1.5F)
mPlayerFragment.toggleFullScreen()
mPlayerFragment.togglePictureInPicture()
2
3
4
5
6
See API Reference for the full
ByteArkPlayerFragmentControllerinterface.
← Installation Options →