page.title=TV アプリのビルドを開始する page.tags=tv, leanback, recyclerview trainingnavtop=true startpage=true @jd:body
TV アプリでは、携帯電話やタブレット向けのものと同じ構造を使用します。つまり、Android アプリのビルドに関する既知の技術を使用して新たな TV アプリを作成したり、既存のアプリを TV 端末でも使用できるように編集したりできます。
重要:Google Play で Android TV アプリを提供するには、特定の要件を満たす必要があります。詳細については、TV アプリの品質に記載されている要件を参照してください。
このレッスンでは、TV アプリのビルドの際の開発環境の準備方法と、TV 端末上でアプリを使用できるようにするために最低限必要な変更について説明します。
このセクションでは、TV 端末向けに既存のアプリを変更したり、新しく作成する方法について説明します。TV 端末向けアプリを作成する際に使用する必要がある主なコンポーネントは次のとおりです。
TV 向けアプリのビルドを開始するには:
TV 端末向けアプリでは、{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} のインテント フィルタを使用して、アプリのマニフェストで TV 用ランチャーのアクティビティを宣言する必要があります。このフィルタは、アプリが 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 端末で起動するアクティビティを指定しています。
警告:アプリに {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} インテント フィルタを含めない場合、TV 端末で Google Play ストアを開いているユーザーにアプリが表示されません。開発者ツールを使用して TV 端末にロードする際にこのフィルタがない場合も、TV のユーザー にはアプリインターフェースが表示されません。
TV 向け用途で既存のアプリを変更する場合は、携帯電話やタブレットと同じアクティビティのレイアウトを使用しないでください。TV アプリや既存のアプリの TV 向け部分については、ソファでくつろぎながら TV リモコンを使用して、簡単にナビゲートできるシンプルなユーザー インターフェースを提供する必要があります。TV 向けアプリをデザインする際のガイドラインについては、TV 向けデザインガイドを参照してください。TV のインターフェースのレイアウトに関する最低限の実装要件についてはTV 用のレイアウトをビルドするを参照してください。
TV 端末向けアプリでは、入力はタッチスクリーンに依存しません 。これを明確にするために、TV アプリのマニフェストで {@code 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>
{@code android:banner} 属性を使用して、<application>
タグとともにアプリのすべてのアクティビティにデフォルトのバナーを配置するか、<activity>
タグとともに特定のアクティビティにバナーを配置します。
TV 向けデザインの UI パターンガイドのバナーを参照してください。
Android SDK には、TV アプリ向けのサポート ライブラリが用意されています。これらのライブラリでは、TV 端末向けに使用できる API とユーザー インターフェース ウィジェットを提供しています。同ライブラリは {@code <sdk>/extras/android/support/} ディレクトリにあります。ライブラリとその全般的な用途の一覧を次に示します。
注意:これらのサポート ライブラリは TV アプリに必須ではありませんが、特にメディア カタログのブラウジング インターフェースを提供するアプリについては使用することを強くお勧めします。
v17 leanback ライブラリを使用する場合、v4 サポート ライブラリ に依存していることに注意してください。つまり、leanback ライブラリを使用するアプリには、次のサポート ライブラリをすべて含める必要があります。
v17 leanback ライブラリには、アプリのプロジェクトに含める際に、特定の手順を踏む必要があるリソースが含まれています。リソースを使用してサポート ライブラリをインポートする手順については、サポート ライブラリのセットアップを参照してください。
上記の手順を完了したら、TV 向けアプリのビルドに取りかかりましょう。TV アプリのビルドに役立つ次の補足的なトピックに目を通してください。
アプリの実行は、開発プロセスの重要な一部です。Android SDK の AVD Manager では端末定義を提供しており、アプリの実行やテスト用の仮想 TV 端末を作成することができます。
仮想 TV 端末を作成するには:
注意:TV 用のエミュレータ端末で最高のパフォーマンスを得るには、[ホスト GPU を使用] オプションを有効にし、サポートされている場合には、仮想端末のアクセラレーションを使用します。エミュレータのハードウェア アクセラレーションについては、エミュレータを使用するを参照してください。
仮想 TV 端末上でアプリをテストするには:
エミュレータの使用方法については、エミュレータを使用するを参照してください。Android Studio から仮想端末へのアプリのデプロイについては、Android Studio を使用してデバッグするを参照してください。ADT を使用した Eclipse からエミュレータへのアプリのデプロイについては、Eclipse から ADT を使用してビルド、実行するを参照してください。