TV アプリは、スマートフォンやタブレット向けアプリと同じ構造を使用します。この類似性により、既存のアプリを TV デバイスでも動作するように変更したり、Android 向けアプリの作成に関する既存の知識に基づいて新しいアプリを作成したりできます。
重要: Google Play で Android TV アプリを提供するには、アプリが特定の要件を満たしている必要があります。詳しくは、TV アプリの品質に記載されている要件をご覧ください。
このガイドでは、TV アプリを構築するための開発環境の準備方法と、TV デバイス上でアプリを実行するために必要な最小限の変更について説明します。
TV 向けのアプリの設計については、TV 向けのデザインと TV 向けレイアウトを作成するをご覧ください。TV アプリのサンプルを確認するには、Android TV の GitHub リポジトリにある Android Leanback サンプルアプリをご覧ください。
メディア形式のサポートについて判断する
Android TV でサポートされているコーデック、プロトコル、形式については、次のドキュメントをご覧ください。
TV プロジェクトをセットアップする
このセクションでは、既存の Android アプリを TV デバイスで動作するように変更する場合と新しい TV アプリを作成する場合のどちらであっても、TV プロジェクトのセットアップ方法について説明します。既存の Android アプリをお持ちの場合は、Android TV のサポートを追加することで、既存のアプリ アーキテクチャを再利用しながらテレビ用のユーザー インターフェースを設計できます。
TV デバイスで動作するアプリを作成する際に使用する主なコンポーネントには、次の 2 つがあります。
- TV のアクティビティ: アプリ マニフェストで、TV デバイスで実行するアクティビティを宣言します。
- TV ライブラリ: 必要に応じて、TV デバイスで利用可能な androidx ライブラリ(このガイドの別のセクションに記載)を 1 つ以上追加します。 これらのライブラリは、ユーザー インターフェースを構築するためのウィジェットを提供します。
前提条件
テレビ向けアプリの作成を始める前に、次の手順を行う必要があります。
-
SDK Tools をバージョン 24.0.0 以降に更新します。
アップデートされた SDK Tools を使用すると、TV 向けアプリを作成およびテストできます。 - SDK を Android 5.0(API 21)以降に更新します。
アップデートされたプラットフォーム バージョンでは、TV アプリ用の新しい API が提供されます。 - アプリ プロジェクトを
作成または更新します。
TV デバイス用の新しい API にアクセスするには、Android 5.0(API レベル 21)以降をターゲットとするプロジェクトを作成するか、既存のプロジェクトを変更します。
TV のアクティビティを宣言する
TV デバイスで動作するアプリは、マニフェストで TV 用のランチャー アクティビティを宣言する必要があります。そのために、CATEGORY_LEANBACK_LAUNCHER
インテント フィルタを使用しています。このフィルタは、アプリがテレビ対応であることを識別し、Google Play がアプリを 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 m 離れた場所から簡単に移動できるシンプルなインターフェースを提供する必要があります。テレビで使用するために既存のアプリを変更する場合は、スマートフォンやタブレットで使用するものと同じアクティビティ レイアウトをテレビに使用しないでください。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 に表示されません。
ホーム画面のアイコンとバナーを用意する
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 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>
テーマとスタイルの使用について詳しくは、スタイルとテーマをご覧ください。
TV ライブラリを追加する
Jetpack には TV アプリで使用するための androidx パッケージ ライブラリが含まれています。以下のライブラリは、TV デバイス向けの API とユーザー インターフェース ウィジェットを提供します。
androidx.leanback.app
androidx.leanback.database
androidx.leanback.graphics
androidx.leanback.media
androidx.leanback.preference
androidx.leanback.system
androidx.leanback.widget
androidx.leanback.widget.picker
テレビアプリを作成する
前述のステップを完了したら、大画面向けのアプリの作成を開始します。テレビ向けアプリの作成に役立つ以下のトピックをご確認ください。
- TV 再生アプリを作成する: TV は楽しませることが目的であるため、Android には、動画や音楽を再生し、ユーザーが必要なコンテンツをブラウジングできる TV アプリを作成するためのユーザー インターフェース ツールとウィジェットが用意されています。
- Android TV でコンテンツを見つけやすくする: ユーザーが簡単にコンテンツを選べるようにして、ユーザーがお気に入りのコンテンツを見つけやすくすることは、コンテンツを提供することと同じくらい重要です。このガイドでは、TV デバイスにコンテンツを表示する方法について説明します。
- TV ゲームを作成する: TV デバイスはゲームに適したプラットフォームです。テレビに適したゲーム エクスペリエンスの構築については、このトピックをご覧ください。
- TV 入力サービスを構築する: ユーザーが番組ガイドやチャンネル選択ボタン、またはチャンネル選択ボタンからアクセスできるチャンネルと番組を備えた、地上波の「テレビ放送」スタイルで動画コンテンツを表示します。
TV アプリを実行する
アプリの実行は開発プロセスの重要部分です。アプリは、USB デバッグをサポートするよう構成されたテレビデバイスで実行することも、仮想 TV デバイスを使用することもできます。
実機で実行する
次のように TV デバイスを設定します。
- USB ケーブルを使って TV デバイスを開発用 PC に接続します。必要に応じて、デバイスのメーカーが提供するドキュメントをご覧ください。
- TV デバイスで、[Settings] に移動します。
- [デバイス] 行で [デバイス情報] を選択します。
- [Build] まで下にスクロールし、「開発者向けオプションが有効になりました」というメッセージが表示されるまで、[Build] を数回選択します。
- [設定] に戻ります。[設定] 行で [開発者向けオプション] を選択します。
- [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 デバイスまたはエミュレータで Instant App として実行するように TV アプリをセットアップするには、まず Instant 対応 App Bundle を作成するの手順に沿って操作します。
次に、TV アプリの MainActivity
の intent-filter
で、LAUNCHER
と LEANBACK_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 アプリのチェックリストを確認します。