[Android] テレビアプリ開発入門

テレビアプリは、モバイルアプリとアプリ構造は変わりません。しかし、Android TV上でアプリを動作させるためには、いくつか満たさなければならない要件があります。このレッスンでは、テレビアプリとして満たさなければならない要件について説明していきます。
広 告
目次
前提条件
- Android Studioでプロジェクトが作成済であること
- SDKツールバージョンが24.0.0.以上であること(テレビ用プロジェクト作成、テストを有効化のため)
- SDK がAndroid 5.0(API21)以上(テレビ用の新しいAPIが含まれるため)
動作確認端末
- Nexus Player
1. テレビアプリ開発の考慮点
テレビアプリは、従来のモバイルアプリとアプリ構造は同じであるため、既存のソースコードを流用して開発することが可能です。しかし、モバイルアプリとは操作感が大きく異なります。モバイルアプリはタッチ操作で動作しますが、テレビアプリはリモコンを使った十字キー操作です。
テレビアプリを開発する上で考慮しなければならない考え方は、以下の点です。
- 3メートル離れた場所から簡単に操作が理解できるシンプルな画面
- リモコンの十字キー、選択キーで動作するナビゲーション
2. テレビアプリプロジェクトのセットアップ
テレビアプリを作成する場合は、プロジェクトのターゲットSDKをAndroid5.0以上にします。

既存プロジェクトのターゲットSDKを変更する場合は、まずプロジェクト名を右クリックし「Open Module Settings」を選択します。

左メニューから「app」を選択、「Flavors」タブを選択します。表示された画面の「Target Sdk Version」のプルダウンからAPI21以上を選択し、最後にOKボタンをクリックします。
3. ホームスクリーンにアプリを表示する
テレビアプリには、CATEGORY_LEANBACK_LAUNCHER
のインテントフィルターを宣言しなければなりません。このフィルターは、端末にテレビアプリとして認識させ、Google Playに対しても、テレビアプリとして扱われるために必要な宣言です。 このフィルターはホームスクリーンから起動されるActivity
に宣言します。以下にAndroidManifest.xml
の例を示します。
AndroidManifest.xml
<activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity>
CATEGORY_LEANBACK_LAUNCHER
のインテントフィルターが宣言されていない場合、テレビ用のGoole Playストアから起動することができなくなり、また開発ツールからインストールした場合、ホームスクリーン上に表示されなくなります。
アプリを実行するとホームスクリーンに以下のよう表示されます。

しかしホームスクリーンには、アイコンとアプリ名が表示されています。
ホームスクリーンのバナー画像を指定する場合は、従来のandroid:icon
属性ではなく、android:banner
属性で指定します。全てのActivityに対して指定した場合は<application>タグに、Activity個別に指定したい場合は<activity>
タグにandroid:banner
属性に追加します。バナー画像の推奨サイズは320 * 180 px
です。
以下にコード例を示します。
AndroidManifest.xml
<application ... android:banner="@drawable/banner" > ... </application>
アプリを実行すると以下のようにホームスクリーンにバナーで表示されます(バナー画像は今回用に作成したものです)。

4. タッチスクリーン機能不要の宣言をする
テレビアプリはリモコンで操作するためタッチ操作が不要になります。そのため、AndroidManifest.xml
にタッチスクリーン機能が不要であることを宣言します。この宣言により、テレビアプリとして認識され、テレビ用のGooglePlayストアからも認識されます。
以下のような宣言を追加します。
AndroidManifest.xml
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
5. テレビ以外でも動作させる場合
開発するテレビアプリがモバイル端末でも動作させる場合は、以下の宣言を追加します。
AndroidManifest.xml
<manifest> <uses-feature android:name="android.software.leanback" android:required="false" /> ... </manifest>
テレビのみ動作させるアプリの場合は、android:required
属性の値をtrue
に設定します。以上がテレビアプリとして最低限必要な要件です。
次回のレッスンでは、テレビアプリ用のサポートライブリを追加する手順について説明します。