Запускаємо гру на Android TV

Device Lab від Google роздає всякі цікаві пристрої для тестування, ніж було гріх не скористатися. Захотілося вивчити роботу з Android TV. Мною була подана заявка на тестування Android TV. В якості піддослідного програми — головоломка, математична гра Mathable для Android. Опис умов отримання пристроїв тут. Заявка була схвалена, з'їздив в офіс хабра забрав тестове пристрій — Forge TV від Razer.


Стаття автора Баркалов Дмитро, в рамках конкурсу <a href=«special.habrahabr.ru/google/lab>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 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.