Отладка приложений Cast Receiver

1. Обзор

Логотип Google Cast

Эта лабораторная работа научит вас, как добавить Cast Debug Logger в существующее приложение Custom Web Receiver.

Что такое Google Cast?

Google Cast SDK позволяет вашему приложению воспроизводить контент и управлять воспроизведением на устройствах с поддержкой Google Cast. Он предоставляет вам необходимые компоненты пользовательского интерфейса на основе контрольного списка Google Cast Design .

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

Что мы будем строить?

Когда вы завершите эту лабораторную работу, у вас будет собственный веб-приемник , интегрированный с Cast Debug Logger.

Дополнительные сведения см. в руководстве Cast Debug Logger .

Что вы узнаете

  • Как настроить среду для разработки Web Receiver.
  • Как интегрировать Debug Logger в ваш Cast Receiver.

Что вам понадобится

  • Последний браузер Google Chrome .
  • Служба хостинга HTTPS, такая как Firebase Hosting или ngrok .
  • Устройство Google Cast, например Chromecast или Android TV, с доступом в Интернет.
  • Телевизор или монитор с входом HDMI.

Опыт

  • У вас должен быть предыдущий опыт работы с Cast и понимание того, как работает Cast Web Receiver.
  • Вам понадобятся предыдущие знания в области веб-разработки.
  • Вам также понадобятся предварительные знания о просмотре телевизора :)

Как вы будете использовать этот учебник?

Прочитайте только это Прочтите его и выполните упражнения

Как бы вы оценили свой опыт создания веб-приложений?

Новичок Средний Опытный

Как бы вы оценили свой опыт просмотра телевизора?

Новичок Средний Опытный

2. Получите пример кода

Вы можете загрузить весь пример кода на свой компьютер...

и распакуйте загруженный zip-файл.

3. Локальное развертывание ресивера

Чтобы иметь возможность использовать ваш веб-приемник с устройством Cast, он должен быть размещен где-то, где ваше устройство Cast может получить к нему доступ. Если у вас уже есть сервер, поддерживающий https, пропустите следующие инструкции и запишите URL-адрес , так как он понадобится вам в следующем разделе.

Если у вас нет доступного сервера, вы можете использовать Firebase Hosting или ngrok .

Запустить сервер

После того, как вы настроите службу по вашему выбору, перейдите к app-start и запустите свой сервер.

Запишите URL-адрес вашего размещенного приемника. Вы будете использовать его в следующем разделе.

4. Зарегистрируйте приложение в Cast Developer Console.

Вы должны зарегистрировать свое приложение , чтобы иметь возможность запускать собственный веб-приемник, созданный в этой лаборатории кода, на устройствах Chromecast. После регистрации приложения вы получите идентификатор приложения, который ваше приложение-отправитель должно использовать для выполнения вызовов API, например для запуска приложения-получателя.

Изображение консоли разработчика Cast с выделенной кнопкой «Добавить новое приложение»

Нажмите «Добавить новое приложение»

Изображение экрана «Новое приложение-приемник» с выделенным параметром «Пользовательский приемник»

Выберите «Пользовательский приемник», это то, что мы создаем.

Изображение заполненного поля «URL-адрес приложения-получателя» в диалоговом окне «Новый настраиваемый приемник»

Введите данные вашего нового приемника, обязательно используйте URL-адрес из последнего раздела. Запишите идентификатор приложения , присвоенный вашему новому приемнику.

Вы также должны зарегистрировать свое устройство Google Cast , чтобы оно могло получить доступ к вашему приложению-приемнику, прежде чем вы его опубликуете. Как только вы опубликуете свое приложение-приемник, оно будет доступно для всех устройств Google Cast. Для целей этой кодовой лаборатории рекомендуется работать с неопубликованным приложением-приемником.

Изображение консоли разработчика Google Cast SDK с выделенной кнопкой «Добавить новое устройство»

Нажмите «Добавить новое устройство».

Изображение диалогового окна «Добавить устройство Cast Cast Receiver»

Введите серийный номер, напечатанный на задней панели вашего устройства Cast, и дайте ему описательное имя. Вы также можете найти свой серийный номер, транслируя свой экран в Chrome при доступе к консоли разработчика Google Cast SDK.

Подготовка приемника и устройства к тестированию займет 5-15 минут. Подождав 5-15 минут, вы должны перезагрузить устройство Cast.

5. Запустите пример приложения

Логотип Google Chrome

Пока мы ждем, пока наш новый Web Receiver будет готов к тестированию, давайте посмотрим, как выглядит образец завершенного приложения Web Receiver. Ресивер, который мы собираемся построить, будет способен воспроизводить мультимедиа с использованием потоковой передачи с адаптивным битрейтом.

  1. В браузере откройте инструмент управления и контроля (CaC) .

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC)

  1. Используйте идентификатор приемника CC1AD845 по умолчанию и нажмите кнопку SET APP ID .
  2. Нажмите кнопку Cast в левом верхнем углу и выберите свое устройство с поддержкой Google Cast.

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC), показывающее, что он подключен к приложению Receiver.

  1. Перейдите на вкладку LOAD MEDIA вверху.

