เพิ่มการอ้างอิง
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