Điều hướng bằng D-pad trên Android TV
Điều khiển từ xa của Android TV có một nút điều khiển D-pad gửi các lệnh đến dưới dạng sự kiện chính tại dispatchKeyEvent(KeyEvent) của Activity. Bạn cần uỷ quyền các lệnh này cho PlayerView:
Kotlin
override fun dispatchKeyEvent(event: KeyEvent?): Boolean { return playerView.dispatchKeyEvent(event!!) || super.dispatchKeyEvent(event) }
Java
@Override public boolean dispatchKeyEvent(KeyEvent event) { return playerView.dispatchKeyEvent(event) || super.dispatchKeyEvent(event); }
Việc yêu cầu lấy tiêu điểm cho PlayerView là rất quan trọng để di chuyển các nút điều khiển phát và bỏ qua quảng cáo. Hãy cân nhắc yêu cầu lấy tiêu điểm trong onCreate của Activity:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView.requestFocus() // ... }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView.requestFocus(); // ... }
Nếu đang sử dụng Compose trên Android TV, bạn cần làm cho AndroidView
có thể lấy tiêu điểm và uỷ quyền sự kiện bằng cách truyền tham số sửa đổi vào
AndroidView cho phù hợp:
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )