天天看點

Android TV 筆記

聲明一個TV Activity

一個應用想要運作在TV裝置中,必須在它的manifest中定義一個啟動activity,用intent filter包含​​CATEGORY_LEANBACK_LAUNCHER​​。這個filter表明你的應用是在TV上可用,并且為Google Play上釋出TV應用所必須。定義這個intent也意味着點選主螢幕的應用圖示時,就是打開的這個activity。

接下來的代碼片段顯示如何在manifest中包含這個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>      

例子中第二個activity manifest定義的activity是TV裝置中的一個啟動入口。

Caution:如果在你的應用中不包含​​CATEGORY_LEANBACK_LAUNCHER​​ intent filter,它不會出現在TV裝置的Google Play商店中。并且,即使你把不包含此filter的應用用開發工具裝載到TV裝置中,應用仍然不會出現在TV使用者界面上。

如果你正在為TV裝置修改現有的應用,就不應該與手機和平闆用同樣的activity布局。TV的使用者界面(或者現有應用的TV部分)應該提供一個更簡單的界面,更容易坐在沙發上用遙控器操作。TV應用設計指南,參考​​TV Design​​​指導。檢視TV界面布局的最低要求,參考:​​Building TV Layouts​​。

聲明Leanback支援

Android TV需要你的應用使用Leanback使用者界面。如果你正在開發一個運作在移動裝置(手機,可穿戴,平闆等等)也包括TV的應用,設定​

​required​

​屬性為​

​false​

​。因為如果設定為​

​true​

​,你的應用将僅能運作在用Leanback UI的裝置上。

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

聲明不需要觸屏

運作在TV裝置上的應用不依靠觸屏去輸入。為了清楚表明這一點,TV應用的manifest必須聲明​

​android.hardware.touchscreen​

​為不需要。這個設定表明應用能夠工作在TV裝置上,并且也是Google Play認定你的應用為TV應用的要求。接下來的示例代碼展示這個manifest聲明:

<manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>      
Caution:必須在manifest中聲明觸屏是不需要的,否則應用不會出現在TV裝置的Google Play商店中。

提供一個主螢幕橫幅

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

    ...
</application>