Отобразить карточку «Сейчас играет»

Телевизионные приложения, воспроизводящие звук, могут продолжать это делать после того, как пользователь вернется на главный экран или переключится на другое приложение. Для этого приложение должно предоставить карточку «Сейчас играет» на главном экране. Эта карта позволяет пользователям понять, откуда исходит звук, и вернуться в ваше приложение для управления воспроизведением мультимедиа.

Всякий раз, когда присутствует активный MediaSession , платформа Android отображает карточку «Сейчас исполняется» на главном экране. Карта содержит метаданные мультимедиа, такие как обложка альбома, название и значок приложения. Когда пользователь выбирает карту, система открывает приложение.

Сейчас игральная карта

После реализации мультимедийного сеанса , установки активного сеанса и запроса фокусировки на звуке появляется карточка « Сейчас исполняется» .

Примечание. Карточка «Сейчас исполняется» отображается только для сеанса мультимедиа с установленным флагом FLAG_HANDLES_TRANSPORT_CONTROLS . Этот флаг устарел на уровне API 26. Однако этот флаг все еще может потребоваться на старых устройствах для обратной совместимости.

Карта удаляется с экрана запуска, когда вызов setActive(false) деактивирует сеанс мультимедиа или когда другое приложение инициирует воспроизведение мультимедиа. Если воспроизведение полностью остановлено и нет активного носителя, немедленно деактивируйте сеанс мультимедиа. Если воспроизведение приостановлено, деактивируйте медиа-сессию после задержки, обычно от 5 до 30 минут.

Обновить карту

Всякий раз, когда ваше приложение обновляет состояние воспроизведения в MediaSession , карточка «Сейчас исполняется» обновляется, показывая состояние текущего мультимедиа. Чтобы узнать, как это сделать, см. Обновление состояния воспроизведения .

Аналогичным образом ваше приложение может обновить MediaMetadata , чтобы предоставить карточке «Сейчас исполняется» информацию о текущем медиафайле, такую ​​как заголовок, подзаголовок и различные значки. Чтобы узнать, как это сделать, см. Обновление метаданных мультимедиа .

Реагировать на действия пользователя

Когда пользователь выбирает карточку «Сейчас исполняется» , система открывает приложение, которому принадлежит сеанс. Если ваше приложение предоставляет PendingIntent для setSessionActivity() , система запускает указанное вами действие, как показано в следующем фрагменте кода. Если нет, откроется системное намерение по умолчанию. Указанное вами действие должно предоставлять элементы управления воспроизведением, позволяющие пользователям приостанавливать или останавливать воспроизведение.

Котлин

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
            context, 99 /*request code*/,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}
session.setSessionActivity(pi)

Ява

Intent intent = new Intent(context, MyActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);
session.setSessionActivity(pi);

Принятые варианты использования

Карточку «Сейчас исполняется» следует использовать только в тех случаях, когда пользователь ожидает, что звук будет продолжать воспроизводиться в фоновом режиме при выходе из приложения. Воспроизведение видео или звука в игре всегда должно приостанавливаться, если только ваше приложение не интегрируется и не совместимо с картинкой в ​​картинке.