Управление ТВ-контроллерами

Для взаимодействия с приложениями на телевизоре требуется дополнительное аппаратное устройство — обычный пульт дистанционного управления или игровой контроллер. Поэтому ваше приложение должно поддерживать ввод с помощью крестовины (D-pad). Кроме того, вашему приложению может потребоваться обработка отключения контроллеров и ввод данных с нескольких типов контроллеров.

В данном руководстве рассматриваются требования к управлению контроллерами для телевизионных устройств.

Минимальное количество элементов управления D-pad

В качестве стандартного контроллера для телевизора используется крестовина (D-pad). Как правило, ваше приложение должно управляться с помощью пульта дистанционного управления, имеющего только кнопки «вверх», «вниз», «влево», «вправо», «выбрать», «назад» и «домой». Если ваше приложение — игра, для которой обычно требуется игровой контроллер с дополнительными элементами управления, постарайтесь обеспечить поддержку игрового процесса только с помощью кнопок D-pad. В противном случае предупредите пользователя о необходимости контроллера и позвольте ему корректно выйти из игры, используя кнопку D-pad.

Для получения дополнительной информации о навигации с помощью D-pad контроллеров на телевизорах см. раздел «Навигация на телевизоре» .

Отключение контроллера рукоятки

Контроллеры для телевизоров часто представляют собой устройства Bluetooth, которые могут пытаться экономить энергию, периодически переходя в спящий режим и отключаясь от телевизора. Это означает, что работа приложения может быть прервана или перезапущена, если оно не настроено на обработку таких событий повторного подключения. Эти события могут происходить в любой из следующих ситуаций:

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

Любое приложение для ТВ, в котором происходят события отключения и повторного подключения, должно быть настроено на обработку событий повторного подключения в манифесте приложения. Следующий пример кода демонстрирует, как включить обработку изменений конфигурации для приложения, включая подключение, отключение или повторное подключение клавиатуры или навигационного устройства:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

Это изменение конфигурации позволяет приложению продолжать работу после события переподключения, а не перезапускаться платформой Android, что не очень удобно для пользователя.

Обработка различных вариантов ввода с помощью D-pad.

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

Обрабатывайте изменения в вводе с помощью D-pad, чтобы пользователю не приходилось переключать контроллеры для работы с вашим приложением. Дополнительную информацию об обработке изменений ввода см. в разделе «Обработка ввода с помощью D-pad» .

Обработка событий нажатия кнопки

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

События пользовательского интерфейса телевизора

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

KeyEvent Поведение
KEYCODE_BUTTON_B , KEYCODE_BACK Назад
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER , KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER Выбор
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT , KEYCODE_DPAD_RIGHT Навигация

медиа-мероприятия

Когда пользователь просматривает медиаконтент, назначьте поведение кнопкам, генерирующим события типа KeyEvent , как показано в следующей таблице. Если ваше приложение управляет MediaSession , используйте MediaControllerAdapter для вызова одного из методов MediaControllerCompat.TransportControls показанных в таблице. Обратите внимание, что кнопки выбора в этом контексте действуют как кнопки воспроизведения или паузы.

KeyEvent Вызов TransportControls Поведение
BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER play() Играть
BUTTON_START , BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER pause() Пауза
BUTTON_R1 skipToNext() Перейти к следующему
BUTTON_L1 skipToPrevious() Перейти к предыдущему
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER , AXIS_THROTTLE fastForward() Перемотка вперед
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER , AXIS_BRAKE rewind() Перемотка назад
Н/Д stop() Останавливаться

Примечание: При использовании MediaSession не следует переопределять обработку кнопок, специфичных для мультимедиа, таких как KEYCODE_MEDIA_PLAY или KEYCODE_MEDIA_PAUSE . Система автоматически запускает соответствующий метод MediaSession.Callback .

Обеспечьте корректное поведение кнопки «Назад».

Кнопка «Назад» ни в коем случае не должна использоваться как переключатель. Например, не используйте её для одновременного открытия и закрытия меню. Используйте её только для навигации назад, по принципу «хлебных крошек», по предыдущим экранам, которые игрок посещал.

Поскольку кнопка «Назад» выполняет только линейную навигацию назад, вы можете использовать её, чтобы закрыть меню приложения, открытое другой кнопкой, и вернуться в приложение. Последовательное нажатие кнопки «Назад» всегда должно в конечном итоге приводить к главному экрану Android TV. Например: игра > экран паузы игры > главный экран игры > главный экран Android TV или воспроизведение телешоу > главный экран приложения для ТВ > главный экран Android TV.

Для получения дополнительной информации о проектировании навигации см. раздел «Проектирование навигации «Назад» и «Вверх» ». Чтобы узнать о реализации, обратитесь к разделу «Обеспечение корректной навигации «Назад»» .

Рукоятки управления для игр

Поддержка управления с помощью D-pad.

При планировании схемы управления ориентируйтесь на крестовину (D-pad), поскольку этот набор элементов управления является стандартным для устройств Android TV. Игрок должен иметь возможность использовать D-pad для всех аспектов игры — не только для управления основным игровым процессом, но и для навигации по меню и рекламе. Поэтому убедитесь, что в вашей игре для Android TV нет отсылок к сенсорному интерфейсу, например, « Нажмите здесь, чтобы продолжить».

То, как вы выстраиваете взаимодействие игрока с контроллером, может стать ключом к созданию отличного пользовательского опыта. Рассмотрите следующие лучшие практики:

  • Заранее сообщите о требованиях к контроллеру: используйте описание игры в Google Play, чтобы сообщить игроку о любых ожиданиях относительно контроллера. Если игра лучше подходит для геймпада с джойстиком, чем для игры только с крестовиной, четко это укажите. Игрок, использующий неподходящий контроллер, может получить негативный опыт и поставить вашей игре низкую оценку.
  • Используйте согласованное назначение кнопок: интуитивно понятное назначение кнопок — залог хорошего пользовательского опыта. Например, придерживайтесь общепринятых правил, используя кнопку A для подтверждения и кнопку B для отмены . Вы также можете обеспечить гибкость в виде возможности переназначения кнопок. Для получения дополнительной информации о назначении кнопок см. раздел «Обработка действий контроллера» .
  • Определение возможностей контроллера и соответствующая настройка: запросите у контроллера информацию о его возможностях, чтобы оптимизировать соответствие между контроллером и игрой. Например, вы можете захотеть, чтобы игрок управлял объектом, размахивая контроллером в воздухе, но если контроллер игрока не оснащен акселерометром и гироскопом, размахивание не будет работать. Запросите у контроллера информацию и, если обнаружение движения не поддерживается, переключитесь на альтернативную доступную схему управления. Для получения дополнительной информации о запросе возможностей контроллера см. раздел «Поддержка контроллеров в разных версиях Android» .

Используйте соответствующие кнопки

Не все игровые контроллеры оснащены кнопками «Старт», «Поиск» или «Меню». Убедитесь, что ваш пользовательский интерфейс не зависит от использования этих кнопок.

Обработка нескольких контроллеров

Когда в игру играет несколько игроков, каждый со своим контроллером, важно сопоставить каждую пару «игрок-контроллер». Информацию о том, как реализовать идентификацию номера контроллера, см. в getControllerNumber() .

Отключение контроллера рукоятки

Если контроллер отключается во время игры, поставьте игру на паузу и покажите диалоговое окно с предложением отключившемуся игроку повторно подключить контроллер.

Кроме того, в диалоговом окне могут быть предложены советы по устранению неполадок. Например, можно попросить игрока «Проверить соединение Bluetooth». Дополнительную информацию о реализации поддержки устройств ввода см. в разделах «Обработка действий контроллера» и « Обзор Bluetooth» .

Показать инструкции контроллера

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

Для просмотра примеров изображений контроллера, совместимого с Android, скачайте шаблон геймпада для Android TV (ZIP) . Он включает в себя белый контроллер на черном фоне и черный контроллер на белом фоне — как показано на рисунке 1 — в формате PNG и в формате Adobe® Illustrator®.

Рисунок 1. Пример инструкций управления с использованием шаблона геймпада для Android TV.
,

Для взаимодействия с приложениями на телевизоре требуется дополнительное аппаратное устройство — обычный пульт дистанционного управления или игровой контроллер. Поэтому ваше приложение должно поддерживать ввод с помощью крестовины (D-pad). Кроме того, вашему приложению может потребоваться обработка отключения контроллеров и ввод данных с нескольких типов контроллеров.

В данном руководстве рассматриваются требования к управлению контроллерами для телевизионных устройств.

Минимальное количество элементов управления D-pad

В качестве стандартного контроллера для телевизора используется крестовина (D-pad). Как правило, ваше приложение должно управляться с помощью пульта дистанционного управления, имеющего только кнопки «вверх», «вниз», «влево», «вправо», «выбрать», «назад» и «домой». Если ваше приложение — игра, для которой обычно требуется игровой контроллер с дополнительными элементами управления, постарайтесь обеспечить поддержку игрового процесса только с помощью кнопок D-pad. В противном случае предупредите пользователя о необходимости контроллера и позвольте ему корректно выйти из игры, используя кнопку D-pad.

Для получения дополнительной информации о навигации с помощью D-pad контроллеров на телевизорах см. раздел «Навигация на телевизоре» .

Отключение контроллера рукоятки

Контроллеры для телевизоров часто представляют собой устройства Bluetooth, которые могут пытаться экономить энергию, периодически переходя в спящий режим и отключаясь от телевизора. Это означает, что работа приложения может быть прервана или перезапущена, если оно не настроено на обработку таких событий повторного подключения. Эти события могут происходить в любой из следующих ситуаций:

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

Любое приложение для ТВ, в котором происходят события отключения и повторного подключения, должно быть настроено на обработку событий повторного подключения в манифесте приложения. Следующий пример кода демонстрирует, как включить обработку изменений конфигурации для приложения, включая подключение, отключение или повторное подключение клавиатуры или навигационного устройства:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

Это изменение конфигурации позволяет приложению продолжать работу после события переподключения, а не перезапускаться платформой Android, что не очень удобно для пользователя.

Обработка различных вариантов ввода с помощью D-pad.

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

Обрабатывайте изменения в вводе с помощью D-pad, чтобы пользователю не приходилось переключать контроллеры для работы с вашим приложением. Дополнительную информацию об обработке изменений ввода см. в разделе «Обработка ввода с помощью D-pad» .

Обработка событий нажатия кнопки

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

События пользовательского интерфейса телевизора

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

KeyEvent Поведение
KEYCODE_BUTTON_B , KEYCODE_BACK Назад
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER , KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER Выбор
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT , KEYCODE_DPAD_RIGHT Навигация

медиа-мероприятия

Когда пользователь просматривает медиаконтент, назначьте поведение кнопкам, генерирующим события типа KeyEvent , как показано в следующей таблице. Если ваше приложение управляет MediaSession , используйте MediaControllerAdapter для вызова одного из методов MediaControllerCompat.TransportControls показанных в таблице. Обратите внимание, что кнопки выбора в этом контексте действуют как кнопки воспроизведения или паузы.

KeyEvent Вызов TransportControls Поведение
BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER play() Играть
BUTTON_START , BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER pause() Пауза
BUTTON_R1 skipToNext() Перейти к следующему
BUTTON_L1 skipToPrevious() Перейти к предыдущему
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER , AXIS_THROTTLE fastForward() Перемотка вперед
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER , AXIS_BRAKE rewind() Перемотка назад
Н/Д stop() Останавливаться

Примечание: При использовании MediaSession не следует переопределять обработку кнопок, специфичных для мультимедиа, таких как KEYCODE_MEDIA_PLAY или KEYCODE_MEDIA_PAUSE . Система автоматически запускает соответствующий метод MediaSession.Callback .

Обеспечьте корректное поведение кнопки «Назад».

Кнопка «Назад» ни в коем случае не должна использоваться как переключатель. Например, не используйте её для одновременного открытия и закрытия меню. Используйте её только для навигации назад, по принципу «хлебных крошек», по предыдущим экранам, которые игрок посещал.

Поскольку кнопка «Назад» выполняет только линейную навигацию назад, вы можете использовать её, чтобы закрыть меню приложения, открытое другой кнопкой, и вернуться в приложение. Последовательное нажатие кнопки «Назад» всегда должно в конечном итоге приводить к главному экрану Android TV. Например: игра > экран паузы игры > главный экран игры > главный экран Android TV или воспроизведение телешоу > главный экран приложения для ТВ > главный экран Android TV.

Для получения дополнительной информации о проектировании навигации см. раздел «Проектирование навигации «Назад» и «Вверх» ». Чтобы узнать о реализации, обратитесь к разделу «Обеспечение корректной навигации «Назад»» .

Рукоятки управления для игр

Поддержка управления с помощью D-pad.

При планировании схемы управления ориентируйтесь на крестовину (D-pad), поскольку этот набор элементов управления является стандартным для устройств Android TV. Игрок должен иметь возможность использовать D-pad для всех аспектов игры — не только для управления основным игровым процессом, но и для навигации по меню и рекламе. Поэтому убедитесь, что в вашей игре для Android TV нет отсылок к сенсорному интерфейсу, например, « Нажмите здесь, чтобы продолжить».

То, как вы выстраиваете взаимодействие игрока с контроллером, может стать ключом к созданию отличного пользовательского опыта. Рассмотрите следующие лучшие практики:

  • Заранее сообщите о требованиях к контроллеру: используйте описание игры в Google Play, чтобы сообщить игроку о любых ожиданиях относительно контроллера. Если игра лучше подходит для геймпада с джойстиком, чем для игры только с крестовиной, четко это укажите. Игрок, использующий неподходящий контроллер, может получить негативный опыт и поставить вашей игре низкую оценку.
  • Используйте согласованное назначение кнопок: интуитивно понятное назначение кнопок — залог хорошего пользовательского опыта. Например, придерживайтесь общепринятых правил, используя кнопку A для подтверждения и кнопку B для отмены . Вы также можете обеспечить гибкость в виде возможности переназначения кнопок. Для получения дополнительной информации о назначении кнопок см. раздел «Обработка действий контроллера» .
  • Определение возможностей контроллера и соответствующая настройка: запросите у контроллера информацию о его возможностях, чтобы оптимизировать соответствие между контроллером и игрой. Например, вы можете захотеть, чтобы игрок управлял объектом, размахивая контроллером в воздухе, но если контроллер игрока не оснащен акселерометром и гироскопом, размахивание не будет работать. Запросите у контроллера информацию и, если обнаружение движения не поддерживается, переключитесь на альтернативную доступную схему управления. Для получения дополнительной информации о запросе возможностей контроллера см. раздел «Поддержка контроллеров в разных версиях Android» .

Используйте соответствующие кнопки

Не все игровые контроллеры оснащены кнопками «Старт», «Поиск» или «Меню». Убедитесь, что ваш пользовательский интерфейс не зависит от использования этих кнопок.

Обработка нескольких контроллеров

Когда в игру играет несколько игроков, каждый со своим контроллером, важно сопоставить каждую пару «игрок-контроллер». Информацию о том, как реализовать идентификацию номера контроллера, см. в getControllerNumber() .

Отключение контроллера рукоятки

Если контроллер отключается во время игры, поставьте игру на паузу и покажите диалоговое окно с предложением отключившемуся игроку повторно подключить контроллер.

Кроме того, в диалоговом окне могут быть предложены советы по устранению неполадок. Например, можно попросить игрока «Проверить соединение Bluetooth». Дополнительную информацию о реализации поддержки устройств ввода см. в разделах «Обработка действий контроллера» и « Обзор Bluetooth» .

Показать инструкции контроллера

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

Для просмотра примеров изображений контроллера, совместимого с Android, скачайте шаблон геймпада для Android TV (ZIP) . Он включает в себя белый контроллер на черном фоне и черный контроллер на белом фоне — как показано на рисунке 1 — в формате PNG и в формате Adobe® Illustrator®.

Рисунок 1. Пример инструкций управления с использованием шаблона геймпада для Android TV.
,

Для взаимодействия с приложениями на телевизоре требуется дополнительное аппаратное устройство — обычный пульт дистанционного управления или игровой контроллер. Поэтому ваше приложение должно поддерживать ввод с помощью крестовины (D-pad). Кроме того, вашему приложению может потребоваться обработка отключения контроллеров и ввод данных с нескольких типов контроллеров.

В данном руководстве рассматриваются требования к управлению контроллерами для телевизионных устройств.

Минимальное количество элементов управления D-pad

В качестве стандартного контроллера для телевизора используется крестовина (D-pad). Как правило, ваше приложение должно управляться с помощью пульта дистанционного управления, имеющего только кнопки «вверх», «вниз», «влево», «вправо», «выбрать», «назад» и «домой». Если ваше приложение — игра, для которой обычно требуется игровой контроллер с дополнительными элементами управления, постарайтесь обеспечить поддержку игрового процесса только с помощью кнопок D-pad. В противном случае предупредите пользователя о необходимости контроллера и позвольте ему корректно выйти из игры, используя кнопку D-pad.

Для получения дополнительной информации о навигации с помощью D-pad контроллеров на телевизорах см. раздел «Навигация на телевизоре» .

Отключение контроллера рукоятки

Контроллеры для телевизоров часто представляют собой устройства Bluetooth, которые могут пытаться экономить энергию, периодически переходя в спящий режим и отключаясь от телевизора. Это означает, что работа приложения может быть прервана или перезапущена, если оно не настроено на обработку таких событий повторного подключения. Эти события могут происходить в любой из следующих ситуаций:

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

Любое приложение для ТВ, в котором происходят события отключения и повторного подключения, должно быть настроено на обработку событий повторного подключения в манифесте приложения. Следующий пример кода демонстрирует, как включить обработку изменений конфигурации для приложения, включая подключение, отключение или повторное подключение клавиатуры или навигационного устройства:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

Это изменение конфигурации позволяет приложению продолжать работу после события переподключения, а не перезапускаться платформой Android, что не очень удобно для пользователя.

Обработка различных вариантов ввода с помощью D-pad.

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

Обрабатывайте изменения в вводе с помощью D-pad, чтобы пользователю не приходилось переключать контроллеры для работы с вашим приложением. Дополнительную информацию об обработке изменений ввода см. в разделе «Обработка ввода с помощью D-pad» .

Обработка событий нажатия кнопки

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

События пользовательского интерфейса телевизора

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

KeyEvent Поведение
KEYCODE_BUTTON_B , KEYCODE_BACK Назад
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER , KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER Выбор
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT , KEYCODE_DPAD_RIGHT Навигация

медиа-мероприятия

Когда пользователь просматривает медиаконтент, назначьте поведение кнопкам, генерирующим события типа KeyEvent , как показано в следующей таблице. Если ваше приложение управляет MediaSession , используйте MediaControllerAdapter для вызова одного из методов MediaControllerCompat.TransportControls показанных в таблице. Обратите внимание, что кнопки выбора в этом контексте действуют как кнопки воспроизведения или паузы.

KeyEvent Вызов TransportControls Поведение
BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER play() Играть
BUTTON_START , BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER pause() Пауза
BUTTON_R1 skipToNext() Перейти к следующему
BUTTON_L1 skipToPrevious() Перейти к предыдущему
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER , AXIS_THROTTLE fastForward() Перемотка вперед
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER , AXIS_BRAKE rewind() Перемотка назад
Н/Д stop() Останавливаться

Примечание: При использовании MediaSession не следует переопределять обработку кнопок, специфичных для мультимедиа, таких как KEYCODE_MEDIA_PLAY или KEYCODE_MEDIA_PAUSE . Система автоматически запускает соответствующий метод MediaSession.Callback .

Обеспечьте корректное поведение кнопки «Назад».

Кнопка «Назад» ни в коем случае не должна использоваться как переключатель. Например, не используйте её для одновременного открытия и закрытия меню. Используйте её только для навигации назад, по принципу «хлебных крошек», по предыдущим экранам, которые игрок посещал.

