开发者控制台

Fire TV开发与Android TV开发有何不同


Fire TV开发与Android TV开发有何不同

由于Amazon Fire TV和Android TV都使用Android系统,因此可以将同一个Android应用推送到亚马逊应用商店和Google Play Store。若亚马逊和谷歌应用商店均有应用,则更容易发现,增大下载量。

但是,您需要在代码中考虑与Fire TV的差异。其中一些差异,是由于硬件或服务中的独特元素造成的。某些情况下,某服务有另一项服务没有的功能,或者该服务使用不同但相当的功能。

针对这些差异编程时,请注意,可标识Amazon Fire TV设备,调整代码,以适应不同设备和特性。

Amazon Fire TV和Android TV有何不同?

首先,让我们澄清Android TV和Amazon Fire TV的含义:

  • Android TV是指已经针对电视优化的Android操作系统(从Lollipop开始,一直延续到Nougat及更高版本)。Android Lollipop和Leanback支持库提供了针对Android版电视平台优化的功能。电视设备本身能够以原生操作系统运行Android TV,也能通过机顶盒运行Android。您可以在维基百科上了解更多关于Android TV的信息。
  • Amazon Fire TV是指在电视机上运行Fire操作系统(OS)的Fire TV机顶盒或电视棒。Fire OS有三个版本: Fire OS 5、Fire OS 6和Fire OS 7。Fire OS 5为Android 5.1(API级别22)的分支,而Fire OS 6基于Android 7.1(API级别25),Fire OS 7基于Android 9(API级别28)。Fire OS采用相同Android系统,也兼顾亚马逊硬件和服务。大多数Fire平板电脑也运行Fire OS 5,但未利用“10英尺媒体体验”特色(通常电视平台上才有)。(您可以了解有关Fire OS的更多信息或参阅Fire TV设备规格。)

重要的是,Android TV和Amazon Fire TV都基于Android,因此应用所采用技术的相似性远超过差异。

以下介绍规划Fire TV时,代码中需考虑的差异。

Google服务

依赖Google特定服务(例如Google定位服务)的API,在Amazon Fire TV上均不可用。虽然有Amazon Maps API亚马逊移动广告API,但Fire TV尚不支持这些API。

LeanBack支持库

Amazon Fire TV仅支持部分Android Leanback支持库。例如,Fire TV使用Leanback的电视特定UI组件,Leanback小部件将起作用,而Fire TV将遵守为LEANBACK_LAUNCHER标记的意图,但不支持Leanback的SearchFragment(在下一节中介绍)。

对于语音搜索,Android TV使用依赖于Leanback API的应用控件(例如,使用SearchFragment进行语音识别)。但是,Amazon Fire TV上的语音搜索不使用Leanback的SearchFragment。在Fire TV上,语音搜索使用亚马逊特定的系统控件

无论用户在Fire TV上的哪个位置(无论是在启动器上还是应用中),当用户按下支持语音的遥控器上的麦克风按钮并说出他们想要的电视节目或Alexa操作时,此操作都会使用Alexa云服务来启动全局搜索,而不是使用Leanback库中的语音识别API。

通过语音发起的媒体请求始终返回Amazon Catalog中的内容。有关更多详细信息,请参阅在Fire TV中实现搜索

在Android TV上,要将您的内容集成到全局搜索中,您可以使用搜索结果ContentProvider通过您的应用在本地进行。

在Amazon Fire TV上,要在全球搜索结果中显示您的内容,必须将您的媒体内容与Amazon Catalog集成。提交到目录,是通过基于云的模型完成(不在应用中本地完成)。

音频焦点

若启动应用之前,开始从音乐应用播放音乐,Amazon Fire TV将继续在应用上播放音乐。“播放/暂停”按钮将控制音乐,而不是应用中的视频。

要接收音频焦点,应用必须在清单中注册MediaButtonReceiverMediaButtonReceiver将在应用启动时将音频焦点转移到应用的媒体服务。更多详细信息和代码示例,请参阅音频焦点

快进、倒回和菜单按钮

