Za każdym razem, gdy aplikacja odtwarza plik multimedialny, użytkownicy powinni mieć możliwość wstrzymania i wznowienia odtwarzania, naciskając spację na klawiaturze fizycznej.
Reagowanie na zdarzenia naciśnięcia klawisza
Aplikacje oparte na Jetpack Compose lub widokach reagują na naciśnięcia klawiszy klawiatury w podobny sposób: aplikacja nasłuchuje zdarzeń naciśnięcia klawisza, filtruje je i reaguje na naciśnięcia klawiszy, np. spacji.
1. Nasłuchiwanie zdarzeń klawiatury
Utwórz
W Jetpack Compose użyj modyfikatora onPreviewKeyEvent lub onKeyEvent w układzie, który zarządza naciśnięciem klawisza:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
lub
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Wyświetlenia
W aktywności w aplikacji zastąp metodę onKeyUp():
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Metoda jest wywoływana za każdym razem, gdy naciśnięty klawisz zostanie zwolniony, więc jest uruchamiana dokładnie raz dla każdego naciśnięcia klawisza.
2. Filtrowanie naciśnięć spacji
W metodach modyfikatora Compose onPreviewKeyEvent i onKeyEvent lub w metodzie widoków onKeyUp() zastosuj filtr KeyEvent.KEYCODE_SPACE, aby wysłać do komponentu multimedialnego prawidłowe zdarzenie:
Utwórz
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
lub
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Wyświetlenia
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Najważniejsze punkty
KEYCODE_SPACE: stała kodu klawisza dla spacji.
Utwórz
onPreviewKeyEvent: modyfikator, który umożliwia komponentowi przechwytywanie zdarzeń klawiszy sprzętowych, gdy jest on (lub jeden z jego elementów podrzędnych) zaznaczony.onKeyEvent: podobny doonPreviewKeyEventmodyfikator, który umożliwia komponentowi przechwytywanie zdarzeń klawiszy sprzętowych, gdy jest on aktywny (lub gdy aktywne jest jedno z jego elementów podrzędnych).
Wyświetlenia
onKeyUp(): moduł obsługi zdarzeń wywoływany, gdy klawisz zostanie zwolniony i nie jest obsługiwany przez widok (np.TextView) w ramach aktywności.
Wyniki
Aplikacja może teraz reagować na naciśnięcia spacji, aby wstrzymywać i wznawiać odtwarzanie filmu lub innych multimediów.