company_banner

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

    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 здесь.
    Google 92,22
    Филин Лаки
    Поделиться публикацией
    Комментарии 0

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

    Самое читаемое