识别Fire TV设备(不在中国发售)
大多数亚马逊Fire TV开发者都会同时为亚马逊应用商店和其他在线市场开发应用。
对于运行Fire OS的Fire TV设备,开发者还会使用基于Android的相同代码为Google Play构建应用,这些代码同时适用于两个应用市场和两类设备。由于亚马逊设备不使用Google服务,而是使用亚马逊服务和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级别识别亚马逊设备的详细信息。在Fire TV设备规格中,可找到有关Fire TV设备相应操作系统版本的详细信息。
检查亚马逊Fire TV设备的原因
对于运行Fire OS的Fire TV设备,出于以下多种原因,应在代码中对亚马逊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和硬件解码管道。由于对多个DRM上下文处理能力有限,Fire TV第一代需要对解码管道进行解构。
按特性和型号识别亚马逊设备
可通过查找amazon.hardware.fire_tv
特性,识别亚马逊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
加以识别。但是,随着越来越多由亚马逊提供技术支持、由非亚马逊制造商生产的设备上市,使用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级别的条件行为。使用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
对于运行Fire OS的Fire TV设备,可以使用标准Android Display.Mode API检查是否支持4K。这些API是在Android 6.0中引入的。借助Display.Mode
,应用可查询物理显示屏尺寸并切换到不同的HDMI显示模式。
对于Fire OS 5设备(基于Android 5.1,在Display.Mode
发布之前推出),Display.Mode
同样适用(由于这些API向后移植到Fire OS),但必须使用反射。亚马逊提供了一个4K扩展库,可利用反射机制封装Android API,并提供简单的接口。有关更多详细信息,请参阅用于HDMI模式切换的API。
使用adb命令检查属性或功能
若需使用adb查看设备所具有的属性或功能,可执行以下操作:
- 连接到ADB。
- 如需查看设备的属性,请运行
adb shell getprop
。 - 如需查看设备的功能,请运行
adb shell pm list features
。
Last updated: 2025年9月30日