เริ่มต้นใช้งาน UI ที่อิงตามมุมมอง

เพิ่มการอ้างอิง

Kotlin

implementation("androidx.media3:media3-ui:1.7.1")

Groovy

implementation "androidx.media3:media3-ui:1.7.1"

PlayerView

ส่วนประกอบที่สำคัญที่สุดคือ PlayerView ซึ่งเป็นมุมมองสำหรับการเล่นสื่อ PlayerView จะแสดงวิดีโอ รูปภาพ คำบรรยายแทนเสียง และปกอัลบั้มระหว่างการเล่น รวมถึงตัวควบคุมการเล่น

PlayerView มีเมธอด setPlayer() สำหรับการแนบและถอด (โดยการส่ง null) อินสแตนซ์ Player

PlayerView ใช้ได้ทั้งสำหรับการเล่นวิดีโอ รูปภาพ และเสียง โดยจะแสดงวิดีโอและคำบรรยายแทนเสียงในกรณีที่เล่นวิดีโอ บิตแมปสำหรับการเล่นรูปภาพ และแสดงอาร์ตเวิร์กที่รวมเป็นข้อมูลเมตาในไฟล์เสียง คุณสามารถรวมไว้ในไฟล์เลย์เอาต์ได้เหมือนกับคอมโพเนนต์ UI อื่นๆ เช่น คุณสามารถใส่ PlayerView ใน XML ต่อไปนี้

<androidx.media3.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

ข้อมูลโค้ดด้านบนแสดงให้เห็นว่า PlayerView มีแอตทริบิวต์หลายรายการ คุณใช้แอตทริบิวต์เหล่านี้เพื่อปรับแต่งลักษณะการทำงานของมุมมอง รวมถึง รูปลักษณ์และความรู้สึกของมุมมองได้ แอตทริบิวต์ส่วนใหญ่เหล่านี้มีเมธอด Setter ที่เกี่ยวข้อง ซึ่ง สามารถใช้เพื่อปรับแต่งมุมมองในรันไทม์ได้ PlayerViewเอกสารประกอบ จะแสดงแอตทริบิวต์และเมธอด Setter เหล่านี้โดยละเอียด

หากต้องการให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สะดวกสบายยิ่งขึ้น ให้พิจารณาเพิ่มแอตทริบิวต์ keepScreenOn Android หรือตั้งค่า Wake Lock หากคุณใช้ ExoPlayer คุณสามารถตรวจสอบการทำงานอื่นๆ ที่ทำให้อุปกรณ์ตื่นอยู่ได้ในหน้างานในเบื้องหลัง

android:keepScreenOn="true"

เมื่อประกาศมุมมองในไฟล์เลย์เอาต์แล้ว คุณจะค้นหามุมมองได้ในเมธอด onCreate ของกิจกรรม

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

เมื่อเริ่มต้นโปรแกรมเล่นแล้ว คุณจะแนบโปรแกรมเล่นกับมุมมองได้โดยการเรียกใช้ setPlayer

Kotlin

// Instantiate the player.
val player = ExoPlayer.Builder(context).build()
// Attach player to the view.
playerView.player = player
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()

Java

// Instantiate the player.
player = new ExoPlayer.Builder(context).build();
// Attach player to the view.
playerView.setPlayer(player);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();

PlayerControlView

PlayerControlView เป็นหนึ่งใน View ย่อยของ PlayerView ซึ่งมีแถบความคืบหน้าและปุ่มควบคุมการเล่น โปรดทราบว่า PlayerControlView ไม่ได้มีไว้เพื่อใช้เป็นคอมโพเนนต์แบบสแตนด์อโลนภายนอก PlayerView คุณปรับแต่งได้โดยการตั้งค่าแอตทริบิวต์ใน PlayerView (ซึ่งจะส่งไปยัง PlayerControlView) หรือระบุคอนโทรลเลอร์ที่กำหนดเองด้วย android:id="@id/exo_controller

เลือกประเภทแพลตฟอร์ม

แอตทริบิวต์ surface_type ของ PlayerView ช่วยให้คุณตั้งค่าประเภทของแพลตฟอร์ม ที่ใช้สำหรับการเล่นวิดีโอได้ ค่าที่อนุญาตคือ surface_view, texture_view, spherical_gl_surface_view (ซึ่งเป็นค่าพิเศษสำหรับการเล่นวิดีโอทรงกลม ) video_decoder_gl_surface_view (ซึ่งใช้สำหรับการแสดงวิดีโอโดยใช้ เครื่องมือแสดงผลส่วนขยาย) และ none (สำหรับการเล่นเสียงเท่านั้น) ดูข้อมูลเพิ่มเติมเกี่ยวกับ ประเภท Surface ที่ควรเลือกได้ในหน้า Surface