概要
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の設定
- Fire TVのトップから[設定] → [システム] → [開発者オプション] → [ADBデバッグ] をオンにする。
- 同様に [不明のソースからのアプリ] をオンにする。
- [設定] → [システム] → [バージョン情報] → [ネットワーク] で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 を参照ください。
他に対応が必要そうなことについて記載されています。