TV アプリのビルドを開始する

TV アプリでは、携帯電話やタブレット向けのものと同じ構造を使用します。つまり、Android アプリのビルドに関する既知の技術を使用して新たな TV アプリを作成したり、既存のアプリを TV 端末でも使用できるように編集したりできます。

重要:Google Play で Android TV アプリを提供するには、特定の要件を満たす必要があります。詳細については、TV アプリの品質に記載されている要件を参照してください。

このレッスンでは、TV アプリのビルドの際の開発環境の準備方法と、TV 端末上でアプリを使用できるようにするために最低限必要な変更について説明します。

TV プロジェクトをセットアップする

このセクションでは、TV 端末向けに既存のアプリを変更したり、新しく作成する方法について説明します。TV 端末向けアプリを作成する際に使用する必要がある主なコンポーネントは次のとおりです。

  • TV 用のアクティビティ(必須) - アプリのマニフェストで、TV 端末上で動作させるアクティビティを宣言します。
  • TV サポート ライブラリ(任意) - ユーザー インターフェースのビルド用にウィジェットを提供する、TV 端末向けのサポート ライブラリをいくつか利用できます。

前提条件

TV 向けアプリのビルドを開始するには:

TV アクティビティを宣言する

TV 端末向けアプリでは、CATEGORY_LEANBACK_LAUNCHER のインテント フィルタを使用して、アプリのマニフェストで TV 用ランチャーのアクティビティを宣言する必要があります。このフィルタは、アプリが TV 向けになっていることを判別しますので、Google Play 内で TV アプリと認識される上で必要です。この宣言は、ユーザーが TV のホーム スクリーンでアプリのアイコンを選択したときに、アプリ内のどのアクティビティが起動するかについても判別します。

次のコード スニペットでは、マニフェストにインテント フィルタを含める方法を示します。

<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>

この例では、2 番目のアクティビティのマニフェスト エントリが、TV 端末で起動するアクティビティを指定しています。

警告:アプリに CATEGORY_LEANBACK_LAUNCHER インテント フィルタを含めない場合、TV 端末で Google Play ストアを開いているユーザーにアプリが表示されません。開発者ツールを使用して TV 端末にロードする際にこのフィルタがない場合も、TV のユーザー にはアプリインターフェースが表示されません。

TV 向け用途で既存のアプリを変更する場合は、携帯電話やタブレットと同じアクティビティのレイアウトを使用しないでください。TV アプリや既存のアプリの TV 向け部分については、ソファでくつろぎながら TV リモコンを使用して、簡単にナビゲートできるシンプルなユーザー インターフェースを提供する必要があります。TV 向けアプリをデザインする際のガイドラインについては、TV 向けデザインガイドを参照してください。TV のインターフェースのレイアウトに関する最低限の実装要件についてはTV 用のレイアウトをビルドするを参照してください。

タッチスクリーンの不要を宣言する

TV 端末向けアプリでは、入力はタッチスクリーンに依存しません 。これを明確にするために、TV アプリのマニフェストで android.hardware.touchscreen 機能が不要であることを宣言する必要があります。この設定により、アプリが TV 端末向けであると判別しますので、Google Play 内で TV アプリと認識される上で必要です。次のコード例では、マニフェストに宣言を含める方法を示します。

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

警告:このコード例のようにアプリのマニフェストでタッチスクリーンが不要であると宣言しないと、アプリが TV 端末の Google Play ストアに表示されません。

アプリに Leanback ランチャーのインテント フィルタが含まれている場合は、ホーム スクリーンにバナーを配置する必要があります。バナーは、アプリやゲームの行のホーム スクリーン上に表示されるアプリの起動ポイントです。次のようにマニフェストにバナーを記述します。

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

    ...
</application>

android:banner 属性を使用して、<application> タグとともにアプリのすべてのアクティビティにデフォルトのバナーを配置するか、<activity> タグとともに特定のアクティビティにバナーを配置します。

TV 向けデザインの UI パターンガイドのバナーを参照してください。

TV サポート ライブラリを追加する