Поскольку кнопка «Назад» выполняет только линейную навигацию назад, вы можете использовать её, чтобы закрыть меню приложения, открытое другой кнопкой, и вернуться в приложение. Последовательное нажатие кнопки «Назад» всегда должно в конечном итоге приводить к главному экрану Android TV. Например: игра > экран паузы игры > главный экран игры > главный экран Android TV или воспроизведение телешоу > главный экран приложения для ТВ > главный экран Android TV.

Для получения дополнительной информации о проектировании навигации см. раздел «Проектирование навигации «Назад» и «Вверх» ». Чтобы узнать о реализации, обратитесь к разделу «Обеспечение корректной навигации «Назад»» .

Рукоятки управления для игр

Поддержка управления с помощью D-pad.

При планировании схемы управления ориентируйтесь на крестовину (D-pad), поскольку этот набор элементов управления является стандартным для устройств Android TV. Игрок должен иметь возможность использовать D-pad для всех аспектов игры — не только для управления основным игровым процессом, но и для навигации по меню и рекламе. Поэтому убедитесь, что в вашей игре для Android TV нет отсылок к сенсорному интерфейсу, например, « Нажмите здесь, чтобы продолжить».

То, как вы выстраиваете взаимодействие игрока с контроллером, может стать ключом к созданию отличного пользовательского опыта. Рассмотрите следующие лучшие практики:

  • Заранее сообщите о требованиях к контроллеру: используйте описание игры в Google Play, чтобы сообщить игроку о любых ожиданиях относительно контроллера. Если игра лучше подходит для геймпада с джойстиком, чем для игры только с крестовиной, четко это укажите. Игрок, использующий неподходящий контроллер, может получить негативный опыт и поставить вашей игре низкую оценку.
  • Используйте согласованное назначение кнопок: интуитивно понятное назначение кнопок — залог хорошего пользовательского опыта. Например, придерживайтесь общепринятых правил, используя кнопку A для подтверждения и кнопку B для отмены . Вы также можете обеспечить гибкость в виде возможности переназначения кнопок. Для получения дополнительной информации о назначении кнопок см. раздел «Обработка действий контроллера» .
  • Определение возможностей контроллера и соответствующая настройка: запросите у контроллера информацию о его возможностях, чтобы оптимизировать соответствие между контроллером и игрой. Например, вы можете захотеть, чтобы игрок управлял объектом, размахивая контроллером в воздухе, но если контроллер игрока не оснащен акселерометром и гироскопом, размахивание не будет работать. Запросите у контроллера информацию и, если обнаружение движения не поддерживается, переключитесь на альтернативную доступную схему управления. Для получения дополнительной информации о запросе возможностей контроллера см. раздел «Поддержка контроллеров в разных версиях Android» .

Используйте соответствующие кнопки

Не все игровые контроллеры оснащены кнопками «Старт», «Поиск» или «Меню». Убедитесь, что ваш пользовательский интерфейс не зависит от использования этих кнопок.

Обработка нескольких контроллеров

Когда в игру играет несколько игроков, каждый со своим контроллером, важно сопоставить каждую пару «игрок-контроллер». Информацию о том, как реализовать идентификацию номера контроллера, см. в getControllerNumber() .

Отключение контроллера рукоятки

Если контроллер отключается во время игры, поставьте игру на паузу и покажите диалоговое окно с предложением отключившемуся игроку повторно подключить контроллер.

Кроме того, в диалоговом окне могут быть предложены советы по устранению неполадок. Например, можно попросить игрока «Проверить соединение Bluetooth». Дополнительную информацию о реализации поддержки устройств ввода см. в разделах «Обработка действий контроллера» и « Обзор Bluetooth» .

Показать инструкции контроллера

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

Для просмотра примеров изображений контроллера, совместимого с Android, скачайте шаблон геймпада для Android TV (ZIP) . Он включает в себя белый контроллер на черном фоне и черный контроллер на белом фоне — как показано на рисунке 1 — в формате PNG и в формате Adobe® Illustrator®.

Рисунок 1. Пример инструкций управления с использованием шаблона геймпада для Android TV.