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

TV アプリは、スマートフォンやタブレット向けアプリと同じ構造を使用します。この類似性により、TV デバイスでも動作するように既存のアプリを変更したり、Android 向けアプリの作成に関する既知の知識に基づいて新しいアプリを作成したりできます。

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

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

TV 向けアプリの設計については、TV 向けデザインをご覧ください。Android TV の GitHub リポジトリのサンプルアプリもご覧ください。

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

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

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

このセクションでは、TV デバイスで動作するように既存の Android アプリを変更する場合でも、新しい TV アプリを作成する場合でも、TV プロジェクトをセットアップする方法について説明します。既存の Android アプリがある場合は、Android TV サポートを追加することで、既存のアプリ アーキテクチャを再利用しながら TV 向けユーザー インターフェースを設計できます。

TV デバイスで動作するアプリを作成する際には、次の 2 つの主要コンポーネントを使用します。

  • TV 用のアクティビティ: アプリ マニフェストで、TV デバイスで実行するアクティビティを宣言します。
  • TV ライブラリ: 必要に応じて、TV デバイスで利用可能な androidx ライブラリ(このガイドの別のセクションに記載)を 1 つ以上含めます。 これらのライブラリは、ユーザー インターフェースを構築するためのウィジェットを提供します。

前提条件

TV 向けアプリの作成を開始する前に、次の手順を実施する必要があります。

  • バージョン 24.0.0 以降に SDK Tools を更新します。
    アップデートされた SDK Tools を使用すると、テレビ向けアプリの作成とテストが行えます。
  • Android 5.0(API 21)以降を使用して SDK をアップデートします。
    更新後のプラットフォーム バージョンでは、TV アプリ用の新しい API が提供されます。
  • アプリ プロジェクトを 作成または更新します。
    TV デバイス用の新しい API にアクセスするには、Android 5.0(API レベル 21)以降をターゲットとするプロジェクトを作成するか、既存のプロジェクトを変更します。

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 アプリのユーザー インターフェース、または既存のアプリのテレビ部分は、3 m 離れた場所からリモコンで簡単に操作できるシンプルなインターフェースを提供する必要があります。テレビで使用するために既存のアプリを変更する場合は、スマートフォンやタブレットに使用しているものと同じアクティビティ レイアウトをテレビ用に使用しないでください。TV 向けアプリの設計ガイドラインについては、TV 向けの設計をご覧ください。TV のインターフェース レイアウトに関する最小実装要件について詳しくは、TV レイアウトを作成するをご覧ください。

TV デバイスのサポートを宣言する

android.software.leanback 機能を宣言して、アプリが Android TV 向けであることを宣言します。

アプリがモバイルとテレビの両方で実行される場合は、required 属性値を false に設定します。required 属性値を true に設定すると、Google Play は、アプリを Android TV OS でのみ利用可能にします。

<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 に表示されません。

ホーム画面のアイコンとバナーを用意する

Android TV アプリでは、ホーム画面アイコンとバナー画像の両方をローカライズごとに用意する必要があります。Android TV デバイスによっては、アイコンまたはバナーがホーム画面のアプリとゲームの行に表示されるアプリの起動ポイントとして使用されます。

これらをアプリに追加するには、マニフェストでアイコンとバナーを次のように記述します。

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

ホーム画面のアイコン

Android TV アプリには、すべての Android アプリと同様に、ホーム画面アイコンが必要です。アプリの最適な起動ポイントを設計する際のベスト プラクティスと詳細なアセット要件については、 Android TV アプリのアイコンとバナーのガイドラインをご覧ください。

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

バナーには、サイズが 320 x 180 ピクセルの xhdpi リソースを使用します。画像にはテキストを含める必要があります。アプリが複数の言語に対応している場合は、サポート対象の言語ごとに、テキストを含む個別のバージョンのバナーを用意する必要があります。

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

注意: Android 12 以降では、SplashScreen プラットフォーム API を使用して作成したカスタム スプラッシュ画面アニメーションは、Android TV アプリではサポートされていません。

TV アプリが起動すると、拡大する塗りつぶしの円のようなアニメーションが表示されます。このアニメーションの色をカスタマイズするには、TV アプリまたはアクティビティの android:colorPrimary 属性を特定の色に設定します。また、テーマリソース XML ファイルの次のスニペットに示すように、2 つの遷移の重複属性を true に設定します。

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

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

Android TV OS 用のアプリを作成する

Jetpack には、TV アプリで使用する androidx パッケージ ライブラリが含まれています。

テレビ向け Compose

Android TV OS 向けのアプリを作成するには、Compose の使用をおすすめします。Compose for TV ライブラリには、主要な Compose ライブラリのほかに、大画面用に設計された専用コンポーネントが用意されています。

Compose for TV を使用して TV アプリを作成する方法については、Android TV で Jetpack Compose を使用するをご覧ください。

Leanback UI ツールキット

Leanback UI ツールキットには、TV デバイス向けの API とユーザー インターフェース ウィジェットが用意されています。

TV 再生アプリを作成するで、Leanback UI ツールキットを使用して TV アプリを作成する方法をご確認ください。

TV アプリを実行する

アプリの実行は開発プロセスの重要部分です。USB デバッグをサポートするよう構成されたテレビデバイスでアプリを実行したり、仮想 TV デバイスを使用したりできます。

実機で実行する

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

  1. USB ケーブルを使って TV デバイスを開発用 PC に接続します。必要に応じて、デバイス メーカーが提供するドキュメントをご覧ください。
  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 を起動します。詳細については、仮想デバイスの作成と管理をご覧ください。
  2. [AVD Manager] ダイアログで [Device Definitions] タブをクリックします。
  3. Android TV のいずれかのデバイス定義を選択し、[Create AVD] をクリックします。
  4. エミュレータのオプションを選択し、[OK] をクリックして AVD を作成します。

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

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

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

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

TV アプリを Instant エクスペリエンスとして実行できるようにします

Instant エクスペリエンスにより、ユーザーは TV アプリを試しやすくなり、導入率の向上につながります。

Android TV デバイスまたはエミュレータで Instant App として実行するように TV アプリをセットアップするには、まず Instant 対応 App Bundle を作成するの手順に沿って操作します。

次に、TV アプリの MainActivityintent-filter で、LAUNCHERLEANBACK_LAUNCHER の両方が AndroidManifest.xml で宣言されていることを確認します。

<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" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
  </activity>

これで、TV アプリが Instant 版として実行されるように設定されました。

公開に向けて TV アプリを準備する

TV アプリのチェックリストで、TV アプリの公開と配信を準備するための次のステップを確認します。