เพิ่มทรัพยากร Dependency
Kotlin
implementation("androidx.media3:media3-ui:1.11.1")
ดึงดูด
implementation "androidx.media3:media3-ui:1.11.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 เหล่านี้โดยละเอียด
พิจารณาเพิ่มแอตทริบิวต์ Android keepScreenOn หรือตั้งค่า 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 เป็นหนึ่งใน 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 (สำหรับการเล่นเสียงเท่านั้น) ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทพื้นผิวที่ควรเลือกได้ในหน้าพื้นผิว