開発者コンソール

Fire TVデバイスの識別

Fire TVデバイスの識別

ほとんどのAmazon Fire TV対応アプリ開発者は、Google PlayとAmazonアプリストアの両方のマーケットおよびデバイスに同じAndroidベースのコードを使用して、両者に対応するアプリを開発しています。ただし、AmazonデバイスではGoogleのサービスではなくAmazonのサービスとAPIを使用するため、場合によっては異なる方法でコードのターゲットを設定する必要があります。また、Fire OSには次のバージョンが用意されています。

  • Fire OS 5: Android 5.1ベース(Lollipop、APIレベル22)
  • Fire OS 6: Android 7.1ベース(Nougat、APIレベル25)
  • Fire OS 7: Android 9ベース(Pie、APIレベル28)
  • Fire OS 8: Android 10ベース(APIレベル29)およびAndroid 11ベース(APIレベル30)。

このドキュメントでは、機能、モデル、APIレベルに基づくAmazonデバイスの識別について詳しく説明します。各Fire TVデバイスのFire OSバージョンについては、Fire TVのデバイス仕様を参照してください。

Amazon Fire TVデバイスを確認する理由

場合によっては、以下のようなさまざまな理由で、Amazon Fire TVデバイスをコードで確認する必要があります。

  • Fire OS 8デバイスでのみサポートされているAndroid 10(APIレベル29)またはAndroid 11(APIレベル30)の機能を使用するため。
  • Fire OS 7デバイスでのみサポートされているPie固有(APIレベル27以上)の機能を使用するため。
  • Fire OS 6デバイスでのみサポートされているNougat固有(APIレベル25以上)の機能を使用するため。
  • アプリがonPause()メソッドでDRMとHWのデコードパイプラインを切断する必要があるかどうかを判断するため(これは、Fire TVの第1世代では複数のDRMコンテキストを適切に処理できないために必要になります)。

機能とモデルによるAmazonデバイスの識別

amazon.hardware.fire_tvが機能として存在するかどうかを調べれば、Amazon Fire TVデバイスを識別できます。また、android.os.Build.MODELからパターンを選択することも可能です。各デバイスのビルドモデルについては、Fire TVのデバイス仕様を参照してください。次の画像は、各デバイスのビルドモデルを示したものです(このダイアログは、APKを開発者コンソールにアップロードすると表示されます)。

