Android 創(chuàng)建TV應(yīng)用的第一步

2018-08-02 17:57 更新

編寫:awong1900 - 原文:http://developer.android.com/training/tv/start/start.html

TV應(yīng)用使用與手機(jī)和平板同樣的架構(gòu)。這種相似性意味著我們可以修改現(xiàn)有的應(yīng)用到TV設(shè)備或者用以前安卓應(yīng)用的經(jīng)驗(yàn)開發(fā)TV應(yīng)用。

Important: 想把Android TV應(yīng)用放在Google Play中應(yīng)滿足一些特定要求。更多信息, 參考TV App Quality中的要求列表。

本課程介紹如何準(zhǔn)備TV應(yīng)用開發(fā)環(huán)境,和使應(yīng)用能夠運(yùn)行在TV設(shè)備上的最低要求。

查明支持的媒體格式

查看以下文檔信息,包括代碼,協(xié)議和Android TV支持的格式。

查明支持的媒體格式

查看一下文檔關(guān)于代碼,協(xié)議和Android TV支持的格式。

創(chuàng)建TV項(xiàng)目

本節(jié)討論如何修改已有的應(yīng)用或者新建一個(gè)應(yīng)用使之能夠運(yùn)行在電視設(shè)備上。在TV設(shè)備上運(yùn)行的應(yīng)用必須使用這些主要組件:

  • Activity for TV (必須) - 在您的application manifest中, 聲明一個(gè)可在TV設(shè)備上運(yùn)行的activity。
  • TV Support Libraries (可選) - 這些支持庫(kù)Support Libraries 可以提供搭建TV用戶界面的控件。

前提條件

在創(chuàng)建TV應(yīng)用前, 必須做以下事情:

聲明一個(gè)TV Activity

一個(gè)應(yīng)用想要運(yùn)行在TV設(shè)備中,必須在它的manifest中定義一個(gè)啟動(dòng)activity,用intent filter包含CATEGORY_LEANBACK_LAUNCHER。這個(gè)filter表明你的應(yīng)用是在TV上可用,并且為Google Play上發(fā)布TV應(yīng)用所必須。定義這個(gè)intent也意味著點(diǎn)擊主屏幕的應(yīng)用圖標(biāo)時(shí),就是打開的這個(gè)activity。

接下來(lái)的代碼片段顯示如何在manifest中包含這個(gè)intent filter:

<application
  android:banner="@drawable/banner" >
  ...
  <activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

  <activity
    android:name="com.example.android.TvActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.Leanback">

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>

  </activity>
</application>

例子中第二個(gè)activity manifest定義的activity是TV設(shè)備中的一個(gè)啟動(dòng)入口。

Caution:如果在你的應(yīng)用中不包含CATEGORY_LEANBACK_LAUNCHER intent filter,它不會(huì)出現(xiàn)在TV設(shè)備的Google Play商店中。并且,即使你把不包含此filter的應(yīng)用用開發(fā)工具裝載到TV設(shè)備中,應(yīng)用仍然不會(huì)出現(xiàn)在TV用戶界面上。

如果你正在為TV設(shè)備修改現(xiàn)有的應(yīng)用,就不應(yīng)該與手機(jī)和平板用同樣的activity布局。TV的用戶界面(或者現(xiàn)有應(yīng)用的TV部分)應(yīng)該提供一個(gè)更簡(jiǎn)單的界面,更容易坐在沙發(fā)上用遙控器操作。TV應(yīng)用設(shè)計(jì)指南,參考TV Design指導(dǎo)。查看TV界面布局的最低要求,參考:Building TV Layouts

聲明Leanback支持

Android TV需要你的應(yīng)用使用Leanback用戶界面。如果你正在開發(fā)一個(gè)運(yùn)行在移動(dòng)設(shè)備(手機(jī),可穿戴,平板等等)也包括TV的應(yīng)用,設(shè)置required屬性為false。因?yàn)槿绻O(shè)置為true,你的應(yīng)用將僅能運(yùn)行在用Leanback UI的設(shè)備上。

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="false" />
    ...
</manifest>

聲明不需要觸屏

運(yùn)行在TV設(shè)備上的應(yīng)用不依靠觸屏去輸入。為了清楚表明這一點(diǎn),TV應(yīng)用的manifest必須聲明android.hardware.touchscreen為不需要。這個(gè)設(shè)置表明應(yīng)用能夠工作在TV設(shè)備上,并且也是Google Play認(rèn)定你的應(yīng)用為TV應(yīng)用的要求。接下來(lái)的示例代碼展示這個(gè)manifest聲明:

<manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>

Caution:必須在manifest中聲明觸屏是不需要的,否則應(yīng)用不會(huì)出現(xiàn)在TV設(shè)備的Google Play商店中。

