Edited at

Android TVアプリをAmazon Fire TVに対応してみる

More than 1 year has passed since last update.


概要

Android TV(Leanback)アプリをAmazon Fire TV(以下、Fire TV)に対応する方法について記載します。

Fire TVはAndroidベースのOSのうえ、Android TV用のライブラリであるLeanback Support Libraryもサポートしているため、簡単な手直しでFire TVに対応することができます。


Fire TVへのadbの接続方法

Fire TVおよびFire TV Stickへは、Androidでネットワーク越しにadbの接続するのと同じ手順で接続できます。


Macの場合


手順1. Fire TVの設定


  1. Fire TVのトップから[設定] → [システム] → [開発者オプション] → [ADBデバッグ] をオンにする。

  2. 同様に [不明のソースからのアプリ] をオンにする。

  3. [設定] → [システム] → [バージョン情報] → [ネットワーク] でIPアドレスを確認する。


手順2. adbの接続

adb kill-server

adb start-server
adb connect <FireTVのIPアドレス>

接続が確立したらいつも通りにadbの操作やAndroid Studioからのインストールができます。

なお、Fire TVの場合はUSB-A to USB-AケーブルでPCとFire TVを接続することもできるようです(未確認)。


Windowsの場合

最初にドライバのインストールが必要なようです。

詳しくはこちらを参照ください

その後はMacと同じ手順でadbの接続ができるようです(未確認)。


Fire TVへの対応


アプリが実行しているのがFire TVかどうかを確認する

下記のメソッドでFire TVかどうかをチェックできます。

/**

* Fire TVかをチェックする
*
* @return Fire TVの場合はtrue、それ以外はfalse
*/

public static boolean isFireTv(@NonNull Context context) {
return context.getPackageManager().hasSystemFeature("amazon.hardware.fire_tv");
}

Fire TVの機種を判定する場合は android.os.Build.MODEL の返値をチェックします。(ソース)

Model

android.os.Build.MODEL の返値

Fire TV (1st Gen)
"AFTB"

Fire TV (2nd Gen)
"AFTS"

FireTV Stick (1st Gen)
"AFTM"

FireTV Stick (2nd Gen)
"AFTT"

例:

public static boolean isFireTvStich1stGen() {

return android.os.Build.MODEL.equalsIgnoreCase("AFTM");
}


AndroidManifestに起動するActivityを記載する

Fire TVのアプリはAndroidManifestで android.intent.category.LAUNCHER のIntent filterが設定されているActivityが立ち上がります。

Android TVとは異なり android.intent.category.LEANBACK_LAUNCHER を解釈しないので注意が必要です。

Fire TVで起動したいActivityのIntent filterに android.intent.category.LAUNCHER を設定する必要があります。

AndroidとAndroid TV両対応のアプリで、既に android.intent.category.LAUNCHER が設定されている場合は、ProductFlavors でAndroid用とFire TV用のアプリを別々にビルドするようにするのが良いでしょう。


SearchFragment を使用しないようにする

Fire TVでは LeanbackのSearchFragment がサポートされていないようなので、SearchFragmentを使用している場合は、SearchFragmentに到達しないようにする必要があります。

検索機能が必要な場合は、自前で実装する必要がありそうです。


Recommendation しないようにする

Android TVではOSのトップ画面におすすめを表示する際にはRecommendationをOSに対し設定していますが、Fire TVではおすすめ機能がないので Recommendation しないようにします。

なお、 Recommendation をFire TVに設定しても無視されるようなので何もしなくてもいいかもしれません。


その他

Fire TV Development versus Android TV Development を参照ください。

他に対応が必要そうなことについて記載されています。