Fire TVデバイスのモデル名
Fire TVデバイスのモデル名
Fire TVデバイス ビルドモデル Androidレベル Fire OSのバージョン
Redmi 108cm(43インチ)4K Ultra HD smart LED Fire TV(2023、日本未対応) AFTBTX4 Androidレベル28(Android 9) Fire OS 7
TCL Class S3 1080p LEDスマートTV(Fire TV搭載)(2023、日本未対応) AFTMD002 Androidレベル28(Android 9) Fire OS 7
Fire TV Stick 4K Max - 第2世代(2023)- 16GB AFTKRT Androidレベル30(Android 11) Fire OS 8
Fire TV Stick 4K - 第2世代(2023)- 8GB AFTKM Androidレベル30(Android 11) Fire OS 8
TCL 32インチFHD、40インチFHD Fire TV(2023、日本未対応) AFTSHN02 Androidレベル28(Android 9) Fire OS 7
Fire TV - TCL S4シリーズ4K UHD HDR LED(2023) AFTMD001 Androidレベル28(Android 9) Fire OS 7
Fire TV - TCL Q6 4K QLED HDR(2023、日本未対応) AFTMD001 Androidレベル28(Android 9) Fire OS 7
Fire TV 2-Series(2023、日本未対応) AFTKA002/AFTKAUK002 Androidレベル28(Android 9) Fire OS 7
Toshiba 4K UHD - Fire TV(2022、日本未対応) AFTHA004 Androidレベル28(Android 9) Fire OS 7
BMW(2022) AFTLBT962E2 Androidレベル28(Android 9) Fire OS 7
Echo Show 15(2021) AEOHY Androidレベル28(Android 9) Fire OS 7
Fire TV Omni QLED Series(2022、日本未対応) AFTTIFF43 Androidレベル28(Android 9) Fire OS 7
Fire TV Cube - 第3世代(2022) AFTGAZL Androidレベル28(Android 9) Fire OS 7
Xiaomi F2 4K - Fire TV(2022、日本未対応) AFTANNA0 Androidレベル28(Android 9) Fire OS 7
Hisense U6 4K UHD - Fire TV(2022、日本未対応) AFTHA001 Androidレベル28(Android 9) Fire OS 7
フナイ4K - Fire TV(2022) AFTMON001、AFTMON002 Androidレベル28(Android 9) Fire OS 7
JVC 4K - Fire TV with Freeview Play(2021、日本未対応) AFTJULI1 Androidレベル28(Android 9) Fire OS 7
ok 4K - Fire TV(2021、日本未対応) AFTANNA0 Androidレベル28(Android 9) Fire OS 7
Toshiba 4KファーフィールドUHD - Fire TV(2021、日本未対応) AFTHA003 Androidレベル28(Android 9) Fire OS 7
Fire TV Stick 4K Max - 第1世代(2021) AFTKA Androidレベル28(Android 9) Fire OS 7
Stellantis(Jeep)- Wagoneer/Grand Wagoneer(日本未対応) AFTLFT962X3 Androidレベル28(Android 9) Fire OS 7
Fire TV Omni Series(2021、日本未対応) AFTTIFF43 Androidレベル28(Android 9) Fire OS 7
Fire TV 4-Series(2021、日本未対応) AFTTI43 Androidレベル28(Android 9) Fire OS 7
Toshiba 4K UHD - Fire TV(2021、日本未対応) AFTHA001 Androidレベル28(Android 9) Fire OS 7
AmazonBasics 4K - Fire TV(2020、日本未対応) AFTPR001 Androidレベル28(Android 9) Fire OS 7
AmazonBasics HD/FHD - Fire TV(2020、日本未対応) AFTBU001 APIレベル25(Android 7.1) Fire OS 6
Technika 4K - Fire TV(2020、日本未対応) `` Androidレベル28(Android 9) Fire OS 7
JVC 2K - Fire TV(2020、日本未対応) AFTWMST22 Androidレベル28(Android 9) Fire OS 7
Onida HD/FHD - Fire TV(2020、日本未対応)<2サイズ展開> AFTTIFF55 APIレベル25(Android 7.1) Fire OS 6
ok 4K - Fire TV(2020、日本未対応) AFTWI001 Androidレベル28(Android 9) Fire OS 7
Fire TV Stick - 第3世代(2020) AFTSSS Androidレベル28(Android 9) Fire OS 7
Fire TV Stick Lite(日本未対応)- 第1世代(2020) AFTSS Androidレベル28(Android 9) Fire OS 7
Toshiba 4K UHD - Fire TV(2020、日本未対応) AFTDCT31 Androidレベル28(Android 9) Fire OS 7
Insignia 4K UHD - Fire TV(2020、日本未対応) AFTDCT31 Androidレベル28(Android 9) Fire OS 7
Fire TV Stick - 第2世代(2016~2019) AFTT Androidレベル22(Android 5.1) Fire OS 5
Toshiba HD - Fire TV(2018~2020、日本未対応) AFTBAMR311 APIレベル25(Android 7.1) Fire OS 6
Insignia HD - Fire TV(2018~2020、日本未対応) AFTEAMR311 APIレベル25(Android 7.1) Fire OS 6
Toshiba 4K - Fire TV(2018~2019、日本未対応) AFTKMST12 APIレベル25(Android 7.1) Fire OS 6
Onida HD - Fire TV(2019、日本未対応) AFTLE APIレベル25(Android 7.1) Fire OS 6
Fire TV Cube - 第2世代(2019) AFTR Androidレベル28(Android 9) Fire OS 7
Grundig OLED 4K - Fire TV(2019、日本未対応) AFTEUFF014 Androidレベル28(Android 9) Fire OS 7
Grundig Vision 7, 4K - Fire TV(2019、日本未対応) AFTEU014 Androidレベル28(Android 9) Fire OS 7
JVC 4K - Fire TV(2019、日本未対応) AFTSO001 Androidレベル28(Android 9) Fire OS 7
Nebulaサウンドバー - Fire TV Edition(2019、日本未対応) AFTMM APIレベル25(Android 7.1) Fire OS 6
Grundig Vision 6 HD - Fire TV(2019、日本未対応) AFTEU011 Androidレベル28(Android 9) Fire OS 7
Insignia 4K - Fire TV(2018、日本未対応) AFTJMST12 APIレベル25(Android 7.1) Fire OS 6
Fire TV Cube - 第1世代(日本未対応)(2018) AFTA APIレベル25(Android 7.1) Fire OS 6
Fire TV Stick 4K - 第1世代(2018) AFTMM APIレベル25(Android 7.1) Fire OS 6
Fire TV Stick - Basic Edition(日本未対応、2017) AFTT Androidレベル22(Android 5.1) Fire OS 5
Element 4K - Fire TV(2017、日本未対応) AFTRS Androidレベル22(Android 5.1) Fire OS 5
Fire TV - 第3世代(2017) AFTN APIレベル25(Android 7.1) Fire OS 6
Fire TV - 第2世代(2015) AFTS Androidレベル22(Android 5.1) Fire OS 5
Fire TV Stick - 第1世代(2014) AFTM Androidレベル22(Android 5.1) Fire OS 5
Fire TV - 第1世代(2014) AFTB Androidレベル22(Android 5.1) Fire OS 5
TCLサブウーファー内蔵サウンドバー - Fire TV Edition(2019、日本未対応) AFTMM APIレベル25(Android 7.1) Fire OS 6
Toshiba V35 Series LED FHD/HD - Fire TV(2021、日本未対応) AFTHA002 Androidレベル28(Android 9) Fire OS 7

