开发人员控制台

常见问题解答(FAQ)


常见问题解答(FAQ)

一般问题

问: 如何向Amazon Fire TV平台提交我的应用?
向Amazon Fire TV设备提交应用前,请在亚马逊应用和游戏开发者门户上创建一个账户,然后通过该门户提交应用。

如果您已经在亚马逊上发布了应用,请更新并加入适用于Amazon Fire TV的单独APK。 有关更多信息,请参阅使用设备定向

问: 我的应用是否可以在Amazon Fire TV平台上运行?
确保您的应用与Amazon Fire TV设备的规格兼容。请参阅设备规格,了解详细的设备和功能规格。

您的应用必须符合亚马逊应用商店内容政策要求。亚马逊还建议您自行测试应用。如发现任何问题,请提交更新。

问: 如何识别我的应用是否在Amazon Fire TV设备上运行?
您可以检查amazon.hardware.fire_tv功能。如须查找具体的Fire TV型号,可以检查型号或模式,但须始终包含amazon.hardware.fire_tv功能的回退。欲了解更多信息,请参阅识别Amazon Fire TV设备
问: 我可以将我的应用加载到Amazon Fire TV上测试吗?
可以。请使用Android调试桥(adb)。 欲了解更多信息,请参阅开发Fire TV应用和游戏入门。 
问: 是否有可供开发者使用的Amazon Fire TV测试设备?
亚马逊不为开发者提供测试设备。

可从美国英国德国的亚马逊零售网站上购买Amazon Fire TV设备。查看商品详情页面,了解特定国家/地区的供货情况。

问: Amazon Fire TV平台支持哪些特定功能?
请参阅设备规格,了解详细的设备和功能规格。Fire TV是基于Android系统的,几乎包含了Android系统的所有功能。注意,Fire OS有两个版本: Fire OS 5基于Android 5.1(Lollipop,API级别22)。Fire OS 6基于Android 7.1(Nougat,API级别25)。更多详细信息,请参阅开发运行Fire OS 6的Amazon Fire TV设备。另须注意,Fire TV不支持谷歌服务(如谷歌地图或谷歌应用内计费)。对于同等服务,请使用Amazon开发工具包。更多详细信息,请参阅Fire TV开发与Android TV开发有何不同
问: 哪些应用模板可用于快速构建Fire TV应用?
您可以使用Fire App Builder作为构建Fire TV应用的基础模板。
问: 如何在Amazon Fire TV平台上销售我的应用?
查看推广您的应用
问: 如何获取有关Amazon Fire TV平台的更多信息?
关于每一Fire TV设备的硬件、软件和媒体规格的详细信息,请参阅Fire TV设备规格页面
问: 什么情况下须暂停我的应用?如何暂停?
当按下其中一个Fire TV遥控器或Amazon Fire游戏控制器上的麦克风(语音搜索)或主页按钮时,应用将暂停(请参阅遥控输入)。“后退”按钮也会暂停当前活动,并恢复堆栈上的前一个活动,该活动可能是也可能不是您的应用。

要处理暂停行为,在活动中执行onPause()方法(与执行其他Android应用一样)。执行onPause()方法时,请确保已保存用户状态或位置,以便当应用恢复时,用户处于暂停前的相同位置。

此外,媒体应用须满足以下要求:

  • 播放视频的应用应暂停播放,并且必须在暂停时立即释放所有媒体资源(如解码器),因为这些有限的资源是基于硬件的,并且内存有限。详细信息,请参阅释放媒体播放器MediaPlayer.release()
  • 播放音频的应用可在暂停后继续播放,但如有其他应用要求,则必须放弃音频焦点。详细信息,请参阅音频焦点