提供一個(gè)主屏幕橫幅

如果應(yīng)用包含一個(gè)Leanback的intent filter,它必須提供每個(gè)語(yǔ)言的主屏幕橫幅。橫幅是出現(xiàn)在應(yīng)用和游戲欄的主屏的啟動(dòng)點(diǎn)。在manifest中這樣描述橫幅:

<application
    ...
    android:banner="@drawable/banner" >

    ...
</application>

application中添加android:banner屬性為所有的應(yīng)用activity提供默認(rèn)的橫幅,或者在特定activity的activity中添加橫幅。

在UI模式和TV設(shè)計(jì)指導(dǎo)中查看Banners。

添加TV支持庫(kù)

Android SDK包含用于TV應(yīng)用的支持庫(kù)。這些庫(kù)為TV設(shè)備提供API和用戶界面控件。這些庫(kù)位于<sdk>/extras/android/support/目錄。以下是這些庫(kù)的列表和它們的作用介紹:

  • v17 leanback library - 提供TV應(yīng)用的用戶界面控件,特別是用于媒體播放應(yīng)用的控件。
  • v7 recyclerview library - 提供了內(nèi)存高效方式的長(zhǎng)列表的管理顯示類。有一些v17 leanback庫(kù)的類依賴于本庫(kù)的類。
  • v7 cardview library - 提供顯示信息卡的用戶界面控件,如媒體圖片和描述。

Note:TV應(yīng)用中可以不用這些庫(kù)。但是,我們強(qiáng)烈推薦使用它們,特別是為應(yīng)用提供媒體目錄瀏覽界面時(shí)。

如果我們決定用v17 leanback library,我們應(yīng)該注意它依賴于v4 support library。這意味著要用leanback支持庫(kù)必須包含以下所有的支持庫(kù):

  • v4 support library
  • v7 recyclerview support library
  • v17 leanback support library

v17 leanback library包含資源文件,需要你在應(yīng)用中采取特定的步驟去包含它。插入帶資源文件的支持庫(kù)的說(shuō)明,查看Support Library Setup。

創(chuàng)建TV應(yīng)用

在完成上面的步驟之后,到了給大屏幕創(chuàng)建應(yīng)用的時(shí)候了!檢查一下這些額外的專題可以幫助我們創(chuàng)建TV應(yīng)用:

  • 創(chuàng)建TV播放應(yīng)用 - TV就是用來(lái)娛樂的,因此安卓提供了一套用戶界面工具和控件,用來(lái)創(chuàng)建視頻和音樂的TV應(yīng)用,并且讓用戶瀏覽想看到的內(nèi)容。
  • 幫助用戶找到TV內(nèi)容 - 因?yàn)樗械膬?nèi)容選擇都用手指操作遙控器,所以幫助用戶找到想要的內(nèi)容幾乎和提供內(nèi)容同樣重要。這個(gè)主題討論如何在TV設(shè)備中處理內(nèi)容。
  • TV游戲 - TV設(shè)備是非常好的游戲平臺(tái)。參考這個(gè)主題去創(chuàng)造更好的TV游戲體驗(yàn)。

運(yùn)行TV應(yīng)用

運(yùn)行應(yīng)用是在開發(fā)過(guò)程中的一個(gè)重要的部分。在安卓SDK中的AVD管理器提供了創(chuàng)建虛擬TV設(shè)備的功能,可以讓應(yīng)用在虛擬設(shè)備中運(yùn)行和測(cè)試。

創(chuàng)建一個(gè)虛擬TV設(shè)備

  1. 打開AVD管理器。更多信息,參考AVD管理器幫助。
  2. 在AVD管理器窗口,點(diǎn)擊Device Definitions標(biāo)簽。
  3. 選擇一個(gè)Android TV設(shè)備描述,并且點(diǎn)擊Create AVD。
  4. 選擇模擬器選項(xiàng)并且點(diǎn)擊OK創(chuàng)建AVD。

Note:獲得TV模擬器設(shè)備的最佳性能,打開Use Host GPU option,支持虛擬設(shè)備加速。更多模擬器硬件加速信息,參考Using the Emulator

在虛擬設(shè)備中測(cè)試應(yīng)用

  1. 在開發(fā)環(huán)境中編譯TV應(yīng)用。
  2. 從開發(fā)環(huán)境中運(yùn)行應(yīng)用并選擇目標(biāo)為TV虛擬設(shè)備。

更多模擬器信息:Using the Emulator。 用Android Studio部署應(yīng)用到模擬器,查看Debugging with Android Studio。用帶ADT插件的Eclipse部署應(yīng)用到模擬器,查看Building and Running from Eclipse with ADT 。


下一節(jié): 處理TV硬件 >


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)