Fire TVデバイスの識別
ほとんどのAmazon Fire TV開発者は、Amazonアプリストア向けのアプリと他のオンラインマーケットプレイス向けのアプリを同時に開発しています。
Fire OSを実行しているFire TVデバイスの場合は、同じAndroidベースのコードを使用して、両方のアプリマーケットとデバイスを対象にGoogle Play向けのアプリも開発します。ただし、AmazonデバイスではGoogleのサービスではなくAmazonのサービスとAPIを使用するため、環境に応じた方法でコードを作成する必要があります。また、Fire OSには次のバージョンが用意されています。
- Androidオープンソースプロジェクト(AOSP)14: Android 14ベース(APIレベル34)、Android 13ベース(APIレベル33)、Android 12Lベース(APIレベル32)およびAndroid 12ベース(APIレベル31)
- Fire OS 8: Android 11ベース(APIレベル30)およびAndroid 10ベース(APIレベル29)
- Fire OS 7: Android 9ベース(Pie、APIレベル28)
- Fire OS 6: Android 7.1ベース(Nougat、APIレベル25)
- Fire OS 5: Android 5.1ベース(Lollipop、APIレベル22)
このドキュメントでは、機能、モデル、APIレベルに基づくAmazonデバイスの識別について詳しく説明します。各Fire TVデバイスに搭載されているOSバージョンの詳細については、Fire TVのデバイス仕様を参照してください。
Amazon Fire TVデバイスを確認する理由
Fire OSを実行している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デバイスを識別できます。Fire OSを実行しているFire TVデバイスの場合、android.os.Build.MODEL
のパターンを使用することもできます。各デバイスのビルドモデルについては、Fire TVのデバイス仕様を参照してください。
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デバイスではありません。");
}
Fire OSを実行しているFire TVデバイスの場合、android.os.Build.MODEL
を確認して識別することもできます。ただし、Amazon以外のメーカーによって市場に投入されるAmazon対応デバイスが増えているため、android.os.Build.MODEL
が機能しないケースもあります。
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レベルの確認
Fire OSを実行しているFire TVデバイスの場合、Android APIレベルに基づいて条件付き動作を実装できます。デバイスのAPIレベルを確認するには、SDK_INTを使用してください。たとえば、バージョンの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に対応しているかどうかを確認
Fire OSを実行しているFire TVデバイスの場合、4Kがサポートされているかどうかを確認するには、標準のAndroid Display.Mode APIを使用します。このAPIはAndroid 6.0で導入されました。Display.Mode
は、アプリが実際のディスプレイサイズに関する問い合わせを行い、別のHDMI表示モードに切り替えられるようにします。
Fire OS 5デバイス(Display.Mode
がリリースされる前のAndroid 5.1ベース)でもDisplay.Mode
を使用できます(このAPIをFire OSにバックポートしているため)が、その場合はリフレクションを使用する必要があります。Amazonは、リフレクションを使用してこのAndroid APIをラップし、このAPI用のシンプルなインターフェイスを提供する4K拡張ライブラリを用意しています。詳細については、APIs for HDMI Mode Switchを参照してください。
プロパティおよび機能を確認するadbコマンド
デバイスに存在するプロパティや機能をADBで確認するには、以下を行います。
- ADBに接続します。
- デバイスのプロパティを確認するには、
adb shell getprop
を実行します。 - デバイスの機能を確認するには、
adb shell pm list features
を実行します。
Last updated: 2025年9月30日