Android TV APPs 的介紹與建立
最近開始接觸到Andorid TV程式設計,發現目前這方便的資料與比較還比較少,但現在隨著產品與使用者的升級,涉及到Android TV與 Android Watch的程式設計離我們越來越近了,本篇部落格開始,將以筆記的方式記錄我Android TV從零到有的一個過程。
TV應用程式使用相同的結構與手機和平板電腦。這種相似性意味著你也可以修改現有的應用程式執行在TV裝置或建立新的應用程式基於你現在已經掌握的Android技術開發應用。
1、建立Android TV工程
本篇部落格主要介紹如何準備您的開發環境,為開發電視應用程式,和最低要求的變化,使一個應用程式執行在電視裝置上。
首先,我們需要使用以下兩個重要的元件:
Activity for Tv(必須) - 在應用的manifest檔案中,我們需要宣告一個需執行在電視端的activity
Tv Support Libraries(可選) - 有幾個相關的支援包,提供了一些電視裝置相關的互動控制元件。
1,1開發環境
以上是最新官網內容:
- SDK tools版本在24.0.0及以上
- Android 5.0(API 21)SDK及以上的
- 建立或更新你的工程 - 為了能夠訪問為電視裝置設計的API,我們需要建立或修改現有的工程目標SDK版本在Andorid 5.0及以上。
1,2宣告一個TV Activity(Set up a TV Project)
執行在電視裝置端的Activity需要宣告CATEGORY_LEANBACK_LAUNCHER 意圖過濾器宣告,這樣可以保證Google Play能夠認定我們的app為電視版,同時,當我們在電視上選擇我們的應用圖示時,就會進入到我們宣告CATEGORY_LEANBACK_LAUNCHER
的Activity與Android手機一致。
如下段程式碼,TvActivity將會展示在電視端,而MainActivity則會顯示在手機或平板端。
<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>
注意:
如果我們的app中不包含CATEGORY_LEANBACK_LAUNCHER 意圖過濾的Activity,那麼電視端的Google Play store不會顯示我們的應用,同時,我們用開發工具在電視端或AVD中除錯時,我們的應用圖示也不會出現在電視桌面上。
如果你正在修改一個現有的應用程式在電視上使用,你的應用程式不應該使用相同的Activity佈局電視,它僅僅適用於手機和平板電腦。
TV應用程式的使用者介面(或T V部分現有的應用程式)應該提供一個更簡單的介面,可以很容易地從沙發上導航使用和遠端控制。
1,3宣告Leanback支援
如果你的應用要同時執行在手機、平板、以及電視裝置上,需要將required屬性設定為false,如果設定為true那麼應用只能執行在使用Leanback UI的裝置上。
以下程式碼示例展示瞭如何包含這個清單宣告:
<manifest>
<uses-feature android:name="android.software.leanback"
android:required="false" />
...
</manifest>
1,4宣告不可觸屏(Declare touchscreen not required)
執行在TV上的應用程式都是不依賴觸控式螢幕輸入,也可以理解為不支援觸控式螢幕。為了明確這一點,我們需要宣告android.hardware.touchscreen。
以下程式碼示例展示瞭如何包含這個清單宣告:
<manifest>
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
...
</manifest>
提示:
以上程式碼也是必須要宣告的,以此來證明觸控式螢幕功能不是必需的。同時為了讓Google Play認定app是電視app,能讓應用在電視裝置上工作。
1,5提供一個主螢幕圖示(Provide a home screen banner)
<application
...
android:banner="@drawable/banner" >
...
</application>
這裡需要強調的是他的優先順序大於 android:icon=”@mipmap/ic_launcher”
1,6修改載入圖顏色(Change the launcher color)
當我們載入一個app的時候,會顯示一個圓形圖示的載入動畫,我們可以自定義其顏色。
通過android:colorPrimary設定特定顏色,另外還要設定兩個額外的屬性為true,程式碼如下:
<resources>
<style ... >
<item name="android:colorPrimary">@color/primary</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
</style>
</resources>
2新增TV支援庫(Add TV Support Libraries)
Android SDK下包含了一些用於Tv應用的支援庫,這些支援庫包含了一些用於Tv應用的UI控制元件,這些庫位於<sdk>/extras/android/support/
目錄下。以下是對這些庫的說明:
- v17 leanback library -提供了一些專門用於媒體播放控制元件。
- v7 recyclerview library-提供了以記憶體效率更高的方式來管理列表展示的類。同時v17 leanback
library中的一些類也要依賴此庫。 - v7 cardview library-包含了用來展示資訊卡片的控制元件。
注:你不需要使用這些支援庫在你的TV應用程式裡。但是,我們強烈建議你使用它們,特別是開發媒體相關的APP。
如果決定要使用v17 leanback library,應當注意,它是依賴v4 support library的,這意味著我們最終要包含如下庫:
- v4 support library
- v7 recyclerview support library
- v17 leanback support library
3,建立TV APPs教程(Build TV Apps)
以上為官方推薦連結
4,執行 TV APPs(Run TV Apps)
4.1 建立 TV 模擬器
1、啟動AVD管理,建立虛擬機器.並點選Create Virtual Device
2、選擇Category Tv,選擇一個Android TV,然後點選“Next”
直至出現如下介面點選“Finish”完成模擬器建立,過程中如果SDK版本過低,會提示下載。
模擬器中除錯
如果你的TV APPs無錯誤,在模擬器中顯示如下。
通過鍵盤操作,現實中通過遙控操作。進入Apps介面顯示如下:
看到如上介面,表示你已經成功的建立了一個Android TV專案,可安裝到電視中試一試啦!
最後簡單說明一下如何在模擬器中操作
為了模擬電視遙控的操作,我們需要通過鍵盤來控制,鍵盤中上、下、左、右鍵,可以移動焦點,點選“Enter”鍵進入,點選“ESC”鍵退出。