Fire TVとAndroid TVにおける開発の違い


Fire TVとAndroid TVにおける開発の違い

Amazon Fire TVとAndroid TVはどちらもAndroidベースのため、同じAndroidアプリをAmazonアプリストアとGoogle Playストアの両方で配信可能で、アプリの知名度やダウンロード件数の大幅な上昇も見込めます。

ただし、Fire TVにはコードで考慮すべき違いがいくつかあります。これらの違いは、たとえばハードウェアやサービスを構成する独自の要素に起因しています。一方のサービスには存在する機能がもう一方のサービスにはない場合もあります。異なるサービスではあるものの、同等の働きをするものもあります。

コードの中でこうした違いに対応するには、Amazon Fire TVデバイスを識別し、それに応じて異なるデバイスおよび動作に合わせてコーディングする必要があります。

Amazon Fire TVとAndroid TVの違い

まず、Android TVとAmazon Fire TVの特徴をそれぞれ明確にしておきましょう。

  • Android TVとは、テレビ用に最適化されたAndroidオペレーティングシステムのことです(Lollipop以降のバージョン)。Android LollipopとLeanback Support Libraryには、テレビのプラットフォームに合わせてAndroidを最適化する機能が備わっています。Android TVは、テレビデバイス単体でネイティブOSとして実行できるほか、テレビからセットトップボックスを介してAndroidを実行することができます。Android TVの詳細については、Wikipediaを参照してください。
  • Amazon Fire TVとは、テレビでFireオペレーティングシステム(OS)を実行するFire TVセットトップボックスまたはFire TV Stickを指します。Fire OSには、 Fire OS 5とFire OS 6の2つのバージョンがあります。Fire OS 5はAndroid 5.1(Lollipop、APIレベル22)を、Fire OS 6はAndroid 7.1(Nougat、APIレベル25)をベースにしています。Fire OSもAndroidオペレーティングシステムをベースにしていますが、Amazonのハードウェアやサービスにも対応できるという違いがあります。FireタブレットでもFire OS 5が使用されています。ただし、テレビプラットフォームでの「10フィートエクスペリエンス」に主眼を置いた機能は採用されていません(詳細については、Fire OSの概要またはFire TVのデバイス仕様を参照してください)。

重要な点は、Android TVとAmazon Fire TVはどちらもAndroidをベースにしており、アプリ開発において開発者が実装する技術は、相違点よりも共通点の方がはるかに多いということです。

以降のセクションには、Fire TVのコードを検討する際に考慮すべき相違点を挙げています。

Googleのサービス

Google固有のサービス(位置情報サービスなど)を利用するAPIは、Amazon Fire TVでは使用できません。Amazon Maps APIAmazonモバイル広告APIも、Fire TVではまだサポートされていません。

LeanBack Support Library

Amazon Fire TVでは、AndroidのLeanback Support Libraryを一部サポートしています。たとえば、Fire TVではLeanbackのTV用UIコンポーネントが使用されているため、Leanbackのウィジェットも実行できます。また、Fire TVがLEANBACK_LAUNCHERにタグ付けされたインテントを認識することもできます。しかし、LeanbackのSearchFragment(次のセクションで説明します)はサポートしていません。

Android TVでは、Leanback APIに基づくアプリコントロールが音声検索に使用されます(SearchFragmentによる音声認識など)。ただし、Amazon Fire TVの音声検索はLeanbackのSearchFragmentを使用しません。Fire TVでは、音声検索にAmazon固有のシステムコントロールが使用されます。

ユーザーがFire TVの任意の操作画面(ランチャー、アプリ内など)で音声対応リモコンの [マイク] ボタンを押し、目的のテレビ番組やAlexaアクションを声に出して言うことで、グローバル検索が開始されます。このときに使用されるのはAlexaクラウドサービスであり、Leanbackライブラリの音声認識APIではありません。

音声によるメディアリクエストでは、常にAmazonカタログのコンテンツが返されます。詳細については、Fire TVに検索機能を実装するを参照してください。

Android TVでは、目的のコンテンツをグローバル検索に統合する場合、検索結果のContentProviderをアプリから使用してローカルに実現できます。

一方、Amazon Fire TVでグローバル検索の結果にコンテンツを表示させるには、メディアのコンテンツをAmazonカタログに統合する必要があります。カタログへの送信は、(アプリ内からローカルにではなく)クラウドベースモデルで実現されます。

オーディオフォーカス