Изображение вкладки «Загрузить носитель» инструмента Command and Control (CaC)

  1. Измените переключатель типа запроса на LOAD .
  2. Нажмите кнопку SEND REQUEST , чтобы воспроизвести образец видео.
  3. Видео начнет воспроизводиться на вашем устройстве с поддержкой Google Cast, чтобы показать, как выглядят основные функции приемника при использовании приемника по умолчанию.

6. Подготовьте стартовый проект

Нам нужно добавить поддержку Google Cast в загруженное вами начальное приложение. Вот некоторые термины Google Cast, которые мы будем использовать в этой кодовой лаборатории:

  • приложение отправителя работает на мобильном устройстве или ноутбуке,
  • приложение- приемник работает на устройстве Google Cast или Android TV.

Теперь вы готовы строить поверх начального проекта с помощью вашего любимого текстового редактора:

  1. Выберите значок папки каталог app-start из загрузки примера кода.
  2. Откройте js/receiver.js и index.html

Обратите внимание, что пока вы работаете с этой кодовой лабораторией, http-server должен собирать изменения, которые вы вносите. Если это не так, попробуйте остановить и перезапустить http-server .

Дизайн приложения

Приложение-получатель инициализирует сеанс Cast и будет находиться в режиме ожидания, пока не поступит запрос LOAD (например, команда на воспроизведение фрагмента мультимедиа) от отправителя.

Приложение состоит из одного основного представления, определенного в index.html , и одного файла JavaScript с именем js/receiver.js , содержащего всю логику для работы нашего приемника.

index.html

Этот html-файл содержит весь пользовательский интерфейс для нашего приложения-приемника.

приемник.js

Этот скрипт управляет всей логикой нашего приложения-приемника.

Часто задаваемые вопросы

7. Интеграция с CastDebugLogger API

Cast Receiver SDK предоставляет разработчикам еще один вариант простой отладки приложения-приемника с помощью CastDebugLogger API .

Дополнительные сведения см. в руководстве Cast Debug Logger .

Инициализация

Включите следующий скрипт в тег <head> вашего приложения-приемника сразу после скрипта Web Receiver SDK в index.html :

<head>
  ...
  <script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <!-- Cast Debug Logger -->
  <script src="//www.gstatic.com/cast/sdk/libs/devtools/debug_layer/caf_receiver_logger.js"></script>
</head>

В js/receiver.js вверху файла и ниже playerManager получите экземпляр CastDebugLogger и включите регистратор в прослушивателе событий READY :

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

// Debug Logger
const castDebugLogger = cast.debug.CastDebugLogger.getInstance();
const LOG_TAG = 'MyAPP.LOG';

// Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      castDebugLogger.setEnabled(true);
  }
});

Когда журнал отладки включен, на приемнике отображается наложение DEBUG MODE .

Изображение воспроизводимого видео с сообщением «РЕЖИМ ОТЛАДКИ», появляющимся на красном фоне в верхнем левом углу кадра.

Записывать события игрока

Используя CastDebugLogger вы можете легко регистрировать события проигрывателя, запускаемые SDK Cast Web Receiver, и использовать различные уровни ведения журнала для регистрации данных событий. Конфигурация loggerLevelByEvents принимает cast.framework.events.EventType и cast.framework.events.category , чтобы указать события, которые должны быть зарегистрированы.

Добавьте следующее ниже прослушивателя событий READY , чтобы регистрировать, когда запускаются события CORE проигрывателя или транслируется изменение mediaStatus :

...

// Set verbosity level for Core events.
castDebugLogger.loggerLevelByEvents = {
  'cast.framework.events.category.CORE': cast.framework.LoggerLevel.INFO,
  'cast.framework.events.EventType.MEDIA_STATUS': cast.framework.LoggerLevel.DEBUG
};

Сообщения журнала и пользовательские теги

CastDebugLogger API позволяет создавать сообщения журнала, которые отображаются в наложении отладки приемника разными цветами. Используйте следующие методы ведения журнала, перечисленные в порядке от самого высокого до самого низкого приоритета:

  • castDebugLogger.error(custom_tag, message);
  • castDebugLogger.warn(custom_tag, message);
  • castDebugLogger.info(custom_tag, message);
  • castDebugLogger.debug(custom_tag, message);

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

Чтобы показать журналы в действии, добавьте журналы в свой перехватчик LOAD .

playerManager.setMessageInterceptor(cast.framework.messages.MessageType.LOAD,
      loadRequestData => {
    // Listed in order from highest to lowest priority.
    castDebugLogger.error(LOG_TAG, 'Test error log');

    castDebugLogger.warn(LOG_TAG, 'Test warn log');

    castDebugLogger.info(LOG_TAG, 'Intercepting LOAD request', loadRequestData);

    castDebugLogger.debug(LOG_TAG, 'Test debug log');

    return loadRequestData;
  }
);