问: 我可以在Fire TV应用中使用亚马逊应用内购买API吗?
可以,亚马逊的应用内购买(IAP) API适用于所有Fire TV设备,以及Fire TV遥控器和游戏控制器。对于网页应用,您可以使用App Tester来预览您的交易。
问: 我可以在我的Fire TV应用中使用Amazon Device Messaging (ADM)吗?
您可以使用Amazon Device Messaging接收推送消息和其他数据。
问: 我可以在我的Fire TV应用中使用Amazon Maps API吗?
Amazon Fire TV中没有定位服务,因此不支持Amazon Maps API
问: 我可以在我的Fire TV应用中使用亚马逊移动广告API吗? 
Fire TV不支持亚马逊移动广告API
问: 我可以链接到亚马逊应用商店中我的应用详情页面吗?
是的,亚马逊应用商店提供所有应用的深层链接。有关深层链接的更多信息,请参阅从您的应用中链接到亚马逊。但请注意,您的应用不得提示用户进行评分。用户可从应用的概览屏幕对您的应用进行评分。
问: 如何将屏幕键盘更改为数字键盘?
您可以使用标准的Android机制为所有EditText小部件配置IME(输入法编辑器)。在XML中,使用android:inputType="number"
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edittext"
android:inputType="number"/>
问: 如何在Amazon Fire TV上截图?
更多详细信息,请参阅在Fire设备上截图
问: 我的应用使用谷歌的应用内购买技术。这一技术可否在Amazon Fire TV平台上运行?
不能。谷歌的应用内购买API等服务需要访问谷歌移动服务,这些服务在Amazon Fire TV平台上无法使用。亚马逊提供了应用内购买API。通过这一API,您可以轻松地在您的应用内提供数字内容和订阅。更多详细信息,请参阅Fire TV开发与Android TV开发有何不同
问: 在德国和/或奥地利为Amazon Fire TV或Fire TV Stick推广应用时,是否有其他要求?
是。​如果相关应用允许将任何类型的视频或音频内容进行复制、录制、下载、存储到Amazon Fire TV或Fire TV Stick设备、任何SD存储卡或任何连接的外部存储(如适用)上,或者执行类似操作,我们不允许在德国和/或奥地利的Amazon Fire TV或Fire TV Stick上推广该应用。如果我们确定某个应用包含此功能,我们将不会让该应用出现在德国和/或奥地利。

Fire OS

问: Fire OS是否支持Android TV和v17 Leanback库?
Fire OS 5和Fire OS 6支持Android TV功能和Leanback库。但不支持使用Leanback库的SearchFragment类进行语音识别。更多详细信息,请参阅在Fire TV中实现搜索

媒体和DRM

问: Fire TV支持哪些第三方媒体播放器开发工具包?
任何实现Android媒体播放和加密API的媒体播放器开发工具包都可以在Amazon Fire TV平台上运行。  这些开发工具包包括Amazon ExoPlayer端口Android MediaPlayerVisualOn OnStream MediaPlayer+ SDKNexStreaming NexPlayer SDK。请参阅媒体播放器,以了解更多详细信息。如果您使用的是自定义媒体播放器,请参阅音频和视频同步
问: 通过什么选项来实现使用Microsoft PlayReady DRM加密的媒体的播放功能?
Amazon Fire TV平台支持用来播放受保护媒体的Android MediaCrypto类,您也可以使用支持PlayReady的第三方媒体播放器开发工具包。须了解哪些Fire TV设备支持哪些版本的PlayReady,请参阅Fire TV设备规格中的媒体规格表。
问: Amazon Fire TV是否支持使用加密音频的PlayReady内容?
Fire TV支持包含加密视频和明文(非加密)音频的PlayReady内容。此外,还支持Widevine DRM。更多详细信息,请参阅Fire TV设备规格。如果您需要播放包含加密音频和视频的内容,请联系我们
问: 如何在Fire TV设备上解码Dolby Digital音频?
Fire TV和Fire TV Stick均包含Dolby Digital (AC3)和Dolby Digital Plus (eAC3)的解码器。Fire TV(第3代)还支持Dolby Atmos (EC3_JOC)。您应该可以使用标准的Android媒体播放器库播放这些格式。请注意,Fire TV设备不支持(或不需要)适用于Amazon Fire平板电脑的DolbyAudioProcessing开发工具包。有关播放杜比内容的更多信息,请参阅杜比集成指南
问: 设备是否支持安全启动以验证固件和操作系统?
是。​
问: 操作系统是否强制执行应用的签名检查?
是。​
问: 输出HDCP是否受HDMI上的安全通道保护?
是。​
问: Amazon Fire TV是否支持可定制的隐藏式字幕(CEA-708)?
目前,Fire TV拥有有限的平台级隐藏式字幕支持。媒体应用负责并且必须实现UI,使观看者能够通过第三方媒体播放开发工具包或他们自己的操作来定制字幕。

如果您使用的是Amazon ExoPlayer端口,请注意,4K流(DASH)的字幕样式通过ExoPlayer的嵌入式样式处理。如要忽略嵌入样式,可以使用playerView.subtitleView.setApplyEmbeddedStyles(false)。但是,请查阅ExoPlayer论坛了解更多信息,因为这是ExoPlayer的问题,而不是亚马逊的问题。(有关Fire App Builder的隐藏式字幕功能的信息,请参阅字幕支持。)

问: Amazon Fire TV上有哪些字体可用于隐藏式字幕?
Amazon Fire TV拥有的平台字体有限。您必须为CEA-708定义的每个样式获得授权,并嵌入您自己的字体文件。

