Fire TVとAndroid TVにおける開発の違い
Amazon Fire TVとAndroid TVはどちらもAndroidベースのため、同じAndroidアプリをAmazonアプリストアとGoogle Playストアの両方で配信可能で、アプリの知名度やダウンロード件数の大幅な上昇も見込めます。
ただし、Fire TVにはコードで考慮すべき違いがいくつかあります。これらの違いは、たとえばハードウェアやサービスを構成する独自の要素に起因しています。一方のサービスには存在する機能がもう一方のサービスにはない場合もあります。異なるサービスではあるものの、同等の働きをするものもあります。
コードの中でこうした違いに対応するには、Amazon Fire TVデバイスを識別し、それに応じて異なるデバイスおよび動作に合わせてコーディングする必要があります。
- Amazon Fire TVとAndroid TVの違い
- Googleのサービス
- LeanBack Support Library
- 音声検索
- グローバル検索
- オーディオフォーカス
- 早送り、早戻し、メニューボタン
- アプリ内課金
- アナリティクス
- Firebase
- SDKレベル
- おすすめ機能
- エミュレーター
- 通知API
- アクセシビリティ
- アプリストア
- アプリのテスト
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 APIやAmazonモバイル広告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日