Wiedergabe von Medien mit der Leertaste pausieren und fortsetzen

Symbol für Bewertung mit vier Sternen

Die Optimierung für große Displays umfasst die Möglichkeit, Eingaben über externe Tastaturen zu verarbeiten, z. B. auf das Drücken der Leertaste zu reagieren, um die Wiedergabe von Videos und anderen Medien zu pausieren oder fortzusetzen. Das ist besonders nützlich für Tablets, die oft mit externen Tastaturen verbunden werden, und für Chromebooks, die in der Regel mit externen Tastaturen geliefert werden, aber auch im Tablet-Modus verwendet werden können.

Wenn Medien das einzige Element des Fensters sind (z. B. bei der Vollbild-Videowiedergabe), reagieren Sie in Jetpack Compose auf Tastendruckereignisse auf Bildschirmebene.

Best Practices

Wenn Ihre App eine Mediadatei wiedergibt, sollten Nutzer die Wiedergabe durch Drücken der Leertaste auf einer physischen Tastatur pausieren und fortsetzen können.

Zutaten

  • KEYCODE_SPACE: Tastencodekonstante für die Leertaste.
  • onPreviewKeyEvent: Modifier, mit der eine Komponente Hardware-Tastenereignisse abfangen kann, wenn sie (oder eines ihrer untergeordneten Elemente) den Fokus hat.
  • onKeyEvent: Ähnlich wie bei onPreviewKeyEvent kann eine Komponente mit diesem Modifier Hardware-Tastaturereignisse abfangen, wenn sie (oder eines ihrer untergeordneten Elemente) den Fokus hat.

Schritte

Wenn Ihre App in Jetpack Compose auf Tastendrücke reagieren soll, muss sie auf Tastendruckereignisse warten, die Ereignisse filtern und auf ausgewählte Tastendrücke wie das Drücken der Leertaste reagieren.

1. Auf Tastaturereignisse warten

Mit Jetpack Compose können Sie entweder den Modifikator onPreviewKeyEvent oder onKeyEvent in der Komponente verwenden, die den Tastendruck verwaltet.

Der Hauptunterschied zwischen den beiden Modifikatoren besteht darin, wohin das Ereignis gesendet wird, wenn es nicht vom Modifikator verarbeitet wird:

  • onPreviewKeyEvent: Das Ereignis wird an das erste untergeordnete Element gesendet.
  • onKeyEvent: Das Ereignis wird an das übergeordnete Element des Composables gesendet.

2. Leertastendrücke filtern und verarbeiten

Filtern Sie in der Lambda-Funktion für den Modifizierer onPreviewKeyEvent oder onKeyEvent nach Schlüsselereignissen, bei denen die Tastenfreigabe (KeyEventType.KeyUp) der Leertaste (Key.Spacebar) entspricht.

Geben Sie true zurück, wenn Ihr Code das Ereignis verarbeitet und Sie nicht möchten, dass es weitergegeben wird. Geben Sie false zurück, damit andere Komponenten das Ereignis verarbeiten können.

  • Option A: onPreviewKeyEvent verwenden

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • Option B: onKeyEvent verwenden

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

Ergebnisse

Ihre App kann jetzt auf das Drücken der Leertaste reagieren, um ein Video oder andere Medien zu pausieren und fortzusetzen.

Zusätzliche Ressourcen

Weitere Informationen zu Tastaturereignissen und deren Verwaltung finden Sie unter Tastatureingabe verarbeiten.