媒体播放

问: 媒体播放如何最大程度地节省资源和内存?

由于Amazon Fire TV中的媒体播放资源基于硬件且受内存限制,因此您的应用必须运行良好,并在使用完媒体资源时释放媒体资源。

具体而言,播放视频的应用应暂停播放,并且必须立即释放所有媒体资源,例如onPause()方法中的解码器。详细信息,请参阅释放媒体播放器MediaPlayer.release

如果您的应用通过Android WebView(带有<video> HTML标签)播放视频,则当应用暂停或停止时,系统当前不会释放硬件媒体资源。要解决此问题,请在执行onPause()onStop()方法时通过终止进程来显式释放这些资源:

public void onStop() {
   super.onStop();
   android.os.Process.killProcess(android.os.Process.myPid());
}

更多详细信息,请参阅以下内容:

问: 我的应用在后台播放音乐。当我的应用暂停时,音频为什么停止播放? 或者当我的应用启动时,为什么来自另一个应用的音频继续播放?
您的应用未正确管理音频焦点。当您的应用开始播放时,应同时请求音频焦点和注册媒体按钮事件。当您的应用放弃音频焦点时(因为您已完成播放或因为其他应用请求了音频焦点),也须从媒体按钮事件中取消注册。具体来说:

更多详细信息,请参阅以下内容:

问: 为什么我的音乐应用在后台播放时不断地被随机终止?
将音乐播放应用作为前台服务运行。当资源不足时,系统会自动关闭后台服务(默认设置)。有关详细信息,请参阅媒体播放Service类中的startForeground()方法的Android指南。
问: 电视机被关闭/与HDMI线缆断开怎么办?
音频和视频的HDMI断开预期行为不同。详细信息,请参阅处理HDMI事件
问: 在媒体播放过程中,如何防止设备进入待机或白日梦模式(屏保)?
在媒体播放期间保持Amazon Fire TV和电视机处于唤醒状态,请为您的活动设置KEEP_SCREEN_ON标记,或从电源管理器获取唤醒锁。如果您的应用未主动播放音频或视频,则必须释放所有唤醒锁,以便设备和电视机都可以进入睡眠状态和省电模式。有关使用唤醒锁的详细信息,请参阅PowerManagerPowerManager.WakeLock类。

请注意,如果您的应用播放音频,并且您为应用设置了部分唤醒锁PARTIAL_WAKE_LOCK,电视机将保持开机状态;而当空闲时,设备则进入白日梦模式(显示屏保)。这不同于移动设备上的部分唤醒锁(保持CPU开启,但关闭屏幕),因为通过HDMI播放音频需要打开电视。同样,确保在应用停止主动播放音频时释放唤醒锁,以便电视机可以进入睡眠状态。

设置SCREEN_BRIGHT_WAKE_LOCKSCREEN_DIM_WAKE_LOCK标记不会影响设备的行为。

问: 如何检测设备何时进入白日梦模式(屏保打开)?
白日梦模式是一个Android功能。当Amazon Fire TV进入白日梦模式时,如果电视已打开,则会显示屏保。注册Intent.ACTION_DREAMING_STARTEDIntent.ACTION_DREAMING_STOPPED以检测设备何时进入或退出白日梦模式。

注意,如果您的应用不属于音乐应用,但正在播放音频,则须在设备进入白日梦模式时暂停音频播放。

问: 我可以使用Android WebView<video> HTML标签进行视频播放吗?
可以,但有限制。当您的应用暂停或停止时,系统当前不会释放硬件媒体资源。要解决此问题,请执行onStop()方法来显式终止应用的进程:
public void onStop() {
super.onStop();
android.os.Process.killProcess(android.os.Process.myPid());
}

此问题还可能导致您的应用的用户体验和导航不稳定。在设备上播放媒体,建议使用第三方媒体播放器开发工具包。

问: 我可以在我的应用中播放4K超高清视频吗?

可以,将Fire TV(第2代和第3代)和Fire TV(第2代)连接到支持4K的电视机,可播放4K超高清视频。Fire TV(第1代)和Fire TV Stick(第1代)不播放4K视频。详细信息,请参阅Fire TV设备规格

播放4K内容之前,检查您的应用中:(1) Fire TV设备是否支持4K,(2)连接的电视是否支持4K。亚马逊4K扩展库可帮助您实现4K模式切换。

控制器

问: Amazon Fire TV游戏控制器没有像以前版本那样的媒体按钮。如何处理媒体播放?
Amazon Fire TV为摇杆按压(播放/暂停)以及左(倒回)和右(快进)侧肩按钮(L1/R1)生成媒体输入事件。如果您未在应用或游戏中使用这些按钮,请确保没有捕获或丢弃这些按钮事件,这样用户就可以在后台控制媒体播放。

