Thêm phần phụ thuộc
Kotlin
implementation("androidx.media3:media3-ui:1.7.1")
Groovy
implementation "androidx.media3:media3-ui:1.7.1"
PlayerView
Thành phần quan trọng nhất là PlayerView
, một khung hiển thị để phát nội dung nghe nhìn.
PlayerView
hiển thị video, hình ảnh, phụ đề và ảnh bìa đĩa nhạc trong khi phát, cũng như các chế độ 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ể dùng cho cả video, hình ảnh và âm thanh. Trình kết xuất này hiển thị video và phụ đề trong trường hợp phát video, hiển thị bitmap cho chế độ phát hình ảnh và có thể hiển thị ảnh bìa đĩa nhạc được đưa vào dưới dạng siêu dữ liệu trong tệp âm thanh. Bạn có thể đưa thành phần này vào các tệp bố cục như mọi thành phần giao diện người dùng khác. Ví dụ: bạn có thể thêm một PlayerView
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ể 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 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ể 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 về PlayerView
liệt kê các thuộc tính và phương thức setter này một cách chi tiết hơn.
Để mang đến trải nghiệm thoải mái hơn cho người dùng, hãy cân nhắc việc thêm thuộc tính keepScreenOn
Android hoặc thiết lập khoá đánh thức nếu bạn đang sử dụng ExoPlayer. Bạn có thể tìm hiểu các thao tác khác giúp thiết bị luôn ở trạng thái hoạt động trong các trang công việc ở chế độ nền.
android:keepScreenOn="true"
Sau khi được khai báo trong tệp bố cục, bạn có thể tra cứu chế độ xem này 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); }
Khi được khởi chạy, trình phát có thể được đính kèm 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ị con 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 được 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 bằng cách đặt các thuộc tính trên PlayerView
(thuộc tính này sẽ được truyền vào 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 một 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 toàn cảnh), 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ể xem thêm thông tin về loại nền tảng cần chọn trên trang Nền tảng.