Wstrzymywanie i wznawianie odtwarzania multimediów za pomocą klawisza spacji na zewnętrznej klawiaturze

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 onPreviewKeyEventonKeyEvent 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

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 do onPreviewKeyEvent modyfikator, 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.