Используйте библиотеку «Картинка в картинке» Jetpack.

Библиотека Jetpack для режима «картинка в картинке» (PiP) предлагает оптимизированное и надежное решение для разработчиков Android-приложений, позволяющее реализовать функциональность PiP, особенно для воспроизведения мультимедиа, видеосвязи и навигации. Предоставляя единый API, библиотека помогает устранить шаблонный код, распространенные ошибки в приложениях и улучшить общее качество пользовательского опыта в режиме PiP.

Библиотека PiP Jetpack упрощает работу с существующими API PiP, устраняя ряд ключевых проблем и несоответствий в экосистеме Android:

  • Фрагментация ОС : Библиотека автоматически обрабатывает различия в вызовах API PiP в разных версиях Android, например, использует enterPictureInPictureMode до Android 12 и isAutoEnterEnabled после, поэтому разработчикам не нужно управлять различиями в версиях.
  • Неправильные параметры PiP : Предоставляется унифицированное решение для правильной настройки параметров PiP, например, setSourceRectHint , для создания плавной и высококачественной анимации во время воспроизведения мультимедиа.
  • Единый интерфейс обратного вызова для управления состоянием PiP : он объединяет события onPictureInPictureModeChanged и onPictureInPictureUiStateChanged в единый интерфейс обратного вызова ( PictureInPictureDelegate.OnPictureInPictureEventListener ) для упрощения управления состоянием и пользовательским интерфейсом.
  • Сокращение количества повторяющегося шаблонного кода : библиотека уменьшает объем повторяющегося шаблонного кода, предлагая предопределенные наборы RemoteActions для распространенных сценариев использования, таких как управление воспроизведением и действия при видеозвонках.
  • Перспективная реализация : Дополнительные функции PiP (картинка в картинке) предоставляются через библиотеку Jetpack, что позволяет пользователям получать доступ к дополнительной функциональности с минимальными усилиями или без них.

Примите реактивный ранец

Для внедрения библиотеки Jetpack замените существующую пользовательскую реализацию режима «картинка в картинке» на API библиотеки Jetpack. Сложность и стоимость внедрения будут варьироваться в зависимости от текущей реализации приложения.

В следующих разделах описаны некоторые типичные сценарии использования PiP и необходимые этапы реализации:

Приложение сообщает библиотеке об активном или неактивном состоянии навигации и устанавливает соотношение сторон. Библиотека Jetpack обрабатывает остальное.

Ключевые отличия:

  1. Нет необходимости различать автоматический ввод и ввод с помощью устаревших функций на стороне приложения.
  2. Объединенные интерфейсы обратного вызова.
  3. Новый конструктор PictureInPictureParams для обеспечения обратной совместимости.

Видеозвонок

Приложение сообщает библиотеке об активном или неактивном состоянии вызова и устанавливает соотношение сторон.

Ключевые отличия:

  1. Нет необходимости различать автоматический ввод и ввод с помощью устаревших функций на стороне приложения.
  2. Объединенные интерфейсы обратного вызова.
  3. Новый конструктор PictureInPictureParams для обеспечения обратной совместимости.
  4. Стандартизированные значки действий для видеозвонка.

Воспроизведение видео

Библиотека Jetpack предлагает делегаты плеера, которые можно интегрировать для управления включением или отключением режима «картинка в картинке» и точной установки подсказки для исходного прямоугольника. Вы также можете выбрать предопределенный набор объектов RemoteAction , аналогичных тем, которые используются в сценариях видеозвонков.

Основные характеристики:

  1. Обеспечивает обратную совместимость, проверка версии ОС не требуется.
  2. Синхронизация состояния воспроизведения и управление автоматическим вводом.
  3. Непрерывное отслеживание геометрии с использованием SourceRectHint .