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 здесь.
Поделиться с друзьями
-->

Комментарии (0)