Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

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

android-android-tvapp-start_00

テレビアプリは、モバイルアプリとアプリ構造は変わりません。しかし、Android TV上でアプリを動作させるためには、いくつか満たさなければならない要件があります。このレッスンでは、テレビアプリとして満たさなければならない要件について説明していきます。

 

広 告

 

目次

前提条件

動作確認端末

  • Nexus Player

1. テレビアプリ開発の考慮点

テレビアプリは、従来のモバイルアプリとアプリ構造は同じであるため、既存のソースコードを流用して開発することが可能です。しかし、モバイルアプリとは操作感が大きく異なります。モバイルアプリはタッチ操作で動作しますが、テレビアプリはリモコンを使った十字キー操作です。

テレビアプリを開発する上で考慮しなければならない考え方は、以下の点です。

 

  • 3メートル離れた場所から簡単に操作が理解できるシンプルな画面
  • リモコンの十字キー、選択キーで動作するナビゲーション
Note : テレビアプリを作成するには、Android Studioを使用することが推奨されます。Android Studioはテレビ用にプロジェクトをセットアップ、テレビ用ライブラリの取り込み等、便利な機能が搭載されています。

 

2. テレビアプリプロジェクトのセットアップ

テレビアプリを作成する場合は、プロジェクトのターゲットSDKをAndroid5.0以上にします。

 

android-android-tvapp-start_01

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

 

android-android-tvapp-start_02

左メニューから「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>
Note:もしCATEGORY_LEANBACK_LAUNCHERのインテントフィルターが宣言されていない場合、テレビ用のGoole Playストアから起動することができなくなり、また開発ツールからインストールした場合、ホームスクリーン上に表示されなくなります。

 

アプリを実行するとホームスクリーンに以下のよう表示されます。

 

android-android-tvapp-start_03

しかしホームスクリーンには、アイコンとアプリ名が表示されています。

ホームスクリーンのバナー画像を指定する場合は、従来のandroid:icon属性ではなく、android:banner属性で指定します。全てのActivityに対して指定した場合は<application>タグに、Activity個別に指定したい場合は<activity>タグにandroid:banner属性に追加します。バナー画像の推奨サイズは320 * 180 pxです。

以下にコード例を示します。

 

AndroidManifest.xml

<application
    ...
    android:banner="@drawable/banner" >
    ...
</application>

アプリを実行すると以下のようにホームスクリーンにバナーで表示されます(バナー画像は今回用に作成したものです)。

 

android-android-tvapp-start_04

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に設定します。以上がテレビアプリとして最低限必要な要件です。

次回のレッスンでは、テレビアプリ用のサポートライブリを追加する手順について説明します。

 

広 告