開発者コンソール

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とは、TV用に最適化されたAndroidオペレーティングシステムのことです(Lollipop以降のバージョン)。Android LollipopとLeanback Support Libraryには、TVのプラットフォームに合わせてAndroidを最適化する機能が備わっています。Android TVは、TVデバイス単体でネイティブOSとして実行できるほか、TVからセットトップボックスを介してAndroidを実行することができます。Android TVの詳細については、Wikipediaを参照してください。
  • Amazon Fire TVとは、TVでFireオペレーティングシステム(OS)を実行するFire TVセットトップボックスまたはFire TV Stickを指します。Fire OSには、 Fire OS 5、Fire OS 6、Fire OS 7という3つのバージョンがあります。Fire OS 5はAndroid 5.1(APIレベル22)を、Fire OS 6はAndroid 7.1(APIレベル25)を、Fire OS 7はAndroid 9(APIレベル28)をそれぞれベースにしています。Fire OSもAndroidオペレーティングシステムをベースにしていますが、Amazonのハードウェアやサービスにも対応できるという違いがあります。FireタブレットでもFire OS 5が使用されています。ただし、TVプラットフォームでの「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の任意の操作画面(ランチャー、アプリ内など)で音声対応リモコンのマイクボタンを押し、目的の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つだけ必要な場合は、単純な切り替えスイッチ(クローズドキャプションのオン/オフなど)としてメニューボタンを使用することもできます。その際に、この機能をユーザーに知らせるヒントを画面に表示することもできます。

アプリ内課金

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

アナリティクス

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

Firebase

アプリでFirebase SDKを使用していて、引き続きFirebaseを使用する場合は、代替手段の実装が必要になる可能性があります。一部のFirebase SDKはGoogle Play開発者サービスに依存していますが、このサービスはAmazonデバイスでは使用できません。

Firebase SDKを使用している場合は、まず、そのFirebase SDKにGoogle Play開発者サービスが必要かどうかを特定します。使用するサービスや機能がGoogle Play開発者サービスを必要としていなければ、Amazonデバイスでも引き続き使用できます。Firebase SDKがGoogle Play開発者サービスを必要としている場合は、代替プロダクトを使用するか、AmazonデバイスでFirebase機能を無効にすることができます。

使用しているFirebase SDKがサポート対象かどうかを確認する方法と、同等の機能や代替手段については、「既存のAndroidアプリをFire OSに移植する方法」のFirebaseと代替ライブラリを参照してください。

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を使用してアプリを実行すると、正常に開発されたアプリであれば読み込まれ再生されます。サイドロードしたアプリを閉じるには、[設定] > [アプリケーション] > [インストール済みアプリケーションを管理] の順に選択してください。


Last updated: 2023年5月31日