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 向けアプリの作成を開始するには、以下が必要になります。
- SDK Tools をバージョン 24.0.0 以上に更新する
更新した SDK ツールで、TV 向けアプリを作成してテストできます。 - Android 5.0(API 21)以上を使用して SDK を更新する
更新したプラットフォーム バージョンでは 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 アプリや、既存のアプリを 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 とユーザー インターフェース ウィジェットを提供しています。
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 向けアプリの作成に取りかかりましょう。TV アプリの作成に関する以下のトピックをご確認ください。
- TV 再生アプリを作成する - TV は娯楽目的で利用されるものです。そのため Android では、動画や音楽を再生し、ユーザーが必要なコンテンツをブラウジングできる TV アプリ向けのユーザー インターフェース ツールやウィジェットを一式提供しています。
- TV でのコンテンツの検索補助 - ユーザーがすべてのコンテンツを見ながら、お目当てのコンテンツを探し出せるようにすることは、コンテンツ自体の提供と同程度に重要です。このトレーニングでは、TV デバイス上でコンテンツを見つけやすく表示する方法について説明します。
- TV 向けゲームを作成する - TV デバイスは、ゲームに最適のプラットフォームです。TV 向けの優れたゲーム エクスペリエンスを実現する方法については、このトピックをご覧ください。
- TV 入力サービスを作成する - 従来の「テレビ放送」のようなスタイルで動画コンテンツを提供します。ユーザーはプログラム ガイドやチャンネル選択ボタンを使って各チャンネルやプログラムにアクセスできます。
TV アプリを実行する
アプリの実行は開発プロセスの重要部分です。アプリは、USB デバッグをサポートするように設定された TV デバイスまたは仮想 TV デバイスで実行できます。
実際のデバイスで実行する
次のように TV デバイスを設定します。
- USB ケーブルを使って TV デバイスを開発用 PC に接続します。必要に応じて、デバイス メーカーから提供されているマニュアルを参照してください。
- 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 のヘルプを参照してください。
- [AVD Manager] ダイアログで [Device Definitions] タブをクリックします。
- Android TV のいずれかのデバイス定義を選択し、[Create AVD] をクリックします。
- エミュレータのオプションを選択し、[OK] をクリックして AVD を作成します。
注: TV 用のエミュレータ デバイスで最高のパフォーマンスを得るには、x86 エミュレータを使用して、[Use Host GPU] オプションを有効にします。また、仮想デバイスのアクセラレーションも使用します(使用可能な場合)。エミュレータのハードウェア アクセラレーションについて詳しくは、ハードウェア アクセラレーションを設定するをご覧ください。
仮想 TV デバイス上でアプリをテストするには:
- Android Studio で、プロジェクトを選択してツールバーにある実行アイコン
をクリックします。
- [Select Deployment Target] ウィンドウで仮想 TV デバイスを選択し、[OK] をクリックします。
エミュレータの使用について詳しくは、エミュレータの使用に関する記事をご覧ください。Android Studio から仮想デバイスへのアプリのデプロイについては、Android Studio を使用してデバッグするをご覧ください。