Android SDK には、TV アプリ向けのサポート ライブラリが用意されています。これらのライブラリでは、TV 端末向けに使用できる API とユーザー インターフェース ウィジェットを提供しています。同ライブラリは <sdk>/extras/android/support/ ディレクトリにあります。ライブラリとその全般的な用途の一覧を次に示します。

  • v17 leanback ライブラリ - 特にメディア再生用のアプリ向けに、TV アプリのユーザー インターフェース ウィジェットを提供します。
  • v7 recyclerview ライブラリ - メモリ効率に配慮した方法で、項目の多いリストの表示を管理するためのクラスを提供します。 v17 leanback ライブラリ内のクラスの一部は、このライブラリ内のクラスに依存します。
  • v7 cardview ライブラリ - メディア アイテムの画像や説明などの情報カードを表示するためのユーザー インターフェース ウィジェットを提供します。

注意:これらのサポート ライブラリは TV アプリに必須ではありませんが、特にメディア カタログのブラウジング インターフェースを提供するアプリについては使用することを強くお勧めします。

v17 leanback ライブラリを使用する場合、v4 サポート ライブラリ に依存していることに注意してください。つまり、leanback ライブラリを使用するアプリには、次のサポート ライブラリをすべて含める必要があります。

  • v4 サポート ライブラリ
  • v7 recyclerview サポート ライブラリ
  • v17 leanback サポート ライブラリ

v17 leanback ライブラリには、アプリのプロジェクトに含める際に、特定の手順を踏む必要があるリソースが含まれています。リソースを使用してサポート ライブラリをインポートする手順については、サポート ライブラリのセットアップを参照してください。

TV アプリをビルドする

上記の手順を完了したら、TV 向けアプリのビルドに取りかかりましょう。TV アプリのビルドに役立つ次の補足的なトピックに目を通してください。

  • TV 再生アプリのビルド - TV は娯楽用途に特化されていますので、Android では、ユーザーがビデオや音楽を再生したり、必要なコンテンツをブラウズできたりする TV アプリのビルド向けに、ユーザー インターフェース ツールとウィジェット一式を提供しています。
  • TV でのコンテンツの露出 - ユーザーがすべてのコンテンツを見ながら、お目当てのコンテンツを探し出せるようにすることは、コンテンツ自体の提供と同程度に重要です。このトレーニングでは、TV 端末上にコンテンツを露出させる方法について説明します。
  • TV 向けゲーム - TV 端末は、ゲームに非常に適したプラットフォームです。TV 向けの優れたゲーム エクスペリエンスのビルド方法については、このトピックを参照してください。

TV アプリを実行する

アプリの実行は、開発プロセスの重要な一部です。Android SDK の AVD Manager では端末定義を提供しており、アプリの実行やテスト用の仮想 TV 端末を作成することができます。

仮想 TV 端末を作成するには:

  1. AVD Manager を起動します。詳細については、AVD Manager のヘルプを参照してください。
  2. [AVD Manager] ダイアログで [端末定義] タブをクリックします。
  3. Android の TV 端末定義を選択し、[AVD の作成] をクリックします。
  4. エミュレータのオプションを選択して、[OK] をクリックして AVD を作成します。

    注意:TV 用のエミュレータ端末で最高のパフォーマンスを得るには、[ホスト GPU を使用] オプションを有効にし、サポートされている場合には、仮想端末のアクセラレーションを使用します。エミュレータのハードウェア アクセラレーションについては、エミュレータを使用するを参照してください。

仮想 TV 端末上でアプリをテストするには:

  1. 自分の開発環境に TV アプリをコンパイルします。
  2. 自分の開発環境からアプリを実行し、ターゲットの TV 仮想端末を選択します。

エミュレータの使用方法については、エミュレータを使用するを参照してください。Android Studio から仮想端末へのアプリのデプロイについては、Android Studio を使用してデバッグするを参照してください。ADT を使用した Eclipse からエミュレータへのアプリのデプロイについては、Eclipse から ADT を使用してビルド、実行するを参照してください。