如果您将Amazon Fire游戏控制器上的媒体按钮重新用于应用中的其他用途,则新Amazon Fire游戏控制器的用户在没有这些按钮的情况下将无法使用该功能。更新应用,使按钮可通用于两个游戏控制器,并更新屏幕上的提示。

问: 如何通过Amazon Fire TV游戏控制器管理音量控制?
除Fire TV(第3代)外,其他Fire TV设备可以将音频流传输到Amazon Fire游戏控制器上的耳机插孔(仅限当前一代控制器)。左右触发按钮(L2/R2)用于控制音量。

音量控制是一种系统功能,无法映射到应用中的其他按钮。但是,如果您未在应用或游戏中使用触发按钮,请确保不要捕获或丢弃这些按钮事件,以便用户可以控制后台的播放媒体。

问: 我可以在应用中覆盖Fire TV语音遥控器上的麦克风按钮吗?
“麦克风”按钮启动系统范围的语音功能(请求瞬时音频焦点),无法覆盖。您的应用须处理此音频焦点变更事件(AUDIOFOCUS_LOSS_TRANSIENT)以及其他音频焦点变更事件(AUDIOFOCUS_LOSSAUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK),因为任何应用(不仅仅是语音)都可能会请求任何类型的音频焦点。简而言之,应适当处理所有音频焦点使用情形。更多详细信息,请参阅使用语音搜索处理音频焦点
问: “菜单”按钮有什么作用,可否在我的应用中将其覆盖?
默认情况下,“菜单”按钮调用Android上下文菜单,该菜单显示为屏幕中心的菜单项列表。您可以覆盖菜单按钮以提供自己的自定义菜单用户界面,或用于任何其他目的。

如果您只有一个菜单项,请考虑使用“菜单”按钮进行简单的切换(如打开或关闭隐藏式字幕),并提供屏幕提示以向用户展示该功能。

问: 当控制器连接、断开或休眠时,为什么我的活动会从头始?
这些事件由Android系统作为运行时配置更改来处理。要忽略应用中的这些事件,请修改您的AndroidManifest.xml以包含android:configChanges属性,并包含keyboardkeyboardHiddennavigation键:
<activity android:name="MyActivity"
android:configChanges="keyboard|keyboardHidden|navigation">

有关configChanges属性以及如何处理运行时配置更改的信息,请参阅Android指南处理运行时更改

问: 我的应用或游戏中的游戏控制器连接断开怎么办?
如果Amazon Fire游戏控制器处于空闲状态,或者其中任一操纵杆在某个角度保持超过5分钟,则Amazon Fire游戏控制器可能会断开与系统的连接,以节省电池电量。当处于空闲状态或电池电量耗尽时,其他控制器也可能断开连接。使用Android OnInputDeviceRemoved侦听器来处理控制器断开连接事件。考虑暂停游戏或显示一个对话框,让用户知道控制器不再可用。

Fire TV Stick

问: Amazon Fire TV和Fire TV Stick有何区别?
Fire TV设备规格列出了所有Fire TV设备的规格。有关Fire TV设备名称的更多信息,请参阅Fire TV设备的命名约定
问: 如何调整我的Amazon Fire TV应用,使其适用于Fire TV Stick?
Amazon Fire TV和Fire TV Stick运行相同的通用平台(见Fire OS概述)。但Fire TV Stick更受硬件限制,因此,优化应用的性能和稳定性是至关重要的。请确保遵循Android在硬件加速性能方面的最佳实践。特别注意OpenGL和纹理。有关每一Fire TV设备规格的具体信息,请参阅Fire TV设备规格
问: 如何以编程方式识别Fire TV Stick设备?
您可以检查功能amazon.hardware.fire_tv以识别所有Fire TV设备。要查找Fire TV Stick,您可以检查型号AFTMAFTT。欲了解更多信息,请参阅识别Amazon Fire TV设备
问: 应用中的一些图像/背景没有显示,或者只显示灰框。
这通常是由位图图像或纹理过大导致的。Fire TV Stick支持最高2048x2048的纹理。如果您的应用出现此问题,您可能会在日志中看到如下错误:
W/OpenGLRenderer( 8941): 位图太大,无法上传到纹理中(3840x2160,最大值为2048x2048)

此外,请确保您的Fire TV的图像位于drawables-xhdpi/文件夹,而不是drawables/中。默认绘图的平台缩放可能导致超过纹理限制的大图像。