Android筆記:淺析Android電視APP開發
TV應用程式使用相同的結構與手機和平板電腦。這種相似性意味著你也可以修改現有的應用程式執行在TV裝置或建立新的應用程式基於你現在已經掌握的Android技術開發應用。
1、建立Android TV工程
本篇部落格主要介紹如何準備您的開發環境,為開發電視應用程式,和最低要求的變化,使一個應用程式執行在電視裝置上。
首先,我們需要使用以下兩個重要的元件:
Activity for Tv(必須) - 在應用的manifest檔案中,我們需要宣告一個需執行在電視端的activity
Tv Support Libraries(可選) - 有幾個相關的支援包,提供了一些電視裝置相關的互動控制元件。
1.1開發環境
1.2宣告一個TV Activity(Set up a TV Project)
執行在電視裝置端的Activity需要宣告CATEGORY_LEANBACK_LAUNCHER 意圖過濾器宣告,這樣可以保證Google Play能夠認定我們的app為電視版,同時,當我們在電視上選擇我們的應用圖示時,就會進入到我們宣告CATEGORY_LEANBACK_LAUNCHER的Activity與Android手機一致。
如下段程式碼,TvActivity將會展示在電視端,而MainActivity則會顯示在手機或平板端。
<intent-filter>
<category android:name="android.intent.category.LAUNCHER">
</category></action></intent-filter>
</activity>
<intent-filter>
<category android:name="android.intent.category.LEANBACK_LAUNCHER">
</category></action></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">
...
</uses-feature></manifest>
1.4宣告不可觸屏(Declare touchscreen not required)
執行在TV上的應用程式都是不依賴觸控式螢幕輸入,也可以理解為不支援觸控式螢幕。為了明確這一點,我們需要宣告android.hardware.touchscreen。
以下程式碼示例展示瞭如何包含這個清單宣告:
<manifest>
<uses-feature android:name="android.hardware.touchscreen" android:required="false">
...
</uses-feature></manifest>
提示:
以上程式碼也是必須要宣告的,以此來證明觸控式螢幕功能不是必需的。同時為了讓Google Play認定app是電視app,能讓應用在電視裝置上工作。
1.5提供一個主螢幕圖示(Provide a home screen banner)
這裡需要強調的是他的優先順序大於 android:icon=”@mipmap/ic_launcher”
1.6修改載入圖顏色(Change the launcher color)
當我們載入一個app的時候,會顯示一個圓形圖示的載入動畫,我們可以自定義其顏色。
通過android:colorPrimary設定特定顏色,另外還要設定兩個額外的屬性為true,程式碼如下:
<resources><style ...="" type="text/css"><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控制元件,這些庫位於/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”鍵退出。