Добавьте зависимость
Библиотека Media3 включает два модуля пользовательского интерфейса на основе Jetpack Compose. Добавлять обе не нужно, так как библиотека Material3 зависит от основной.
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.11.1")
implementation("androidx.media3:media3-ui-compose-material3:1.11.1")
Яркий
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.11.1"
implementation "androidx.media3:media3-ui-compose-material3:1.11.1"
Мы настоятельно рекомендуем разрабатывать приложения в первую очередь с помощью Compose или перейти на него с Views.
Демонстрационное приложение, полностью созданное с помощью Compose
Хотя библиотека media3-ui-compose не включает готовые composable-функции (например, кнопки, индикаторы, изображения или диалоговые окна), вы можете найти демоверсию приложения, полностью написанную на Compose, в которой не используются решения для совместимости, такие как упаковка PlayerView в AndroidView. Демонстрационное приложение использует классы хранилища состояния пользовательского интерфейса из модуля media3-ui-compose и библиотеки Compose Material3.
Какую библиотеку выбрать?
В зависимости от того, насколько гибкие настройки вам нужны, вы можете выбрать одну из двух библиотек Media3 Compose. Чтобы понять разницу, полезно подумать о конвейере создания состояния пользовательского интерфейса: Business logic → UI logic → UI.
Используйте media3-ui-compose, чтобы полностью контролировать компоненты интерфейса.
Эта библиотека обеспечивает подключение Business logic → UI logic. Он содержит базовые компоненты, такие как PlayerSurface и ContentFrame, а также классы хранилища состояния (например, PlayPauseButtonState, CurrentMediaItemState, PlaylistState, ErrorState), которые преобразуют состояние Player в состояние пользовательского интерфейса.
Эта библиотека не предоставляет готовые к использованию компоненты Material Design. Вы сами создаете и оформляете компоненты интерфейса. Это дает вам максимальный контроль над внешним видом, что делает его идеальным, если у вас есть система индивидуального дизайна.
Используйте media3-ui-compose-material3 для более быстрой интеграции с Material Design.
Эта библиотека предоставляет последнюю часть конвейера – UI. Она зависит от media3-ui-compose и включает готовые composable-функции, оформленные с помощью компонентов Material3, в том числе composable-функции Player и MiniController. Composable-функция Player предлагает комплексные возможности воспроизведения медиаконтента с видео, элементами управления и индикатором выполнения, которые можно дополнительно настроить с помощью PlayerDefaults. MiniController – это компактная composable-функция, которая позволяет управлять проигрывателем и показывает информацию о текущем мультимедийном объекте. Вам не придется создавать кнопки и другие элементы интерфейса с нуля. Вы можете настраивать тему, цвета и значки этих компонентов, но основная реализация уже готова.
Самое главное
| Функция | media3-ui-compose |
media3-ui-compose-material3 |
|---|---|---|
| Компоненты интерфейса | Базовые элементы, такие как PlayerSurface и ContentFrame, но без предварительно стилизованных кнопок или элементов управления. |
Предоставляет composable-функции Player и MiniController, а также полный набор готовых composable-функций в стиле Material3, таких как PlayPauseButton, SeekBackButton, PositionAndDurationText, ErrorText и т. д. |
| Управление состоянием | Предоставляет держатели remember...State для управления логикой. |
Управляет состоянием внутри, но вы по-прежнему можете получить доступ к хранилищам состояния, если это необходимо. |
| Зависимости | androidx.compose.foundation |
media3-ui-compose, androidx.compose.material3, com.google.android.material |
| Основной пример использования | Создание интерфейса проигрывателя с помощью собственной системы проектирования. Полный контроль над внешним видом и функциями. | Быстрое создание интерфейса проигрывателя, соответствующего рекомендациям Material Design 3. |