Medien-Apps, die per Sprachbefehl mit Google Assistant auf Android-Smartphones, in Autos, auf Fernsehern und über Kopfhörer interagieren, werden von Android Media Session APIs unterstützt und verwenden Medienaktionen. Der Lebenszyklus von Medienaktionen kann schwer nachzuvollziehen sein. Selbst eine einfache Anfrage zum Abspielen von Inhalten aus der Suche umfasst viele Zwischenschritte, bei denen etwas schiefgehen kann, wie in der vereinfachten Zeitachse dargestellt:
Mit der Media Controller Test App (MCT) können Sie die Feinheiten der Medienwiedergabe unter Android testen und Ihre Implementierung der Mediensitzung überprüfen.
Die Test-App für die Mediensteuerung ist in zwei Versionen verfügbar:
- Die Client-App wird auf der Legacy-
MediaControllerCompatimplementiert. So können Sie Ihre Mediensitzungs-App testen, die auf einer älterenMediaSessionCompatoder der Media3-MediaSessionbasiert, wenn eine externe App über eine ältereMediaControllerCompatdarauf zugreift. Den Quellcode der Legacy-Version finden Sie auf GitHub. - Die Client-App wird auf der neuesten Media3-
MediaControllerimplementiert. So kannst du deine Mediensitzungs-App testen, die auf einer älterenMediaSessionCompatoder der Media3-MediaSessionbasiert, wenn eine externe App über eine Media3-MediaControllerdarauf zugreift. Den Quellcode der Media3-Version finden Sie auf GitHub.
Der MCT zeigt Informationen zur MediaController deiner App an, z. B. die PlaybackState und Metadaten, und kann zum Testen der Mediensteuerung zwischen Apps verwendet werden.
Das MCT enthält auch ein Framework für Verifizierungstests, mit dem Sie Ihre QA-Tests automatisieren können.
Damit du das MCT verwenden kannst, muss deine App einen MediaBrowserService haben und du musst dem MCT erlauben, sich damit zu verbinden. Weitere Informationen findest du unter Medienbrowserdienst erstellen.
MCT starten
Wenn Sie das MCT starten, werden zwei Listen angezeigt:
- Aktive MediaSessions: Diese Liste ist beim Starten des MCT leer und es wird die Meldung „Keine Medien-Apps gefunden. Die Berechtigung „Notification Listener“ ist erforderlich, um nach aktiven Mediensitzungen zu suchen.“ Klicken Sie auf Einstellungen, um den Berechtigungsbildschirm aufzurufen und die Berechtigung für das MCT zu aktivieren.
- MediaBrowserService-Implementierungen: In dieser Liste sind Apps aufgeführt, die einen MediaBrowserService implementiert haben. Wenn du einen MediaBrowserService implementiert hast, wird deine App in dieser Liste angezeigt. Du kannst das MCT jedoch nur verwenden, wenn du deine App so konfiguriert hast, dass sie alle Verbindungen akzeptiert, oder wenn du das MCT auf die Zulassungsliste gesetzt hast. Weitere Informationen findest du unter Clientverbindungen mit onGetRoot() steuern.
Manuelles Testen einer Telefon-App
Wenn du dem MCT erlaubt hast, eine Verbindung zum MediaBrowserService deiner App herzustellen, wird deine App in der Liste der MediaBrowserService-Implementierungen angezeigt. Suchen Sie dort danach und klicken Sie auf Steuerung, um die App im Hintergrund zu starten.
Andernfalls müssen Sie Ihre App zuerst selbst im Hintergrund starten und dann auf Steuern klicken, wenn sie in der Liste der aktiven Mediensitzungen angezeigt wird.
Testen, vorbereiten und spielen
Wenn das MCT die Kontrolle über Ihre App übernimmt, werden die aktuellen Sitzungsmetadaten der App angezeigt: die aktuell ausgewählten Medien und die Aktionen, die die Sitzung verarbeiten kann.
Oben auf der Seite mit den MCT-Steuerelementen befindet sich ein Drop-down-Menü, in dem Sie Suche, URI, Medien-ID oder Keine auswählen können. Außerdem gibt es ein Textfeld, in dem Sie die Eingabedaten für die Suche, den URI oder die Medien-ID angeben können, wenn Sie eine dieser Optionen auswählen.
Über die Schaltflächen Vorbereiten und Wiedergeben direkt unter dem Textfeld werden die entsprechenden Aufrufe (onPrepare(), onPrepareFromSearch(), onPrepareFromUri(), onPrepareFromMediaId(), onPlay(), onPlayFromSearch(), onPlayFromUri(), onPlayFromMediaId()) ausgeführt, je nachdem, welche Aktion Sie ausgewählt haben.
Audiofokus testen
Eine gut funktionierende Medien-App sollte in der Lage sein, den Audiofokus zu verarbeiten. Du kannst den Audiofokus testen, indem du neben deiner App eine andere Audio-App ausführst. Die Seite mit den MCT-Steuerelementen enthält eine Schaltfläche, mit der der Audiofokus angefordert und freigegeben werden kann.
So testen Sie den Audiofokus:
- Wähle im Drop-down-Menü Audiofokus einen der drei Dauerhinweise
AUDIOFOCUS_GAIN,AUDIOFOCUS_GAIN_TRANSIENToderAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCKaus. - Drücke die Taste, um den Fokus anzufordern.
- Drücken Sie die Taste noch einmal, um den Fokus aufzuheben.
Wiedergabesteuerung testen
Wische nach links, um die Benutzeroberfläche des MCT aufzurufen. Diese Ansicht enthält die Standard-Transport-Schaltflächen des Media Controllers und zeigt das Programmbild und die Daten der Sitzung an. Deaktivierte Transport-Schaltflächen sind orange eingekreist. Alle anderen sind aktiv.
Testen Sie den Player mit den Transporttasten. Der Status der Transport-Schaltflächen sollte sich wie erwartet ändern. Wenn Sie beispielsweise die Taste PLAY drücken, sollte sie deaktiviert werden und die Tasten PAUSE und STOP sollten aktiviert werden.
Wische noch einmal nach links, um eine Ansicht mit optionalen Aktionen aufzurufen. Für jede Aktion gibt es ein Steuerelement, das anzeigt, ob sie aktiv ist oder nicht. Wenn sie aktiv ist, können Sie die Aktion durch Klicken ausführen.
Wenn Sie die Verbindung über die Liste der Apps mit einem MediaBrowserService hergestellt haben, können Sie noch zweimal nach links wischen, um Ansichten aufzurufen, in denen Sie die Inhaltshierarchie Ihrer App durchgehen oder den Inhaltsbaum durchsuchen können.
Video-App manuell testen
Verwenden Sie den Splitscreen-Modus, um die Steuerelemente von Video-Apps zu testen. Öffnen Sie zuerst Ihre Video-App in einem Fenster und dann das MCT im Splitscreen-Modus.
Überprüfungstests ausführen
Das Framework für Bestätigungstests bietet Tests, die Sie mit nur einem Klick ausführen können, um zu prüfen, ob Ihre Medien-App korrekt auf eine Wiedergabeanfrage reagiert.
Telefon App testen
Klicke auf die Schaltfläche Testen neben deiner Medien-App, um auf die Bestätigungstests zuzugreifen.
MCT-Status
In der nächsten Ansicht sehen Sie detaillierte Informationen zum MediaController des MCT, z. B. PlaybackState, Metadaten und Warteschlange. Oben rechts in der Symbolleiste befinden sich zwei Buttons. Mit der Schaltfläche links können Sie zwischen parsbaren und formatierten Logs wechseln. Mit der Schaltfläche rechts wird die Ansicht aktualisiert, um die aktuellsten Informationen anzuzeigen.
Test auswählen
Wenn Sie nach links wischen, gelangen Sie zur Ansicht der Bestätigungstests. Dort sehen Sie eine scrollbare Liste der verfügbaren Tests. Wenn für einen Test eine Abfrage verwendet wird, z. B. der Test „Wiedergabe über die Suche“ in Abbildung 7, gibt es ein Textfeld, in das der Abfragestring eingegeben werden kann.
Das MCT umfasst Tests für die folgenden Medienaktionen. Dem Projekt werden laufend weitere Tests hinzugefügt:
- Play
- Über die Suche abspielen
- Über Medien-ID abspielen
- Über URI abspielen
- Pausieren
- Beenden
- Weiter zum nächsten Element
- Zurückspringen
- Zum Element in der Warteschlange springen
- Springen zu
Testergebnisse
Der Ergebnisbereich unten in der Ansicht ist anfangs leer. Hier werden die Ergebnisse angezeigt, wenn Sie einen Test ausführen. Wenn Sie beispielsweise den Test „Wiedergabe über die Suche“ ausführen möchten, geben Sie eine Suchanfrage in das Textfeld ein und klicken Sie auf Test ausführen. Der folgende Screenshot zeigt ein erfolgreiches Testergebnis.
Android TV-App testen
Wenn du das MCT auf Android TV startest, wird eine Liste der installierten Medien-Apps angezeigt. Eine App wird nur dann in dieser Liste angezeigt, wenn sie einen MediaBrowserService implementiert.
Wenn Sie eine App auswählen, gelangen Sie zum Testbildschirm. Dort wird rechts eine Liste mit Bestätigungstests angezeigt.
Wenn du einen Test ausführst, werden auf der linken Seite des Bildschirms Informationen zum ausgewählten MediaController angezeigt. Weitere Informationen finden Sie in den MCT-Logs in Logcat.
Tests, für die eine Abfrage erforderlich ist, sind mit einem Tastatursymbol gekennzeichnet. Wenn Sie auf einen dieser Tests klicken, wird ein Eingabefeld für die Abfrage geöffnet. Drücken Sie die Eingabetaste, um den Test auszuführen.
Um die Texteingabe zu vereinfachen, können Sie auch einen adb-Befehl verwenden:
adb shell input text your-query
Mit „%s“ können Sie ein Leerzeichen zwischen Wörtern einfügen. Mit dem folgenden Befehl wird beispielsweise der Text „hello world“ in das Eingabefeld eingefügt.
adb shell input text hello%sworld
Test erstellen
Sie können eine Pull-Anfrage mit weiteren Tests einreichen, die Sie für nützlich halten. Informationen zum Erstellen neuer Tests finden Sie im MCT GitHub-Wiki und in der Anleitung für Bestätigungstests.
Weitere Informationen finden Sie in der Anleitung für Beiträge.
Zusätzliche Ressourcen
Die MCT ist für die Verwendung in Verbindung mit Apps gedacht, die Media APIs implementieren. Ein Beispiel für eine solche App ist der Universal Android Music Player.
Fehlerkorrekturen und Verbesserungen sind immer willkommen. Weitere Informationen finden Sie in der Anleitung für Beiträge.