Pull to refresh
0
Google Developers
Build anything with Google

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

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


Статья автора Баркалов Дмитрий, в рамках конкурса «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 все провода.



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



Запускаем!


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



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



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



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

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

Полезная информация по созданию приложений для TV здесь.
Tags:
Hubs:
+13
Comments0

Articles

Information

Website
developers.google.com
Registered
Founded
Employees
over 10,000 employees
Location
США