常见问题解答
一般问题
- 问: 如何向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 SDK可获得同等服务。更多详细信息,请参阅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。
- 问: 我可以链接到亚马逊应用商店中我的应用详情页面吗?
- 是的,亚马逊应用商店提供所有应用的深层链接。有关深层链接的更多信息,请参阅从您的应用中链接到亚马逊。但请注意,您的应用不得提示用户进行评分。用户可从应用的概览屏幕对您的应用进行评分。
- 问: 如何将屏幕键盘更改为数字键盘?
- 可以使用标准的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支持哪些第三方媒体播放器SDK?
- 任何实现Android媒体播放和加密API的媒体播放器SDK都可以在Amazon Fire TV平台上运行。 这些SDK包括Amazon ExoPlayer端口、Android MediaPlayer、VisualOn OnStream MediaPlayer+ SDK和NexStreaming NexPlayer SDK。请参阅媒体播放器,以了解更多详细信息。如果您使用的是自定义媒体播放器,请参阅音频和视频同步。
- 问: 通过什么选项来实现使用Microsoft PlayReady DRM加密的媒体的播放功能?
- Amazon Fire TV平台支持用来播放受保护媒体的Android
MediaCrypto
类,也可以使用支持PlayReady的第三方媒体播放器SDK。须了解哪些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 SDK。有关播放杜比内容的更多信息,请参阅杜比集成指南。
- 问: 设备是否支持安全启动以验证固件和操作系统?
- 是。
- 问: 操作系统是否强制执行应用的签名检查?
- 是。
- 问: 输出HDCP是否受HDMI上的安全通道保护?
- 是。
- 问: Amazon Fire TV是否支持可定制的隐藏式字幕(CEA-708)?
- 目前,Fire TV支持有限的平台级隐藏式字幕。媒体应用负责并且必须实现UI,使观看者能够通过第三方媒体播放SDK或他们自己的操作来定制字幕。
如果您使用的是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中的媒体播放资源基于硬件且受内存限制,因此您的应用必须运行良好,并在使用完媒体资源后释放媒体资源。有关处理音频焦点和媒体播放的详细信息,请参阅管理音频焦点和Fire TV上多媒体应用的要求。还可以遵照Android文档中更详细的指南进行操作:
- 问: 我的应用在后台播放音乐。当我的应用暂停时,音频为什么停止播放? 或者当我的应用启动时,为什么来自另一个应用的音频继续播放?
- 您的应用未正确管理音频焦点。应用开始播放时,应同时请求音频焦点和注册媒体按钮事件。应用放弃音频焦点时(因为您已完成播放或因为其他应用请求了音频焦点),也须从媒体按钮事件中取消注册。具体来说:
- 应用开始播放时,应使用
AudioManager.requestAudioFocus()
请求音频焦点。 - 如果授予音频焦点,请使用
AudioManager.registerMediaButtonEventReceiver()
注册媒体按钮接收器 - 使用
AudioManager.onAudioFocusChangeListener()
侦听音频焦点丢失 - 如果应用失去音频焦点,请停止播放并使用
AudioManager.unregisterMediaButtonEventReceiver()
取消注册媒体按钮
更多详细信息,请参阅以下内容:
- 音频焦点(Fire TV文档)
- 音频焦点(Android文档)
- 让应用和谐共处: 处理遥控器按钮
- 应用开始播放时,应使用
- 问: 为什么我的音乐应用在后台播放时不断地被随机终止?
- 将音乐播放应用作为前台服务运行。当资源不足时,系统会自动关闭后台服务(默认设置)。有关详细信息,请参阅媒体播放和Service类中的
startForeground()
方法的Android指南。 - 问: 电视机被关闭/与HDMI线缆断开怎么办?
- 音频和视频的HDMI断开预期行为不同。详细信息,请参阅处理HDMI事件。
- 问: 在媒体播放过程中,如何防止设备进入待机或白日梦模式(屏保)?
- 要在媒体播放期间让Amazon Fire TV和电视机保持唤醒状态,请为活动设置
KEEP_SCREEN_ON
标记,或从电源管理器获取唤醒锁。如果您的应用未主动播放音频或视频,则必须释放所有唤醒锁,以便设备和电视机都可以进入睡眠状态和省电模式。有关如何使用唤醒锁的详细信息,请参阅PowerManager
和PowerManager.WakeLock
类。请注意,如果您的应用播放音频,并且您为应用设置了部分唤醒锁
PARTIAL_WAKE_LOCK
,则电视机会保持开机状态;而当空闲时,设备则进入白日梦模式(显示屏保)。这不同于移动设备上的部分唤醒锁(保持CPU开启,但关闭屏幕),因为通过HDMI播放音频需要电视处于开机状态。同样,确保在应用停止主动播放音频时释放唤醒锁,以便电视机可以进入睡眠状态。设置
SCREEN_BRIGHT_WAKE_LOCK
或SCREEN_DIM_WAKE_LOCK
标记不会影响设备的行为。 - 问: 如何检测设备何时进入白日梦模式(屏保打开)?
- 白日梦模式是一个Android功能。Amazon Fire TV进入白日梦模式后,如果电视已打开,则会显示屏保。注册
Intent.ACTION_DREAMING_STARTED
和Intent.ACTION_DREAMING_STOPPED
以检测设备何时进入或退出白日梦模式。注意,如果您的应用不属于音乐应用,但正在播放音频,则应在设备进入白日梦模式时暂停音频播放。
- 问: 我可以使用Android WebView和
<video>
HTML标签进行视频播放吗? - 可以,但有限制。您的应用暂停或停止后,系统当前不会释放硬件媒体资源。要解决此问题,请执行
onStop()
方法来显式停止应用的进程:public void onStop() { super.onStop(); android.os.Process.killProcess(android.os.Process.myPid()); }
此问题还可能导致应用的用户体验和导航不稳定。在设备上播放媒体,建议使用第三方媒体播放器SDK。
- 问: 我可以在我的应用中播放4K超高清视频吗?
-
可以,部分Fire TV设备能够连接到支持4K的电视机,播放4K超高清视频。但其他Fire TV设备无法播放。有关支持4K的设备详情,请参阅Fire TV设备规格。
播放4K内容之前,检查您的应用中:(1) Fire TV设备是否支持4K,(2)连接的电视是否支持4K。亚马逊4K扩展库可帮助您为Fire TV第2代设备实现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_LOSS
和AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK
),因为任何应用(不仅仅是语音)都可能会请求任何类型的音频焦点。简而言之,应适当处理所有音频焦点使用情形。更多详细信息,请参阅管理音频焦点。 - 问: “菜单”按钮有什么作用,可否在我的应用中将其覆盖?
- 默认情况下,“菜单”按钮调用Android上下文菜单,该菜单显示为屏幕中心的菜单项列表。可以覆盖菜单按钮以提供自己的自定义菜单用户界面,或用于任何其他目的。
如果您只有一个菜单项,请考虑使用“菜单”按钮进行简单的切换(如打开或关闭隐藏式字幕),并提供屏幕提示以向用户展示该功能。
- 问: 当控制器连接、断开或休眠时,为什么我的活动会从头始?
- 这些事件由Android系统作为运行时配置更改来处理。要忽略应用中的这些事件,请修改您的
AndroidManifest.xml
以包含android:configChanges
属性,并包含keyboard
、keyboardHidden
和navigation
键:<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,可以检查型号AFTM
或AFTT
。欲了解更多信息,请参阅识别Amazon Fire TV设备。 - 问: 应用中的一些图像/背景没有显示,或者只显示灰框。
- 这通常是由位图图像或纹理过大导致的。Fire TV Stick支持最高2048x2048的纹理。如果应用出现此问题,您可能会在日志中看到如下错误:
W/OpenGLRenderer( 8941): 位图太大,无法上传到纹理中(3840x2160,最大值为2048x2048)
此外,请确保您的Fire TV的图像位于
drawables-xhdpi/
文件夹,而不是drawables/
中。默认绘图的平台缩放可能导致超过纹理限制的大图像。