# การใช้งาน ByteArk Player SDK for Android

หน้านี้แสดง Walkthrough การตั้งค่า ByteArkPlayerFragment ในแอปของคุณ สำหรับรายละเอียดของแต่ละ Option / API / Event ดูเอกสารอ้างอิงตามลิงก์ในแต่ละขั้นตอน

# 1. Setup View Container

Setup View Container สำหรับ attach ByteArkPlayerFragment โดย Optional ว่าสามารถสร้าง ViewGroup Container สำหรับ 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)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2. สร้าง ByteArkPlayerFragment

สร้าง ByteArkPlayerBuilder พร้อมกำหนดความสามารถที่ต้องการ จากนั้นสร้าง Setting object สำหรับแต่ละความสามารถ และส่งเข้า ByteArkPlayerFragment.createInstance(...)

private fun setupPlayerFragment() {
  // สร้าง Player Builder
  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 ของแต่ละ 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
  )
  // สร้าง Fragment Instance
  mPlayerFragment = ByteArkPlayerFragment.createInstance(
    playerBuilder,
    mFragmentListener,
    companionAdSlot,
    nielsenSetting,
    playbackSetting,
    lighthouseSetting,
    chromeCastSetting
  )
  supportFragmentManager.beginTransaction()
    .replace(mFragmentContainer.id, mPlayerFragment)
    .commit()
}
1
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

ดู Options สำหรับรายการ Builder method ทั้งหมดและ Setting object แต่ละชนิด

# 3. สร้าง Fragment Listener

Listener ใช้สำหรับรับ Event จาก Player เช่น เริ่ม/หยุดเล่น เกิด Error เปลี่ยน Picture-in-Picture mode ฯลฯ ตัวอย่างด้านล่างคือ Callback ที่ใช้บ่อยที่สุด

private var mFragmentListener = object : PlayerFragmentListener {
  override fun onPlayerReady() {
    // Player พร้อมเล่น
  }
  override fun onPlay() {
    // เริ่มเล่นวิดีโอ
  }
  override fun onPause() {
    // หยุดเล่นชั่วคราว
  }
  override fun onEnded() {
    // วิดีโอเล่นจบ
  }
  override fun onError(errorCode: String, errorMessage: String) {
    // จัดการ Error ในการเล่นวิดีโอ
  }
  // ... Callback อื่นๆ ตามต้องการ
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

จากนั้นเพิ่ม Listener เข้ากับ Player Fragment

mPlayerFragment.addFragmentEventListener(mFragmentListener)
1

ดู Event Listeners Reference สำหรับ Callback ทั้งหมด (~30 ตัว) ที่ใช้รับ Event ของ Player, Ads, Buffer, Subtitle, Storyboard, ฯลฯ

# 4. เปิดวิดีโอและเรียกใช้งาน Player API

สร้าง ByteArkPlayerItem แล้วเรียก 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)
1
2
3
4
5
6
7
8

ตัวอย่างการเรียก Player API ที่ใช้บ่อย

mPlayerFragment.play()
mPlayerFragment.pause()
mPlayerFragment.seekTo(60_000L)               // ไปที่นาทีที่ 1:00
mPlayerFragment.setPlaybackSpeed(1.5F)        // เล่นที่ความเร็ว 1.5x
mPlayerFragment.toggleFullScreen()
mPlayerFragment.togglePictureInPicture()
1
2
3
4
5
6

ดู API Reference สำหรับ Method ทั้งหมดของ ByteArkPlayerFragmentController รวมถึง Track/Resolution/Subtitle/Queue management