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 のアクティビティを宣言する

TV デバイスで動作するアプリは、マニフェストで TV 用のランチャー アクティビティを宣言する必要があります。そのために、CATEGORY_LEANBACK_LAUNCHER インテント フィルタを使用します。このフィルタは、アプリがテレビに対応していることを識別し、Google Play がテレビアプリとして識別できるようにします。ユーザーがテレビのホーム画面でアプリを選択すると、このインテントが起動するアクティビティを識別します。

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

<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 部分は、3 m 離れたリモコンを使用して簡単に移動できるシンプルなインターフェースを用意する必要があります。既存のアプリを TV 向けに修正する場合、スマートフォンやタブレットに使用しているのと同じアクティビティ レイアウトを TV 用に使用しないでください。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>

注意: このコード例に示すように、アプリ マニフェストでタッチ スクリーンが不要であることを宣言する必要があります。設定されていない場合、アプリはテレビデバイスの Google Play に表示されません。

ホーム画面にアイコンとバナーを提供する

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

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

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

ホーム画面アイコン

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

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

バナーには、320 × 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 用のアプリを作成する

AndroidX ライブラリのほとんどは Android TV で使用できます。ライフサイクル対応 UI データの管理には ViewModel などのアーキテクチャ コンポーネントを使用し、モバイルの場合と同様にローカル SQLite データベースと統合するには Room を使用します。

AndroidX ライブラリのほとんどは Android TV をサポートしています。TV アプリは、モバイルアプリと同じアーキテクチャ コンポーネントを使用できます。フォーム ファクタ間でコンポーネントを共有することもできるため、ユーザーは TV アプリのプレゼンテーション ロジックに特化するだけで済みます。

テレビ向け Compose

Jetpack Compose を使用して TV OS UI を作成します。Compose は、UI 開発のための最新の Android ツールキットです。コア Compose ライブラリに加えて、Compose for TV ライブラリには、大画面用に特別に設計された専用コンポーネントが用意されています。

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

Leanback UI ツールキット(非推奨)

Leanback UI ツールキットはこれまで、Android のビューとフラグメントを使用する TV デバイス専用の API とユーザー インターフェース ウィジェットを提供してきました。

Leanback UI ツールキットを使用して TV アプリを作成する方法については、Leanback UI ツールキットの使用をご覧ください。

TV アプリを実行する

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

実機で実行する

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

  1. USB ケーブルを使って TV デバイスを開発用 PC に接続します。必要に応じて、デバイス メーカーが提供するドキュメントをご覧ください。
  2. TV デバイスで、[Settings] に移動します。
  3. [デバイス] 行で [デバイス情報] を選択します。
  4. [Build] までスクロールし、「デベロッパーになりました」というメッセージが表示されるまで [Build] を数回選択します。
  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 アプリの公開と配信を準備するための次のステップを確認します。