常见问题解答
常见问题解答 (Fire TV)
一般问题
- 问: 我的应用是否可以在亚马逊Fire TV平台上运行?
- 确保您的应用与亚马逊Fire TV设备的规格兼容。请参阅设备规格,了解详细的设备和功能规格。
-
您的应用必须符合亚马逊应用商店内容政策。亚马逊还建议您自行测试应用。如发现任何问题,请提交更新。
- 问: 如何向亚马逊Fire TV平台提交我的应用?
- 向亚马逊Fire TV设备提交应用前,请在亚马逊应用和游戏开发者门户上创建一个账户,然后通过该门户提交应用。
-
如果已在亚马逊上发布了应用,请更新并加入适用于亚马逊Fire TV的单独APK。有关更多信息,请参阅使用设备定向。
- 问: 如何确定我的应用是否在亚马逊Fire TV设备上运行?
- 可以检查
amazon.hardware.fire_tv
功能。如须查找具体的Fire TV型号,可以检查型号或模式,但须始终包含amazon.hardware.fire_tv
功能的回退。欲了解更多信息,请参阅识别亚马逊Fire TV设备。 - 问: 可以将我的应用侧载到亚马逊Fire TV上进行测试吗?
- 可以。请使用Android调试桥(ADB)。欲了解更多信息,请参阅开发Fire TV应用和游戏入门。
- 问: 是否有可供开发者使用的亚马逊Fire TV测试设备?
- 亚马逊不为开发者提供测试设备。
- 问: 亚马逊Fire TV平台支持哪些特定功能?
- 请参阅设备规格,了解详细的设备和功能规格。Fire TV是基于Android系统的,几乎包含了Android系统的所有功能。一些示例包括DRM、音频/视频编解码器以及DIAL。
-
注意: Fire TV不支持Google服务(如Google地图或Google应用内计费)。使用亚马逊SDK可获得同等服务。更多详细信息,请参阅Fire TV开发与Android TV开发有何不同。
- 问: 哪些应用模板可用于快速构建Fire TV应用?
- 可以使用Fire App Builder作为构建Fire TV应用的基础模板。
- 问: 如何在亚马逊Fire TV平台上销售我的应用?
- 要推广您的应用,请参阅开发者促销控制台。
- 问: 在什么情况下应该暂停视频播放,如何实现?
- 当按下其中一个Fire TV遥控器或Amazon Fire游戏控制器上的麦克风(语音搜索)或主页按钮时,视频播放将暂停(请参阅遥控输入)。“后退”按钮也会暂停当前活动,并恢复堆栈上的前一个活动,该活动可能是也可能不是您的应用。
-
要处理暂停行为,在活动中执行
onPause()
方法(与执行其他Android应用一样)。执行onPause()
方法时,请确保已保存用户状态或位置,以便当应用恢复时,用户处于暂停前的相同位置。 -
此外,媒体应用须满足以下要求:
- 播放视频的应用应暂停播放,并且必须在暂停时立即释放所有媒体资源(如解码器),因为这些有限的资源是基于硬件的,并且内存有限。详细信息,请参阅释放MediaPlayer和
MediaPlayer.release
。 - 播放音频的应用可在暂停后继续播放,但如有其他应用要求,则必须放弃音频焦点。有关详细信息,请参阅管理音频焦点(Android文档)。
- 播放视频的应用应暂停播放,并且必须在暂停时立即释放所有媒体资源(如解码器),因为这些有限的资源是基于硬件的,并且内存有限。详细信息,请参阅释放MediaPlayer和
- 问: 我可以在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吗?
- 亚马逊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"/>
- 问: 如何在亚马逊Fire TV上截图?
- 更多详细信息,请参阅在Fire设备上截图。
- 问: 我的应用使用Google的应用内购买。这一技术可否在亚马逊Fire TV平台上运行?
- 您不能使用Google IAP,但Amazon IAP有并行的API,可以帮助您在数小时内启动和运行。更多详细信息,请参阅Fire TV开发与Android TV开发有何不同。
- 问: 在德国和/或奥地利为亚马逊Fire TV或Fire TV Stick推广应用时,是否有其他要求?
- 是。如果相关应用允许将任何类型的视频或音频内容进行复制、录制、下载、存储到亚马逊Fire TV或Fire TV Stick设备、任何SD存储卡或任何连接的外部存储(如适用)上,或者执行类似操作,我们不允许在德国和/或奥地利的亚马逊Fire TV或Fire TV Stick上推广该应用。如果我们确定某个应用包含此功能,我们将不会让该应用出现在德国和/或奥地利。
Fire OS
- 问: Fire OS是否支持Android TV和v17 Leanback库?
- Fire OS 5到Fire OS 7同时支持Android TV功能和Leanback库。但不支持使用Leanback库的
SearchFragment
类进行语音识别。更多详细信息,请参阅在Fire TV中实现搜索。
媒体和DRM
- 问: Fire TV支持哪些第三方媒体播放器SDK?
- 我们支持将Amazon ExoPlayer端口用于Fire TV。
- 问: 通过什么选项来实现使用Microsoft PlayReady DRM加密的媒体的播放功能?
- 亚马逊Fire TV平台支持用来播放受保护媒体的Android MediaCrypto类,也可以使用支持PlayReady的第三方媒体播放器SDK。须了解哪些Fire TV设备支持哪些版本的PlayReady,请参阅Fire TV设备规格中的媒体规格表。
- 问: 亚马逊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上的安全通道保护?
- 是。
- 问: 亚马逊Fire TV是否支持隐藏式字幕 (CEA-708)?
- Fire TV支持平台级隐藏式字幕。媒体应用负责并且必须实现UI,使观看者能够通过第三方媒体播放SDK或他们自己的操作来定制字幕。
-
如果您使用的是Amazon ExoPlayer端口,请注意,4K流 (DASH) 的字幕样式通过ExoPlayer的嵌入式样式处理。如要忽略嵌入样式,可以使用
playerView.subtitleView.setApplyEmbeddedStyles(false)
。但是,请查阅ExoPlayer论坛了解更多信息,因为这是ExoPlayer的问题,而不是亚马逊的问题。(有关Fire App Builder的隐藏式字幕功能的信息,请参阅字幕支持。) - 问: 亚马逊Fire TV上有哪些字体可用于隐藏式字幕?
- 亚马逊Fire TV包含许多平台字体,这些字体已经包含在系统中。
媒体播放
- 问: 媒体播放如何最大程度地节省资源和内存?
- 由于亚马逊Fire TV的媒体播放资源基于硬件且受内存限制,因此您的应用必须运行良好,并在退出和发生错误时释放媒体资源。有关处理音频焦点和媒体播放的详细信息,请参阅管理音频焦点和Fire TV上多媒体应用的要求。还可以遵照Android文档中更详细的指南进行操作:
- 问: 我的应用在后台播放音乐。当我的应用暂停时,音频为什么停止播放? 或者当我的应用启动时,为什么来自另一个应用的音频继续播放?
- 您的应用未正确管理音频焦点。应用开始播放时,应同时请求音频焦点和注册媒体按钮事件。应用放弃音频焦点时(因为您已完成播放或因为其他应用请求了音频焦点),也须从媒体按钮事件中取消注册。具体来说:
- 应用开始播放时,应使用
AudioManager.requestAudioFocus()
请求音频焦点。 - 如果授予音频焦点,请使用
AudioManager.registerMediaButtonEventReceiver()
注册媒体按钮接收器 - 使用
AudioManager.onAudioFocusChangeListener()
侦听音频焦点丢失 - 如果应用失去音频焦点,请停止播放并使用
AudioManager.unregisterMediaButtonEventReceiver()
取消注册媒体按钮
- 应用开始播放时,应使用
-
更多详细信息,请参阅以下内容:
- 音频焦点(Fire TV文档)
- 音频焦点(Android文档)
- 让应用和谐共处: 处理遥控器按钮
- 问: 为什么我的音乐应用在后台播放时不断地被随机终止?
- 将音乐播放应用作为前台服务运行。当资源不足时,系统会自动关闭后台服务(默认设置)。有关详细信息,请参阅MediaPlayer概览和Service类中的
startForeground()
方法的Android指南。 - 问: 电视机被关闭/与HDMI线缆断开怎么办?
- 音频和视频的HDMI断开预期行为不同。详细信息,请参阅处理HDMI事件。
- 问: 在媒体播放过程中,如何防止设备进入待机或白日梦模式(屏保)?
- 要在媒体播放期间让亚马逊Fire TV和电视机保持唤醒状态,请为活动设置
KEEP_SCREEN_ON
标记,或从电源管理器获取唤醒锁。如果您的应用未主动播放音频或视频,则必须释放所有唤醒锁,以便设备和电视机都可以进入睡眠状态和省电模式。有关如何使用唤醒锁的详细信息,请参阅PowerManager
和PowerManager.WakeLock
类。 -
注意: 如果您的应用播放音频,并且您为应用设置了部分唤醒锁
PARTIAL_WAKE_LOCK
,则电视机会保持开机状态;而当空闲时,设备则进入白日梦模式(显示屏保)。这不同于移动设备上的部分唤醒锁(保持CPU开启,但关闭屏幕),因为通过HDMI播放音频需要电视处于开机状态。同样,确保在应用停止主动播放音频时释放唤醒锁,以便电视机可以进入睡眠状态。 - 问: 如何检测设备何时进入白日梦模式(屏保打开)?
- 白日梦模式是一个Android功能。亚马逊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模式切换。
控制器
- 问: 亚马逊Fire TV游戏控制器没有像以前版本那样的媒体按钮。如何处理媒体播放?
- 亚马逊Fire TV为摇杆按压(播放/暂停)以及左(倒回)和右(快进)侧肩按钮 (L1/R1) 生成媒体输入事件。如果未在应用或游戏中使用这些按钮,请确保没有捕获或丢弃这些按钮事件,这样用户就可以在后台控制媒体播放。
-
如果将Amazon Fire游戏控制器上的媒体按钮在应用中用于其他用途,则新Amazon Fire游戏控制器的用户在没有这些按钮的情况下就无法使用该功能。更新应用,使按钮可通用于两个游戏控制器,并更新屏幕上的提示。
- 问: 如何通过亚马逊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
- 问: 亚马逊Fire TV和Fire TV Stick有何区别?
- Fire TV设备规格列出了所有Fire TV设备的规格。
- 问: 如何调整我的亚马逊Fire TV应用,使其适用于Fire TV Stick?
- 亚马逊Fire TV和Fire TV Stick运行相同的Fire OS(见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
。欲了解更多信息,请参阅识别亚马逊Fire TV设备。 - 问: 应用中的一些图像/背景没有显示,或者只显示灰框。
- 这通常是由位图图像或纹理过大导致的。Fire TV Stick支持最高2048x2048的纹理。如果应用出现此问题,您可能会在日志中看到如下错误:
W/OpenGLRenderer( 8941): Bitmap too large to be uploaded in a texture (3840x2160, max=2048x2048)
此外,请确保您的Fire TV的图像位于drawables-xhdpi/
文件夹,而不是drawables/
中。默认绘图的平台缩放可能导致超过纹理限制的大图像。
Last updated: 2024年2月6日