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

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

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

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

TV 対応の設計TV 向けレイアウトの作成についての記事もご覧ください。また、Android TV GitHub リポジトリにある Android Leanback サンプルアプリについてもご確認ください。

メディア形式のサポートについて判断する

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

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

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

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

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

前提条件

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 用のレイアウトを作成する場合のガイドをご覧ください。

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 ライブラリを追加する

Jetpack には TV アプリで使用するための androidx パッケージ ライブラリが含まれています。これらのライブラリでは、TV デバイス向けの API とユーザー インターフェース ウィジェットを提供しています。

TV アプリを作成する

上記の手順を完了したら、TV 向けアプリの作成に取りかかりましょう。TV アプリの作成に関する以下のトピックをご確認ください。

  • TV 再生アプリを作成する - TV は娯楽目的で利用されるものです。そのため Android では、動画や音楽を再生したり、ユーザーが必要なコンテンツをブラウジングしたりする TV アプリ向けのユーザー インターフェース ツールやウィジェットを一式提供しています。
  • TV でユーザーがコンテンツを見つけやすくする - ユーザーがすべてのコンテンツを見ながら、お目当てのコンテンツを探し出せるようにすることは、コンテンツそのものを提供することに劣らず重要です。このトレーニングでは、TV デバイス上でコンテンツを見つけやすく表示する方法について説明します。
  • TV 向けゲームを作成する - TV デバイスは、ゲームに最適のプラットフォームです。TV 向けの優れたゲーム エクスペリエンスを実現する方法については、このトピックをご覧ください。
  • TV チャンネルを作成する - 従来の「テレビ放送」のようなスタイルで動画コンテンツを提供します。ユーザーはプログラム ガイドやチャンネル ボタンを使って各チャンネルや番組にアクセスできます。

TV アプリを実行する

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

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

次のように TV デバイスをセットアップします。

  1. USB ケーブルを使って TV デバイスを開発用マシンに接続します。必要に応じて、デバイス メーカーから提供されているマニュアルを参照してください。
  2. TV デバイスで、[Settings] に移動します。
  3. [デバイス] 行で [デバイス情報] を選択します。
  4. [ビルド] まで下にスクロールし、「開発者向けオプションが有効になりました」と表示されるまで [ビルド] を数回選択します。
  5. [設定] に戻ります。[設定] 行で [開発者向けオプション] を選択します。
  6. [Debugging > USB debugging] を選択し、[On] を選択します。
  7. TV のホーム画面に戻ります。

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

  1. Android Studio で、プロジェクトを選択してツールバーにある実行アイコン をクリックします。
  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 で、プロジェクトを選択してツールバーにある実行アイコン をクリックします。
  2. [Select Deployment Target] ウィンドウで仮想 TV デバイスを選択し、[OK] をクリックします。

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