Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

TV アプリの作成を開始する

TV アプリには、スマートフォンやタブレット向けのアプリと同じ構造を使用します。つまり、Android アプリの構築に関する既存の知識を生かして新たな TV アプリを作成したり、既存のアプリを TV デバイスでも使用できるように編集したりできます。

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

ここでは、TV アプリ作成のための開発環境を準備する方法と、TV デバイス上でアプリを実行できるようにするために最低限必要な変更について説明します。

TV 向けデザインTV 向けレイアウトの作成についての記事もお読みください。また、Android TV Leanback サポート ライブラリのサンプルもお試しください。

メディア形式のサポートを特定する

Android TV でサポートされるコーデック、プロトコル、形式については、次のドキュメントを参照してください。

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

ここでは、TV デバイス向けに既存のアプリを変更したり、新しいアプリを作成したりする方法について説明します。Android アプリをすでにお持ちの場合は、Android TV サポートを追加すると、既存のアプリ アーキテクチャを再利用して TV 向けユーザー インターフェースをデザインできます。

TV デバイス向けアプリを作成する際に使用する必要がある主なコンポーネントは次のとおりです。

  • TV 用のアクティビティ(必須)- アプリのマニフェストで、TV デバイス上で動作させるアクティビティを宣言します。
  • TV サポート ライブラリ(任意)- ユーザー インターフェース用のウィジェットを提供する、TV デバイス向けのサポート ライブラリが用意されています。

前提条件

TV 向けアプリの作成を開始するには、以下が必要になります。

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

TV デバイス向けアプリでは、アプリのマニフェストで TV 用ランチャーのアクティビティを宣言する必要があります。この処理には、CATEGORY_LEANBACK_LAUNCHER のインテント フィルタが使用されます。このフィルタは、アプリが 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 用のレイアウトを作成するをご覧ください。

Leanback サポートを宣言する

Android TV に必要な Leanback ユーザー インターフェースをアプリで使用することを宣言します。モバイルデバイス(スマートフォン、ウェアラブルデバイス、タブレットなど)および Android TV で実行されるアプリを開発している場合は、required 属性値を false に設定します。required 属性値を true に設定した場合、アプリは Leanback UI を使用するデバイスのみで実行されます。

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

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

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> タグに追加して特定のアクティビティに個別に配置します。

バナーは 320 x 180 ピクセルの xhdpi リソースにする必要があります。画像にはテキストを含めてください。アプリが複数の言語に対応している場合は、各言語のテキストで対応言語ごとに個別のバージョンのバナーを作成する必要があります。

ランチャーの色を変更する

TV アプリが起動すると、大きくなっていく塗りつぶされた円のようなアニメーションが表示されます。このアニメーションの色をカスタマイズするには、TV アプリやアクティビティの android:colorPrimary 属性を特定の色に設定します。また、テーマリソース XML ファイルの次のスニペットに示すように、2 つの追加 transition overlap 属性を true に設定する必要があります。

    <resources>
        <style ... >
          <item name="android:colorPrimary">@color/primary</item>
          <item name="android:windowAllowReturnTransitionOverlap">true</item>
          <item name="android:windowAllowEnterTransitionOverlap">true</item>
        </style>
    </resources>
    

テーマとスタイルの使用について詳しくは、スタイルとテーマをご覧ください。

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 チャンネルの作成 - 従来の「テレビ放送」のようなスタイルで動画コンテンツを提供します。ユーザーはプログラム ガイドやチャンネルボタンを使用して各チャンネルやプログラムにアクセスできます。

TV アプリを実行する

アプリの実行は開発プロセスの重要な一部です。アプリは、USB デバッグをサポートするように設定された TV デバイスまたは仮想 TV デバイスで実行します。

実際のデバイスで実行する

次のように TV デバイスを設定します。

  1. USB ケーブルを使って TV デバイスを開発用 PC に接続します。必要に応じて、デバイス メーカーから提供されているマニュアルを参照してください。
  2. TV デバイスで、[Settings] に移動します。
  3. [Device] 行で [About] を選択します。
  4. [Build] まで下にスクロールして、「デベロッパー設定が有効になりました」というメッセージが表示されるまで [Build] を数回選択します。
  5. [Settings] に戻ります。[Preferences] 行で、[Developer options] を選択します。
  6. [Debugging > USB debugging] を選択し、[On] を選択します。
  7. TV のホーム画面に戻ります。

TV デバイスでアプリケーションをテストするには:

  1. Android Studio で、プロジェクトを選択してツールバーから [Run] をクリックします。
  2. [Select Deployment Target] ウィンドウで TV デバイスを選択し、[OK] をクリックします。

仮想デバイス上で実行する

Android SDK の AVD Manager ではデバイス定義を提供しており、アプリの実行やテスト用の仮想 TV デバイスを作成することができます。

仮想 TV デバイスを作成するには:

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

    注: TV 用のエミュレータ デバイスで最高のパフォーマンスを得るには、x86 エミュレータを使用して、[Use Host GPU] オプションを有効にします。また、仮想デバイスのアクセラレーションも使用します(使用可能な場合)。エミュレータのハードウェア アクセラレーションについて詳しくは、ハードウェア アクセラレーションを設定するをご覧ください。

仮想 TV デバイス上でアプリをテストするには:

  1. Android Studio で、プロジェクトを選択してツールバーから [Run] をクリックします。
  2. [Select Deployment Target] ウィンドウで仮想 TV デバイスを選択し、[OK] をクリックします。

エミュレータの使用について詳しくは、エミュレータを使用するをご覧ください。Android Studio から仮想デバイスへのアプリのデプロイについては、Android Studio を使用してデバッグするをご覧ください。