一般のミュージックアプリで音楽を再生中にAmazon Fire TV対応アプリを起動しても、そのまま音楽の再生が続きます。[再生/一時停止] ボタンは、アプリのビデオではなく音楽の方を操作することになります。

オーディオフォーカスを取得するには、開発したアプリのマニフェストにMediaButtonReceiverを登録する必要があります。MediaButtonReceiverによって、アプリの起動時にオーディオフォーカスがアプリのメディアサービスに移動します。詳細とコードサンプルについては、オーディオフォーカスを参照してください。

[早送り]、[早戻し]、[メニュー] ボタン

Android TVにもAmazon Fire TVにも、4方向のD-Pad(ナビゲーション)、D-Padの [選択] ボタン、[戻る] ボタン、[再生/一時停止] ボタンが備わっています。これに加えて、Fire TVには [早戻し] ボタン、[早送り] ボタン、[メニュー] ボタンもあります。

Fire TVの [メニュー] ボタンを押すと、Androidのコンテキストメニューが起動し、画面の中央にメニューアイテムのリストが表示されます。[メニュー] ボタンはオーバーライドが可能で、カスタムメニューのユーザーインターフェイスを提供したり、様々な目的に使用できます。

メニューアイテムが1つだけ必要な場合は、単純な切り替えスイッチ(クローズドキャプションのオン/オフなど)として [メニュー] ボタンを使用することもできます。その際に、この機能をユーザーに知らせるヒントを画面に表示することもできます。

アプリ内課金(IAP)

Android TVのアプリ内課金には、通常、Google Play請求サービスが使用されます。Amazon Fire TVのアプリ内課金では、Amazonのアプリ内課金(IAP)APIが使用されます。詳細については、両者の詳しい機能比較を参照してください。

アナリティクス

Android TVでは、分析ソリューションとしてFirebaseが使用されています。Amazon Fire TVでは、Amazon Mobile Analyticsやそのほかの分析パッケージ(Googleアナリティクス、Flurryアナリティクス、Crashlyticsなど)を使用できます。これらの分析パッケージの多くは、Fire App Builderを使用してアプリを開発する際にモジュールとして構成できます。

SDKレベル

Android TVでは、基本的に最新のAndroidバージョン(Nougatベース、APIレベル25)が使用されます。これに対してAmazon Fire TVデバイスでは、Fire OS 5(Lollipopベース、APIレベル22)またはFire OS 6(Nougatベース、APIレベル25)のいずれかを使用できます。各デバイスで使用されているFire OSのバージョンの詳細については、Fire OSのバージョンおよびFire TVのデバイス仕様を参照してください。

おすすめ機能

Android TVとAmazon Fire TVはどちらもホーム画面におすすめを表示できます。さらにFire TVでは、Fire TVだけの豊富なおすすめ拡張機能も提供されています。

エミュレーター

Amazon Fire TV対応アプリのコードをテストするときは、仮想エミュレーターではなく実際のFire TVデバイス(Fire TVセットトップボックスまたはFire TV Stick)を使用することになります。詳細については、adbを使用してFire TVに接続する方法を参照してください。

通知API

Amazon Fire TV対応アプリで通知を作成するには、標準のAndroid通知APIを使用します。Fire TVには、Android TVと同じトースト通知と永続化モデルが備わっています。ただし、Fire TVはトースト通知のほかにもヘッドアップ通知に対応しており、インタラクティブなボタンを利用できます。

さらに、Fire TVでは、古い通知は通知ドロワーには格納されずに通知センターに保存されます。詳細については、Amazon Fire TVの通知機能を参照してください。

アクセシビリティ

Amazon Fire TVは、目の不自由な方にもアプリをご利用いただけるようにVoiceViewという補助機能を提供しています。VoiceViewとユーザー補助機能の詳細については、以下を参照してください。

アプリストア

Android TVデバイスでは、Google Playストアが使用されます。これに対してAmazon Fire TVでは、Amazonアプリストアが使用されます。Google Playストアへのリンクはすべて、Amazonアプリストアへのリンクに変更する必要があります。

アプリのテスト

AndroidアプリとAmazonとの互換性をテストするには、Amazon Fire TVデバイスにアプリをサイドロードします。詳細については、adbを使用してFire TVに接続する方法を参照してください。アプリテストサービスを使用してアプリをテストすることもできます。

adbを介してFire TVデバイスに接続し、Android Studioを使用してアプリを実行すると、正常に開発されたアプリであれば読み込まれ再生されます。サイドロードしたアプリを閉じるには、[設定] > [アプリケーション] > [インストール済みアプリケーションを管理] の順に選択します。