Monday, 27 August 2018

Verifying your Google Assistant media action integrations on Android




Posted by Nevin Mital, Partner Developer Relations



The Media Controller Test (MCT) app is a powerful tool that allows you to test the intricacies of media playback on Android, and it's just gotten even more useful. Media experiences including voice interactions via the Google Assistant on Android phones, cars, TVs, and headphones, are powered by Android MediaSession APIs. This tool will help you verify your integrations. We've now added a new verification testing framework that can be used to help automate your QA testing.



The MCT is meant to be used in conjunction with an app that implements media APIs, such as the Universal Android Music Player. The MCT surfaces information about the media app's MediaController, such as the PlaybackState and Metadata, and can be used to test inter-app media controls.



The Media Action Lifecycle can be complex to follow; even in a simple Play From Search request, there are many intermediate steps (simplified timeline depicted below) where something could go wrong. The MCT can be used to help highlight any inconsistencies in how your music app handles MediaController TransportControl requests.



Timeline of the interaction between the User, the Google Assistant, and the third party Android App for a Play From Search request.




Previously, using the MCT required a lot of manual interaction and monitoring. The new verification testing framework offers one-click tests that you can run to ensure that your media app responds correctly to a playback request.



Running a verification test




To access the new verification tests in the MCT, click the Test button next to your desired media app.



MCT Screenshot of launch screen; contains a list of installed media apps, with an option to go to either the Control or Test view for each.




The next screen shows you detailed information about the MediaController, for example the PlaybackState, Metadata, and Queue. There are two buttons on the toolbar in the top right: the button on the left toggles between parsable and formatted logs, and the button on the right refreshes this view to display the most current information.



MCT Screenshot of the left screen in the Testing view for UAMP; contains information about the Media Controller's Playback State, Metadata, Repeat Mode, Shuffle Mode, and Queue.




By swiping to the left, you arrive at the verification tests view, where you can see a scrollable list of defined tests, a text field to enter a query for tests that require one, and a section to display the results of the test.



MCT Screenshot of the right screen in the Testing view for UAMP; contains a list of tests, a query text field, and a results display section.




As an example, to run the Play From Search Test, you can enter a search query into the text field then hit the Run Test button. Looks like the test succeeded!



MCT Screenshot of the right screen in the Testing view for UAMP; the Play From Search test was run with the query 'Memories' and ended successfully.




Below are examples of the Pause Test (left) and Seek To test (right).



MCT Screenshot of the right screen in the Testing view for UAMP; a Pause test was run successfully.

MCT Screenshot of the right screen in the Testing view for UAMP; a Seek To test was run successfully.


Android TV




The MCT now also works on Android TV! For your media app to work with the Android TV version of the MCT, your media app must have a MediaBrowserService implementation. Please see here for more details on how to do this.



On launching the MCT on Android TV, you will see a list of installed media apps. Note that an app will only appear in this list if it implements the MediaBrowserService.



Android TV MCT Screenshot of the launch screen; contains a list of installed media apps that implement the MediaBrowserService.



Selecting an app will take you to the testing screen, which will display a list of verification tests on the right.



Android TV MCT Screenshot of the testing screen; contains a list of tests on the right side.



Running a test will populate the left side of the screen with selected MediaController information. For more details, please check the MCT logs in Logcat.



Android TV MCT Screenshot of the testing screen; the Pause test was run successfully and the left side of the screen now displays selected MediaController information.



Tests that require a query are marked with a keyboard icon. Clicking on one of these tests will open an input field for the query. Upon hitting Enter, the test will run.



Android TV MCT Screenshot of the testing screen; clicking on the Seek To test opened an input field for the query.




To make text input easier, you can also use the ADB command:



adb shell input text [query]



Note that '%s' will add a space between words. For example, the command adb shell input text hello%sworld will add the text "hello world" to the input field.



What's next




The MCT currently includes simple single-media-action tests for the following requests:



  • Play
  • Play From Search
  • Play From Media ID
  • Play From URI
  • Pause
  • Stop
  • Skip To Next
  • Skip To Previous
  • Skip To Queue Item
  • Seek To



For a technical deep dive on how the tests are structured and how to add more tests, visit the MCT GitHub Wiki. We'd love for you to submit pull requests with more tests that you think are useful to have and for any bug fixes. Please make sure to review the contributions process for more information.



Check out the latest updates on GitHub!

No comments:

Post a Comment