amazon.hardware.fire_tvという機能を確認することで、すべてのFire TVデバイスを識別できます。この機能を取得するには、ContextオブジェクトのgetPackageManager()メソッドを呼び出し、hasSystemFeature()からcom.hardware.amazon.fire_tvが返されるかどうかを確認します。以下にコードのサンプルを示します。

final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv";

if (getPackageManager().hasSystemFeature(AMAZON_FEATURE_FIRE_TV)) {
 Log.v(TAG, "はい、これはFire TVデバイスです。");
} else {
 Log.v(TAG, "いいえ、これはFire TVデバイスではありません。");
}

android.os.Build.MODELBuild.MANUFACTURER(これはAmazonを返します)を組み合わせることでも、Fire TVデバイスを識別できます。

ただし、Amazon以外のメーカーによってますます多くのAmazon対応デバイスが市場に投入されるようになるにつれて、android.os.Build.MODELBuild.MANUFACTURERの組み合わせでは正しく識別できない可能性も出てきました。そのため、将来のAmazon Fire TVデバイスにも対応できる、com.hardware.amazon.fire_tv機能に基づいたフォールバックアプローチを含めておくようにします。こちらは、モデルを調べるための代替アプローチを取り入れたコードの例です。

final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv";
String AMAZON_MODEL = Build.MODEL;

if (AMAZON_MODEL.matches("AFTN")) {
 Log.v(TAG, "はい、これはFire TVの第3世代デバイスです");
} else if (getPackageManager().hasSystemFeature(AMAZON_FEATURE_FIRE_TV)) {
 Log.v(TAG, "はい、これはFire TVデバイスです。");
} else {
 Log.v(TAG, "いいえ、これはFire TVデバイスではありません");
}

APIレベルの確認

Android APIレベルに応じた条件付き動作を実装するために、SDK_INTを使用してデバイスのAPIレベルを確認します。たとえば、バージョンのAPIレベルが25以上かどうかを調べるには、次のコードを使用します。

if (Build.VERSION.SDK_INT >= 25) {
 Log.v(TAG, "はい、これはAPIレベル25以上のデバイスです");
} else {
 Log.v(TAG, "いいえ、これはAPIレベル25以上のデバイスではありません");
}

このコードの場合、Fire OS 6以上(APIレベル25以上)がターゲットとなり、Fire OS 5デバイス(APIレベル22)は除外されます。Fire OS 5デバイスのみをターゲットにするには、ロジックを少し変えます。

if (Build.VERSION.SDK_INT <= 22) {
 Log.v(TAG, "はい、これはAPIレベル22以下のデバイスです");
} else {
 Log.v(TAG, "いいえ、これはAPIレベル22以下のデバイスではありません");
}

4Kに対応しているかどうかを確認

4K対応かどうかを確認するには、Androidの標準APIであるDisplay.Modeを使用します。これはAndroid 6.0で導入されたものです。Display.Modeでは、アプリが実際のディスプレイサイズに関する問い合わせを行い、別のHDMI表示モードに切り替えることができます。

Fire OS 5デバイス(Display.Modeがリリースされる前のAndroid 5.1ベース)の場合、Display.Modeも使用可能(これらのAPIをFire OSにバックポートしているため)ですが、その際はリフレクションを行ってください。4K拡張ライブラリも使用できます。このライブラリでは、リフレクションによってこれらのAndroid APIをラップし、API用のシンプルなインターフェイスを提供しています。詳細については、APIs for HDMI Mode Switchを参照してください。

プロパティおよび機能を確認するadbコマンド

デバイスに存在するプロパティや機能をADBで確認するには、以下を行います。

  1. ADBに接続します。
  2. デバイスのプロパティを確認するには、adb shell getpropを実行します。
  3. デバイスの機能を確認するには、adb shell pm list featuresを実行します。

Last updated: 2024年2月9日