TV アプリには、スマートフォンやタブレット向けのアプリと同じ構造を使用します。そのため、既存のアプリを TV デバイスでも使用できるように編集できます。また、Android アプリの構築に関する既存の知識を生かして新たな TV アプリを作成することもできます。
重要: 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 デバイス向けのアクティビティを宣言します。
- TV ライブラリ: 必要に応じて、このガイドの別のセクションに記載されている TV デバイス向けの androidx ライブラリ を 1 つ以上含めます。 これらのライブラリは、ユーザー インターフェースを作成するためのウィジェットを提供します。
前提条件
TV 向けアプリの作成を開始するには、次の手順を行う必要があります。
-
SDK Tools をバージョン 24.0.0 以降にアップデートする
アップデートした SDK ツールで、TV 向けアプリを作成してテストできます。 - SDK ツールを Android 5.0(API レベル 21)以降を使用してアップデートする
アップデート後のプラットフォームのバージョンでは、TV アプリ向けの新しい API を提供しています。 -
アプリのプロジェクトを作成または更新する
TV デバイス用の新しい API にアクセスするには、プロジェクトを作成するか、Android 5.0(API レベル 21)以降をターゲットとする既存の プロジェクトを変更します。
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 向けにした部分については、3 メートル離れた場所からリモコンを使って直感的に操作できる必要があります。TV 向けにするために既存のアプリを変更する場合、スマートフォンやタブレットと同じ アクティビティ レイアウトは使用しないでください。TV 向けアプリをデザインする際のガイドラインについては、TV 向けデザインをご覧ください。
TV デバイスのサポートを宣言する
アプリが Android TV 向けにビルドされていることを宣言するには、
android.software.leanback 機能を宣言します。
アプリがモバイルと 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 つの
transition overlap 属性を true に設定します。
<resources> <style name="MyTheme"> <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 には androidx パッケージ ライブラリが含まれています。
テレビ向け Compose
Android TV OS 向けアプリを作成するには、Compose を使用することをおすすめします。Compose for TV ライブラリは、コア Compose ライブラリに加えて、大画面向けに特別に設計された専用のコンポーネントを提供します:
Compose for TV を使用して TV アプリを作成する方法については、Android TV で Jetpack Compose を使用するをご覧ください。
Leanback UI ツールキット
Leanback UI ツールキットは、TV デバイス向けの API とユーザー インターフェース ウィジェットを提供します。
androidx.leanback.appandroidx.leanback.databaseandroidx.leanback.graphicsandroidx.leanback.mediaandroidx.leanback.preferenceandroidx.leanback.systemandroidx.leanback.widgetandroidx.leanback.widget.picker
Leanback UI ツールキットを使用して TV アプリを作成する方法については、 TV 再生アプリを作成するをご覧ください。
TV アプリを実行する
アプリの実行は開発プロセスの重要部分です。アプリは、USB デバッグをサポートするように設定された TV デバイスまたは仮想 TV デバイスで実行できます。
実機で実行する
次のように TV デバイスを設定します。
- USB ケーブルを使って TV デバイスを開発マシンに接続します。必要に応じて、 デバイス メーカーから提供されているマニュアルを参照してください。
- TV デバイスで、[Settings] に移動します。
- [デバイス] 行で [デバイス情報] を選択します。
- [ビルド] まで下にスクロールし、「開発者向けオプションが有効になりました」と表示されるまで [ビルド] を数回選択します。
- [設定] に戻ります。[設定] 行で [開発者向けオプション] を選択します。
- [Debugging > USB debugging] を選択し、[On] を選択します。
- TV のホーム画面に戻ります。
TV デバイスでアプリケーションをテストするには:
- Android Studio で、プロジェクトを選択してツールバーにある
[実行]
をクリックします。 - [Select Deployment Target] ウィンドウで TV デバイスを選択し、[OK] をクリックします。
仮想デバイス上で実行する
Android SDK の AVD Manager ではデバイス定義機能を提供しており、アプリの実行と テストを行う仮想 TV デバイスを作成できます。
仮想 TV デバイスを作成するには:
- AVD Manager を起動します。詳しくは、 仮想デバイスを作成して管理するをご覧ください。
- [AVD Manager] ダイアログで [Device Definitions] タブをクリックします。
- Android TV のいずれかのデバイス定義を選択し、[Create AVD] をクリックします。
- エミュレータのオプションを選択し、[OK] をクリックして AVD を作成します。
注: TV 用のエミュレータ デバイスで最高のパフォーマンスを得るには、x86 エミュレータを使用して、 [Use Host GPU] オプションを有効にします。また、仮想デバイスのアクセラレーションも使用します(使用可能な場合)。エミュレータのハードウェア アクセラレーションについて詳しくは、 Android Emulator のハードウェア アクセラレーションを設定するをご覧ください。
仮想 TV デバイス上でアプリをテストするには:
- Android Studio で、プロジェクトを選択してツールバーにある
[実行]
をクリックします。 - [Select Deployment Target] ウィンドウで、仮想 TV デバイスを選択し、[OK] をクリックします。
エミュレータの使い方について詳しくは、 Android Emulator 上でアプリを実行するをご覧ください。Android Studio から仮想 デバイスへのアプリのデプロイについては、アプリをデバッグするをご覧ください。
TV アプリを Instant エクスペリエンスとして実行できるようにする
Instant エクスペリエンスを使用すると、ユーザーは TV アプリをインストールせずに試すことができ、アプリの利用を促進できます。
Android TV デバイスまたはエミュレータで TV アプリを Instant アプリとして実行するように設定するには、まず、Instant 対応の App Bundle を作成するの手順に沿って操作します。
次に、TV アプリの
MainActivity のintent-filter で、AndroidManifest.xml にLAUNCHER と
LEANBACK_LAUNCHER の両方が宣言されていることを確認します。
<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 アプリのチェックリストをご覧ください。