Как посмотреть карточку "Что сейчас играет?"

Приложения для телевизоров, воспроизводящие аудио, могут продолжать это делать, когда пользователь возвращается на главный экран или переключается на другое приложение. Для этого приложение должно показывать карточку Играет сейчас на главном экране. Эта карточка позволяет пользователям узнать, откуда воспроизводится аудио, и вернуться в ваше приложение, чтобы управлять воспроизведением.

Если на устройстве есть активный MediaSession, фреймворк Android показывает на главном экране карточку Что сейчас играет?. На карточке показываются метаданные медиаконтента, например обложка альбома, название и значок приложения. Когда пользователь выбирает карточку, система открывает приложение.

Карточка "Что сейчас играет?"

После того как вы реализуете сеанс медиаконтента, установите для него статус "Активный" и запросите аудиофокус, появится карточка Что сейчас играет?.

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

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

Как обновить карточку

Когда приложение обновляет состояние воспроизведения в MediaSession, карточка Что сейчас играет? также обновляется и показывает состояние текущего медиаконтента. Подробнее о том, как обновить статус воспроизведения…

Аналогичным образом приложение может обновлять MediaMetadata, чтобы передавать на карточку Что сейчас играет? информацию о текущем медиаконтенте, например название, субтитры и различные значки. Подробнее о том, как изменить метаданные медиаконтента…

Отвечать на действия пользователя

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

Kotlin

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

Java

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

Допустимые варианты использования

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