ساختار اپلیکیشن های تلوزیون اندروید(Android Tv)، هیچ تفاوتی با اپلیکیشن های موبایل نداره. یعنی شما با همون تجربه ای که در حال حاضر از توسعه اپلیکیشن موبایل دارید، می تونید برای تلوزیون های دارای سیستم عامل اندروید هم کد بزنید و اپ منتشر کنید.
اما خود اندروید، ساختاری با تجربه کاربری مناسب برای صفحه نمایش های بزرگ تلوزیون پیشنهاد میده، که کاربر علاوه بر اینکه بتونه از فاصله چند متری به خوبی با صفحات اپلیکیشن ارتباط برقرار کنه، امکان کنترل کردن اپلیکیشن با دستگاه کنترل تلوزیون رو هم داشته باشه.

اگر میخواهید از سایت خود توسعه دهنگان اندروید برای پیدا کردن دید بهتر نسبت به Android Tv استفاده کنین، مقاله مرتبط رو در این سایت بهتون پیشنهاد میکنم.
همینطور برای آشنایی بیشتر با Design guidline تلوزیون اندروید، سایت withgoogle.com توضیحات خوبی قرار داده.

برای شروع باید اول با کتابخانه LeanBack آشنا بشید که شامل کلاس هایی برای توسعه واسط کاربری مناسب تلوزیون هست که در این آموزش هم از این کتابخانه استفاده خواهیم کرد.
1) ایجاد پروژه
اولین قدم مانند شروع هر پروژه اندروید دیگه، ایجاد یک New project در اندروید استادیو هست. فقط این بار به جای Phone and Tablet گزینه TV رو انتخاب کنید. از بین دو گزینه برای ایجاد اکتیویتی، Add No Activity را انتخاب کنید، برای اینکه گزینه ی Android Tv Activity، فایل های زیادی رو به پروژه اضافه خواهد کرد که در حین اینکه مرجع خوبی هست، یادگیری رو پیچیده می کنه.

پروژه اضافه خواهد کرد که در حین اینکه مرجع خوبی هست، یادگیری رو پیچیده می کنه.

2) ایجاد اولین صفحه
بعد از Build شدن پروژه، روی پکیج راست کلیک کنید و یک Blank Activity به اسم MainActivity ایجاد کنید.

در بخش بعدی باید برای این اکتیویتی یک فرگمنت ایجاد کنیم. پس دوباره با راست کلیک روی پکیج، یک Blank Fragment ایجاد می کنم با عنوان MainFragment :

و البته تیک گزینه های مربوط به ایجاد پیشفرض های فرگمنت رو هم بردارید چون نیازی به فایل ها و متدهای دیفالت ایجاد شده توسط اندروید استادیو نداریم.
و اولین جایی که با کتابخانه leanBack مواجه می شویم، همینجاست! که بجای فرگمنت اندروید، parent را به BrowseSupportFragment از کتابخانه لین بک تغییر می دهیم:

در نهایت تکه کد زیر را به activity_main.xml (لیوت ایجاد شده برای MainActivity) اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_fragment_container"
    android:name="ir.iodroid.androidtvsample.MainFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

3) تغییر تم اپلیکیشن:
تم اکتیویتی ایجاد شده را در manifest به android:theme=”@style/Theme.Leanback” تغییر بدهید. و البته intent-filter های مربوط به لانچر کردن اکتیویتی هم فراموش نکنید!

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.Leanback">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

در ادامه هم از آنجایی که این تم action bar ندارد، جهت جلوگیری از خطای زیر تم اکتیویتی را به تغییر دهید.

java.lang.RuntimeException: Unable to start activity ComponentInfo{...} :
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this
activity.
(خطای احتمالی بدون تغییر تم)

4) و اولین اجرا!
یک نفس عمیق بکشید که وقت اجرا گرفتن از اولین پروژه Android Tv شماست.
برای اجرا گرفتن چند راه دارید:
1) استفاده از تلوزیون اسمارت که سیستم عامل اندروید دارد
2) استفاده از باکس های Android Tv مثل شیائومی
3) استفاده از شبیه ساز
که من در این آموزش از شبیه ساز استفاده میکنم
برای ساخت شبیه ساز تلوزیون اندروید، مثل زمانی که شبیه ساز گوشی اندروید میسازید، وارد AVD Manager بشید و این بار گزینه Android Tv رو انتخاب کنید:

در بخش آخر زمان تخصیص Ram هم تا حد ممکن رم کمتر از 2گیگ برای این شبیه ساز در نظر نگیرید تا از کندی اون جلوگیری کنید.

و حالا وقت زدن دکمه Run هست:

تبریک! شما اولین پروژه خود تلوزیون اندرویدی خودتون رو اجرا گرفتین😊

اگر وارد صفحه اصلی تلوزیون خود شوید (یا شبیه ساز) در بخش اپلیکیشن ها، آیکون اپلیکیشن خود را می بینید.

صفحه اپلیکیشن های تلوزیون

آیکون استاندارد برای Tv به اسم bannerهست که باید بر اساس داکیومنت سایت توسعه دهندگان اندروید گوگل، سایزش 320×180 بوده و داخلش متن نام اپلیکیشن قرار گرفته باشد. و البته اگر اپلیکیشن شما از زبان های مختلفی پشتیبانی می کند باید به ازای هر زبان یک بنر جداگانه با متن مربط به آن زبان داشته باشید.
به همین منظور من بنری با این سایز ایجاد کردم و داخل manifest این بنر رو قرار دادم(بنر ها باید داخل پوشه xhdpi قرار گیرند، مانند سایر resource های تلوزیون اندروید که بعلت سایز دستگاه داخل این پوشه قرار خواهند گرفت)

      <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:banner="@drawable/banner"
    android:theme="@style/Theme.Leanback">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

و برای مشاهده تغییر باید احتمالا یک دور اپلیکیشن را از روی دستگاه پاک کرده و بعد دوباره نصب کنید.
در نهایت دو تگ زیر رو به بالای تگ application اضافه می کنم. این دو برای این هست که اعلام کنیم چه دستگاهایی ساپورت می کنن اپلیکیشن مارو. و همینطور داخل گوگل پلی این اپلیکیشن به چه دستگاهایی باید نمایش داده بشه:

<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false"/>
<!--
 true:  your app runs on only TV
 false: your app runs on phone and TV
-->
<uses-feature
    android:name="android.software.leanback"
    android:required="true"/>

Leave a Reply

Your email address will not be published. Required fields are marked *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>