Вы можете контролировать, какие сообщения будут отображаться в наложении отладки, задав уровень журнала в loggerLevelByTags для каждого пользовательского тега. Например, включение пользовательского тега с уровнем журнала cast.framework.LoggerLevel.DEBUG будет отображать все сообщения, добавленные с ошибками, предупреждениями, информацией и сообщениями журнала отладки. Другим примером является то, что включение пользовательского тега с уровнем WARNING будет отображать только сообщения об ошибках и предупреждениях.

Конфигурация loggerLevelByTags не является обязательной. Если для пользовательского тега не настроен уровень ведения журнала, все сообщения журнала будут отображаться в оверлее отладки.

Добавьте следующее ниже вызова loggerLevelByEvents :

...

// Set verbosity level for custom tags.
castDebugLogger.loggerLevelByTags = {
    LOG_TAG: cast.framework.LoggerLevel.DEBUG, // display all levels
};

...

8. Использование наложения отладки

Cast Debug Logger обеспечивает наложение отладки на приемник для отображения ваших пользовательских сообщений журнала. Используйте showDebugLogs для переключения наложения отладки и clearDebugLogs для очистки сообщений журнала в наложении.

Добавьте следующее в прослушиватель событий READY для предварительного просмотра наложения отладки на приемнике:

// Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      castDebugLogger.setEnabled(true);

      // Show debug overlay.
      castDebugLogger.showDebugLogs(true);

      // Clear log messages on debug overlay.
      castDebugLogger.clearDebugLogs();
  }
});

Изображение, показывающее наложение отладки, список сообщений журнала отладки на полупрозрачном фоне поверх видеокадра.

9. Использование инструмента управления и контроля (CaC)

Обзор

Инструмент Command and Control (CaC) записывает ваши журналы и управляет наложением отладки.

Существует два способа подключения приемника к CaC Tool:

Запустите новое соединение Cast:

  1. Откройте CaC Tool, установите идентификатор приложения получателя и нажмите кнопку Cast, чтобы выполнить трансляцию на получатель.
  2. Транслируйте отдельное приложение- отправитель на то же устройство с тем же идентификатором приложения-получателя.
  3. Загрузите медиафайл из приложения-отправителя, и в инструменте появятся сообщения журнала.

Присоединитесь к существующему сеансу Cast:

  1. Получите идентификатор запущенного сеанса Cast с помощью SDK получателя или SDK отправителя. Со стороны получателя введите следующее, чтобы получить идентификатор сеанса в консоли удаленного отладчика Chrome :
cast.framework.CastReceiverContext.getInstance().getApplicationData().sessionId;

Или вы можете получить идентификатор сеанса от подключенного веб-отправителя, используя следующий метод:

cast.framework.CastContext.getInstance().getCurrentSession().getSessionId();

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC) для возобновления сеанса

  1. Введите идентификатор сеанса в CaC Tool и нажмите кнопку RESUME .
  2. Кнопка Cast должна быть подключена и начать показывать сообщения журнала в инструменте.

Что попробовать

Далее мы воспользуемся CaC Tool для просмотра журналов на вашем пробном приемнике.

  1. Откройте инструмент CaC .

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC)

  1. Введите идентификатор приложения-получателя вашего примера приложения и нажмите кнопку SET APP ID .
  2. Нажмите кнопку Cast в левом верхнем углу и выберите свое устройство с поддержкой Google Cast, чтобы открыть приемник.

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC), показывающее, что он подключен к приложению Receiver.

  1. Перейдите на вкладку LOAD MEDIA вверху.

Изображение вкладки «Загрузить носитель» инструмента Command and Control (CaC)

  1. Измените переключатель типа запроса на LOAD .
  2. Нажмите кнопку SEND REQUEST , чтобы воспроизвести образец видео.

Изображение вкладки «Cast Connect & Logger Controls» инструмента Command and Control (CaC) с сообщениями журнала, заполняющими нижнюю панель.

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

Попробуйте изучить следующие функции для изучения журналов и управления приемником:

  • Щелкните вкладку MEDIA INFO или MEDIA STATUS , чтобы просмотреть информацию о носителе и его статус.
  • Нажмите кнопку SHOW OVERLAY , чтобы увидеть наложение отладки на приемнике.
  • Используйте кнопку CLEAR CACHE AND STOP , чтобы перезагрузить приложение приемника и повторить кастинг.

10. Поздравления

Теперь вы знаете, как добавить регистратор отладки Cast в приложение Web Receiver с поддержкой Cast с помощью последней версии SDK Cast Receiver.

Дополнительные сведения см. в руководствах разработчиков Cast Debug Logger и Command and Control (CaC) .