Tạm dừng và tiếp tục phát nội dung nghe nhìn bằng Phím cách trên bàn phím

Biểu tượng xếp hạng 4 sao

Tính năng tối ưu hoá cho màn hình lớn có thể xử lý dữ liệu đầu vào qua bàn phím bên ngoài, chẳng hạn như nhấn Spacebar để tạm dừng hoặc tiếp tục phát các video và nội dung nghe nhìn khác. Tính năng này đặc biệt hữu ích cho máy tính bảng, thường kết nối với bàn phím bên ngoài và Chromebook (thường có bàn phím bên ngoài nhưng có thể sử dụng ở chế độ máy tính bảng).

Khi nội dung nghe nhìn là thành phần duy nhất của cửa sổ (chẳng hạn như phát video toàn màn hình), hãy phản hồi các sự kiện nhấn phím ở cấp màn hình trong Jetpack Compose.

Các phương pháp hay nhất

Bất cứ khi nào ứng dụng của bạn phát một tệp nội dung nghe nhìn, người dùng sẽ có thể tạm dừng và tiếp tục phát bằng cách nhấn Phím cách trên bàn phím vật lý.

Nguyên liệu

  • KEYCODE_SPACE: Hằng số mã phím cho Phím cách.
  • onPreviewKeyEvent: Modifier cho phép một thành phần chặn các sự kiện liên quan đến phím phần cứng khi thành phần đó (hoặc một trong các thành phần con) được lấy làm tâm điểm.
  • onKeyEvent: Tương tự như onPreviewKeyEvent, Modifier này cho phép một thành phần chặn các sự kiện liên quan đến phím phần cứng khi thành phần đó (hoặc một trong các thành phần con) được lấy tiêu điểm.

Các bước

Để phản hồi các thao tác nhấn phím trên bàn phím trong Jetpack Compose, ứng dụng của bạn phải theo dõi các sự kiện nhấn phím, lọc ra các sự kiện đó và phản hồi một số thao tác nhấn phím, chẳng hạn như thao tác nhấn Phím cách.

1. Theo dõi các sự kiện bàn phím

Với Jetpack Compose, bạn có thể tận dụng đối tượng sửa đổi onPreviewKeyEvent hoặc onKeyEvent trong thành phần quản lý thao tác nhấn phím.

Sự khác biệt chính giữa 2 đối tượng sửa đổi là vị trí điều phối sự kiện nếu đối tượng sửa đổi không sử dụng sự kiện đó:

  • onPreviewKeyEvent – Điều phối sự kiện tới sự kiện con đầu tiên của sự kiện đó.
  • onKeyEvent – Điều phối sự kiện tới sự kiện mẹ của thành phần kết hợp.

2. Lọc và xử lý các thao tác nhấn Phím cách

Bên trong biểu thức lambda của đối tượng sửa đổi onPreviewKeyEvent hoặc onKeyEvent, hãy lọc các sự kiện nhấn phím trong đó sự kiện nhả phím (KeyEventType.KeyUp) khớp với Phím cách (Key.Spacebar).

Trả về true nếu mã của bạn xử lý sự kiện và bạn không muốn sự kiện này truyền thêm nữa. Trả về false để cho phép các thành phần khác xử lý sự kiện.

  • Cách A: Sử dụng onPreviewKeyEvent

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • Cách B: Sử dụng onKeyEvent

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

Kết quả

Ứng dụng của bạn hiện có thể phản hồi khi người dùng nhấn Phím cách để tạm dừng và tiếp tục phát một video hoặc nội dung nghe nhìn khác.

Tài nguyên khác

Để tìm hiểu thêm về các sự kiện bàn phím và cách quản lý những sự kiện đó, hãy xem bài viết Xử lý hoạt động nhập bằng bàn phím.