Thêm phần phụ thuộc
Kotlin
implementation("androidx.media3:media3-ui:1.9.2")
Groovy
implementation "androidx.media3:media3-ui:1.9.2"
PlayerView
Thành phần quan trọng nhất là PlayerView, một khung hiển thị để phát nội dung đa phương tiện.
PlayerView hiển thị video, hình ảnh, phụ đề và ảnh bìa album trong khi phát,
cũng như các nút điều khiển phát.
PlayerView có phương thức setPlayer() để đính kèm và tách (bằng cách
truyền null) các thực thể Player.
PlayerView có thể được sử dụng để phát video, hình ảnh và âm thanh. Phương thức này kết xuất
video và phụ đề trong trường hợp phát video, kết xuất ảnh bitmap để phát hình ảnh
và có thể hiển thị ảnh bìa được đưa vào dưới dạng siêu dữ liệu trong tệp âm thanh. Bạn có thể đưa phương thức này vào tệp bố cục như bất kỳ thành phần giao diện người dùng nào khác. Ví dụ: bạn có thể đưa PlayerView
vào bằng XML sau:
<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"/>
Đoạn mã ở trên minh hoạ rằng PlayerView cung cấp một số thuộc tính.
Bạn có thể sử dụng các thuộc tính này để tuỳ chỉnh hành vi của khung hiển thị, cũng như
giao diện và cảm quan của khung hiển thị. Hầu hết các thuộc tính này đều có các phương thức setter tương ứng.
Bạn có thể sử dụng các phương thức này để tuỳ chỉnh khung hiển thị trong thời gian chạy. Tài liệu PlayerView
liệt kê các thuộc tính và phương thức setter này chi tiết hơn.
Để mang lại trải nghiệm thoải mái hơn cho người dùng, hãy cân nhắc thêm thuộc tính keepScreenOn
của Android hoặc đặt khoá đánh thức nếu bạn đang sử dụng ExoPlayer. Bạn
có thể tìm hiểu các hành động khác giúp thiết bị luôn thức trong các trang công việc ở chế độ nền.
android:keepScreenOn="true"
Sau khi khai báo khung hiển thị trong tệp bố cục, bạn có thể tra cứu khung hiển thị đó trong phương thức
onCreate của hoạt động:
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); }
Sau khi khởi chạy, bạn có thể đính kèm trình phát vào khung hiển thị bằng cách gọi
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 là một trong các khung hiển thị phụ của PlayerView chứa
thanh tiến trình và các nút để điều khiển chế độ phát. Xin lưu ý rằng PlayerControlView không
nên sử dụng làm một thành phần độc lập bên ngoài PlayerView. Bạn có thể tuỳ chỉnh thành phần này bằng cách đặt các thuộc tính trên PlayerView (thuộc tính này sẽ được truyền đến
PlayerControlView) hoặc cung cấp một bộ điều khiển tuỳ chỉnh bằng
android:id="@id/exo_controller.
Chọn loại nền tảng
Thuộc tính surface_type của PlayerView cho phép bạn đặt loại nền tảng
dùng để phát video. Các giá trị được phép là surface_view, texture_view,
spherical_gl_surface_view (đây là một giá trị đặc biệt để phát video hình cầu
), video_decoder_gl_surface_view (dùng để kết xuất video bằng trình kết xuất tiện ích
) và none (chỉ dùng để phát âm thanh). Bạn có thể tìm thêm thông tin về
loại nền tảng cần chọn trên trang Nền tảng.