Android TV和Amazon Fire TV都有4向方向键(dpad)、dpad_center/选择、返回和播放/暂停按钮。但是,Fire TV还提供可选择使用的倒回、快进和菜单按钮。

Fire TV上的“菜单”按钮调用Android上下文菜单,该菜单显示为屏幕中心的菜单项列表。您可以覆盖菜单按钮以提供自己的自定义菜单用户界面,或用于任何其他目的。

如果只有一个菜单项,请考虑使用“菜单”按钮作为简单的切换,例如,打开或关闭隐藏式字幕。如果执行此操作,请考虑提供屏幕上的提示以向用户公开此功能。

应用内购买

Android TV通常使用Google Play Billing进行应用内购买。对于Amazon Fire TV上的应用内购买,您可以使用亚马逊的应用内购买(IAP) API。有关更多信息,您可以查看二者的详细比较

分析

Android TV使用Firebase进行分析。在Amazon Fire TV上,您可以使用亚马逊移动分析或其他分析包(Google Analytics、Flurry分析、Crashlytics等)。如果您使用Fire App Builder构建应用,其中许多分析包都可以配置为模块。

Firebase

如果您目前在应用中使用了Firebase,并希望继续使用Firebase,则可能需要实施一些替代方案。原生Firebase SDK依赖于Google Play服务,而这些服务在亚马逊设备上不可用。如果使用的是原生Firebase SDK,可供选择的方法主要有三种:

  1. 尽量选用Firebase JavaScript SDK: 推荐采用这种方法,因为您可以通过它来继续使用已在其他应用商店中实施的功能。但是,与原生SDK相比,JavaScript SDK中的功能有时可能会受到限制。
  2. 使用替代产品: 如果JavaScript SDK不受支持,可能只有选择这种方法才能使用必备功能。
  3. 在亚马逊设备上禁用Firebase: 这可能是最简可行方法,您可以通过它来了解您的亚马逊用户,并构建投资替代Firebase产品的案例。

请参阅“将现有应用迁移到亚马逊应用商店”中的Firebase备选方案,查看Firebase同等服务和替代方案的详细列表。

SDK级别

Android TV通常运行Android系统的最新版本(Nougat或API级别25)。相比之下,Amazon Fire TV设备可以运行Fire OS 5(基于Lollipop,API级别22)或Fire OS 6(基于Nougat,API级别25)。有关哪些设备使用哪些版本的Fire OS的信息,请参阅Fire OS版本Fire TV设备规格

推荐

Android TV和Amazon Fire TV都允许应用在主屏幕上进行推荐。Fire TV还提供许多特定于Fire TV的增强推荐功能

模拟器

在测试Amazon Fire TV应用代码时,可采用实际Fire TV设备(机顶盒或电视棒),而非虚拟模拟器。有关更多详细信息,请参阅通过ADB连接到Fire TV

通知API

您可以使用标准的Android通知API为您的Amazon Fire TV应用创建通知。Fire TV提供与Android TV相同的toast通知和持久性模型。不过,除了toast之外,Fire TV还提供提醒通知,这种通知允许交互式按钮。

此外,在Fire TV上,旧通知不是放在通知抽屉中,而是存储在通知中心。在Amazon Fire TV的通知中了解更多信息。

无障碍功能

Amazon Fire TV提供VoiceView,让视障人士能够访问您的应用。通过本节,可了解有关VoiceView和无障碍功能详细情况:

应用商店

Android TV设备使用Google Play Store,而Amazon Fire TV使用亚马逊应用商店。指向Google Play Store的任何链接,均需链接到亚马逊应用商店。

测试应用

可通过在Amazon Fire TV设备上侧载Android应用,测试该应用与亚马逊的兼容性。请参阅通过ADB连接到Fire TV。也可通过应用测试服务来测试您的应用。

通过ADB连接到Fire TV设备并使用Android Studio运行您的应用时,会加载并运行一个成功的应用。如果关闭侧载的应用,则可以通过转到“Settings”(设置)>“Applications”(应用)>“Manage Installed Applications”(管理已安装的应用)来找到它。