Мультимедийные приложения, которые взаимодействуют с Google Ассистентом на телефонах Android, в автомобилях, на телевизорах и в наушниках, работают на основе API Android Media Session и используют действия с медиаконтентом. Жизненный цикл медиадействий может быть сложным для понимания. Даже у простого запроса на воспроизведение есть много промежуточных шагов, на которых что-то может пойти не так. Вот упрощенная хронология:
Приложение Media Controller Test (MCT) позволяет тестировать воспроизведение медиаконтента на Android и проверять реализацию медиасеансов.
Приложение Media Controller Test доступно в двух версиях:
- Клиентское приложение реализовано на основе устаревшего
MediaControllerCompat. Это позволяет протестировать приложение с медиасеансом, созданное на основе устаревшего классаMediaSessionCompatили классаMediaSessionиз Media3, когда к нему обращается внешнее приложение через устаревший классMediaControllerCompat. Исходный код устаревшей версии можно найти на GitHub. - Клиентское приложение реализовано на основе последней версии Media3.
MediaControllerЭто позволяет протестировать приложение с медиасеансом, созданное на основе устаревшего классаMediaSessionCompatили классаMediaSessionиз Media3, при доступе из внешнего приложения через классMediaControllerиз Media3. Исходный код версии Media3 можно найти на GitHub.
MCT показывает информацию о MediaController вашего приложения, например PlaybackState и метаданные. С помощью этого инструмента можно тестировать элементы управления мультимедиа в разных приложениях.
В MCT также есть фреймворк для тестирования, который позволяет автоматизировать контроль качества.
Чтобы использовать MCT, в приложении должен быть сервис просмотра медиаконтента, и вы должны разрешить MCT подключаться к нему. Подробную информацию вы найдете в статье Создание сервиса просмотра медиаконтента.
Запуск MCT
При запуске MCT вы увидите два списка:
- Активные сеансы MediaSession. При запуске MCT этот список пуст, и вы увидите сообщение "Мультимедийные приложения не найдены. Чтобы сканировать активные медиасеансы, требуется разрешение на прослушивание уведомлений. Нажмите Настройки, чтобы перейти на экран разрешений и включить разрешение для MCT.
- Реализации MediaBrowserService. В этом списке показаны приложения, в которых реализован сервис MediaBrowserService. Если вы реализовали сервис MediaBrowserService, ваше приложение появится в этом списке, но вы сможете использовать MCT, только если настроили приложение на прием всех подключений или добавили MCT в белый список. Подробнее о том, как управлять подключениями клиентов с помощью onGetRoot()…
Тестирование приложения "Телефон" вручную
Если вы разрешили MCT подключаться к сервису просмотра медиаконтента в вашем приложении, оно появится в списке реализаций сервиса просмотра медиаконтента. Найдите его там и нажмите Управление, чтобы запустить приложение в фоновом режиме.
В противном случае вам нужно будет сначала запустить приложение в фоновом режиме, а затем нажать Управление, когда оно появится в списке активных медиасеансов.
Тестирование: подготовка и запуск
Когда MCT начинает управлять вашим приложением, он отображает метаданные текущего сеанса приложения: выбранный в данный момент медиаконтент и действия, которые сеанс готов обработать.
В верхней части страницы управления MCT есть раскрывающееся меню, в котором можно выбрать Поиск, URI, Идентификатор мультимедийного объекта или Нет, а также текстовое поле, в котором можно указать входные данные, связанные с поиском, URI или идентификатором мультимедийного объекта, если вы выберете один из этих вариантов.
Кнопки Prepare (Подготовить) и Play (Воспроизвести) под текстовым полем выполняют соответствующие вызовы (onPrepare(), onPrepareFromSearch(), onPrepareFromUri(), onPrepareFromMediaId(), onPlay(), onPlayFromSearch(), onPlayFromUri(), onPlayFromMediaId()) в зависимости от выбранного действия.
Тестирование аудиофокуса
Мультимедийное приложение должно правильно обрабатывать аудиофокус. Вы можете протестировать аудиофокус, запустив другое аудиоприложение вместе со своим. На странице управления MCT есть кнопка, которая запрашивает и освобождает аудиофокус.
Чтобы протестировать аудиофокус, выполните следующие действия:
- В раскрывающемся меню Фокус на аудио выберите один из трех вариантов длительности:
AUDIOFOCUS_GAIN,AUDIOFOCUS_GAIN_TRANSIENTилиAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK. - Нажмите кнопку, чтобы запросить фокус.
- Чтобы убрать фокус, нажмите кнопку ещё раз.
Тестирование элементов управления воспроизведением
Проведите по экрану влево, чтобы открыть интерфейс MCT. В этом представлении есть стандартные кнопки управления медиаконтентом, а также изображение и данные программы сеанса. Отключенные кнопки управления обведены оранжевым. Все остальные активны.
Проверьте работу проигрывателя с помощью кнопок управления. Состояние кнопок управления воспроизведением должно меняться ожидаемым образом. Например, когда вы нажимаете кнопку "Воспроизвести", она должна стать неактивной, а кнопки "Приостановить" и "Остановить" – активными.
Проведите влево ещё раз, чтобы посмотреть доступные действия. Рядом с каждым действием есть переключатель, который показывает, активно ли оно. Если она активна, вы можете выполнить действие, нажав на нее.
Если вы подключились из списка приложений, в которых есть сервис просмотра медиаконтента, вы можете провести по экрану влево ещё два раза, чтобы перейти к представлениям, позволяющим перемещаться вверх и вниз по иерархии контента приложения или выполнять поиск по дереву контента.
Как вручную протестировать видеоприложение
Используйте режим разделения экрана, чтобы протестировать контроллеры видеоприложений. Сначала откройте приложение для видео в одном окне, а затем откройте MCT в режиме разделенного экрана.
Выполнение проверок
Фреймворк для тестирования позволяет в один клик проверить, правильно ли ваше приложение для мультимедиа реагирует на запрос воспроизведения.
Тестирование приложения для телефона
Чтобы перейти к проверке, нажмите кнопку Протестировать рядом с нужным приложением.
Статус MCT
В следующем представлении вы увидите подробную информацию о MediaController MCT, например PlaybackState, метаданные и очередь. В правом верхнем углу панели инструментов есть две кнопки. Кнопка слева позволяет переключаться между анализируемыми и форматированными журналами. Кнопка справа обновляет представление, чтобы показать самую актуальную информацию.
Выбор теста
Проведите по экрану влево, чтобы перейти к списку доступных тестов. Если в тесте используется запрос, как в тесте воспроизведения из поиска, показанном на рисунке 7, то есть текстовое поле для ввода строки запроса.
MCT включает тесты для следующих действий с медиаконтентом (в проект постоянно добавляются новые тесты):
- Воспроизвести
- Воспроизвести из поиска
- Воспроизвести по идентификатору медиаконтента
- Воспроизвести из URI
- Приостановить
- Остановить
- Перейти к следующему
- Назад
- Перейти к элементу очереди
- Перемотать до
Результаты тестирования
Область результатов внизу страницы изначально пуста. Когда вы запустите тест, на ней будут показаны результаты. Например, чтобы запустить тест воспроизведения из поиска, введите поисковый запрос в текстовое поле и нажмите Запустить тест. На скриншоте ниже показан успешный результат проверки.
Тестирование приложения для Android TV
При запуске MCT на Android TV вы увидите список установленных мультимедийных приложений. Обратите внимание, что в этом списке будут только приложения, в которых реализован сервис просмотра медиаконтента.
После выбора приложения откроется экран тестирования, на котором справа будет показан список проверок.
При запуске теста в левой части экрана отображается информация о выбранном MediaController. Подробности можно найти в журналах MCT в Logcat.
Тесты, для которых требуется запрос, отмечены значком клавиатуры. При нажатии на один из этих тестов открывается поле ввода для запроса. Нажмите Ввод, чтобы запустить проверку.
Чтобы упростить ввод текста, вы также можете использовать команду adb:
adb shell input text your-query
Чтобы добавить пробел между словами, используйте "%s". Например, следующая команда добавляет текст "привет, мир" в поле ввода.
adb shell input text hello%sworld
Создание теста
Вы можете отправить pull-запрос с дополнительными тестами, которые считаете полезными. Чтобы узнать, как создавать новые тесты, посетите MCT GitHub Wiki и ознакомьтесь с инструкциями по проверке тестов.
Подробную информацию вы найдете в инструкциях по добавлению контента.
Дополнительные ресурсы
MCT предназначен для использования в сочетании с приложениями, в которых реализованы API мультимедиа. Пример такого приложения – Universal Android Music Player.
Мы всегда рады исправлениям ошибок и улучшениям. Ознакомьтесь с инструкциями по добавлению контента.