Запускаем свою игру на Android TV

в 7:57, , рубрики: android, android apps, bluetooth, Google, google lab, Блог компании Google, разработка игр, Разработка под android

Device Lab от Google раздает всякие интересные устройства для тестирования, чем было грех не воспользоваться. Захотелось изучить работу c Android TV. Мной была подана заявка на тестирование Android TV. В качестве подопытного приложения — головоломка, математическая игра Mathable для Android. Описание условий получения устройств здесь. Заявка была одобрена, съездил в офис хабра забрал тестовое устройство — Forge TV от Razer.

Запускаем свою игру на Android TV - 1
Статья автора Баркалов Дмитрий, в рамках конкурса «Device Lab от Google».

Доработка приложения для поддержки Android TV

Надо объявить activity которая будет запускаться первой на TV. Она должна быть в портретной ориентации без статус бара и тулбара. У меня как раз такая и есть, поэтому добавляем intent filter в существующую.

<activity    android:name=".ui.LauncherActivity"    android:label="@string/app_name"
 android:banner="@drawable/ic_banner">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
</activity>

Чтобы приложение появилось в соответствующем разделе добавляем android:isGame=«true»

<application    android:name=".MathableApplication" 
   android:label="@string/app_name"
   android:theme="@style/AppTheme"
   android:isGame="true">

После этого можно запускать приложения для теста. Но надо учесть что на TV нет сенсорного экрана и надо обходиться одним пультом.

Выбор контрола происходит перемещением фокуса. Поэтому, например, для кнопок добавил в селектор бекграунда состояние focused.

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_disabled"   android:state_enabled="false"/>
    <item android:drawable="@drawable/btn_pressed"    android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_focused"   android:state_focused="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>

Для управления навигацией надо указать какие элементы могут иметь фокус и порядок перемещения фокуса. Как это делать написано здесь.

Подключение Android-TV к ноутбуку для установки и запуска приложения

Приложение работает на эмуляторе, хочется запустить приложение на реальном устройстве. Конечно, можно по сети перекинуть apk или в play store опубликовать бету. Но это долго, и вдруг нужна будет отладка, поэтому только проводок, только хардкор!

На TV имеется USB порт, который может работать как хост и как устройство. По умолчанию режим отладки выключен, и порт работает к режиме хоста. Для возможности отладки надо поменять эти настройки. Как это сделать подробно написано в />инструкции от производителя.

Есть одна проблемка, не нашлось USB кабеля A — A, т.е. папа — папа, пришлось спаять из двух имеющихся хвостов. Если кому потребуется такое делать, то соединять 1 к 1 все провода.

Запускаем свою игру на Android TV - 2

После подключения устройство появилось в списке устройств доступных для отладки.

Запускаем свою игру на Android TV - 3

Запускаем!

В качестве телевизора к устройству подключен монитор через переходник HDMI-VGA. Жмем Run! Приложение запустилось. Никаких особо отличий от эмулятора нет. Теперь можно пользоваться пультом для навигации по приложению. Также можно использовать для управления приложение Android TV. Что я и сделал на своем Nexus.

Запускаем свою игру на Android TV - 4

Мобильное приложение пульта может подключаться к Android TV по Wi-Fi или Bluetooth.

Запускаем свою игру на Android TV - 5

Приложение на Android TV.

Запускаем свою игру на Android TV - 6

Можно публиковать приложение в Android Play Store! В итоге, оказалось что адаптировать приложение для Android TV совсем не сложно. Достаточно добавить нужную информацию в манифест приложения и обрабатывать перемещение фокуса между контролами. Конечно, добавить для них соответствующий селектор.

GridView и RecyclerView умеют предсказуемо работать с перемещением фокуса. Если бы этого оказалось недостаточно, то можно обрабатывать перемещение фокуса самому в документации есть пример, как это делать.

Полезная информация по созданию приложений для TV здесь.

Автор: Google

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js