Đ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 phím tại dispatchKeyEvent(KeyEvent)
của Activity
. Bạn cần uỷ quyền các quyền 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 tiêu điểm cho PlayerView
là rất quan trọng để điều hướng 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 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 đặt AndroidView
thành có thể lấy tiêu điểm và uỷ quyền sự kiện bằng cách truyền tham số đối tượng sửa đổi vào AndroidView
tương ứng:
AndroidView(
modifier = modifier
.focusable()
.onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) },
factory = { playerView }
)