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

Gdy aplikacja odtwarza plik multimedialny, użytkownicy powinni mieć możliwość wstrzymywania i wznawiania odtwarzania przez naciśnięcie klawisza spacji na klawiaturze fizycznej.

reagować na zdarzenia naciśnięcia klawisza,

Aplikacje oparte na Jetpack Compose lub widokach reagują na naciśnięcia klawiszy 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

Nowy post

W Jetpack Compose użyj modyfikatora onPreviewKeyEvent lub onKeyEvent w układzie, który zarządza kombinacją klawiszy:

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

lub

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

Widoki

W aktywności w aplikacji zastąpij metodę onKeyUp():

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    ...
}

Java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    ...
}

Metoda jest wywoływana przy każdym naciśnięciu i odpuszczeniu klawisza, więc jest wykonywana dokładnie raz na każde naciśnięcie klawisza.

2. Filtrowanie naciśnięć spacji

W metodach modyfikatora Compose onPreviewKeyEventonKeyEvent lub metodzie widoków onKeyUp() odfiltruj KeyEvent.KEYCODE_SPACE, aby wysłać odpowiednie zdarzenie do komponentu multimediów:

Nowy post

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) {
        ...
    }
    ...
})

Widoki

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

Nowy post

  • onPreviewKeyEvent: modyfikator, który umożliwia komponentowi przechwytywanie zdarzeń związanych z klawiszami sprzętowymi, gdy on sam (lub jeden z jego elementów podrzędnych) ma fokus.
  • onKeyEvent: podobnie jak onPreviewKeyEvent, modyfikator, który umożliwia komponentowi przechwytywanie zdarzeń związanych z klawiszami sprzętowymi, gdy komponent (lub jeden z jego elementów podrzędnych) ma fokus.

Widoki

  • onKeyUp(): moduł obsługi zdarzeń wywoływany, gdy klucz zostanie zwolniony i nie zostanie obsłużony przez widok (np. TextView) w ramach aktywności.

Wyniki

Aplikacja może teraz reagować na naciśnięcie klawisza spacji, aby wstrzymywać i wznawiać odtwarzanie filmu lub innych multimediów.