Frequently Asked Questions (Fire TV)
General
- Q: Will my app work on the Amazon Fire TV platform?
- Your app must be compatible with the specifications for Amazon Fire TV devices. See Device Specifications for detailed device and feature specifications.
-
Your app must comply the Amazon Appstore Content Policy. Amazon also recommends that you test your app on your own and submit an update if you discover any problems.
- Q: How do I submit my app for the Amazon Fire TV platform?
- To submit your app for an Amazon Fire TV device, create an account on the Amazon Apps & Games Developer Portal and submit your app through the portal.
-
If you already have an app published at Amazon, update that app to include a separate APK for Amazon Fire TV. See Using Device Targeting for more information.
- Q: How can I identify whether my app is running on an Amazon Fire TV device?
- You can check for the feature
amazon.hardware.fire_tv
. If you need to look for a specific Fire TV model, you can check for a model number or pattern but always include a fallback for theamazon.hardware.fire_tv
feature. See Identifying Amazon Fire TV Devices for more information. - Q: Can I sideload my app onto Amazon Fire TV for testing?
- Yes, with the Android Debug Bridge (ADB). See Getting Started Developing Apps and Games for Fire TV for more information.
- Q: Are Amazon Fire TV test devices available for developers?
- Amazon does not provide test devices for developers.
-
Amazon Fire TV devices are available for purchase on Amazon retail sites in the US, UK, and Germany. Check the product detail pages for country-specific availability.
- Q: What specific features does the Amazon Fire TV platform support?
- See Device Specifications for detailed device and feature specifications. Fire TV is based on Android, so pretty much anything you can do on Android is available on Fire TV. Some examples are DRM, Audio/Video codec, and DIAL.
-
Note: Fire TV does not support Google Services (such as Google Maps or Google In-App Billing). Use the Amazon SDKs for equivalent services. See How Fire TV Development Differs from Android TV Development for more details.
- Q: What app templates are available to quickly build a Fire TV app?
- You can use Fire App Builder as a starting template for building a Fire TV app.
- Q: How do I get my app marketed on the Amazon Fire TV platform?
- To promote your app, see the Developer Promotions Console.
- Q: Under what circumstances should the video playback pause, and how do I implement it?
- Your video playback pauses when the Microphone (voice search) or Home buttons are pressed on one of the Fire TV remotes or on the Amazon Fire Game Controller (see Remote Control Input). The Back button also pauses the current activity and resumes the previous activity on the stack, which may or may not be your app.
-
To handle pause behavior, implement the
onPause()
method in your activity as you would in any other Android app. In youronPause()
method, ensure that you save the user's state or position, so that when your app resumes the user is in the same place that they were before the pause. -
In addition, the following requirements apply to media apps:
- Apps that play video should pause playback, and must release all media resources such as decoders immediately on pause, as these limited resources are hardware-based and memory-constrained. See Releasing the Media Player and
MediaPlayer.release
for details. - Apps that play audio may continue playing after a pause, but must relinquish audio focus if requested by another app. See Manage Audio Focus (Android docs) for details.
- Apps that play video should pause playback, and must release all media resources such as decoders immediately on pause, as these limited resources are hardware-based and memory-constrained. See Releasing the Media Player and
- Q: Can I use the Amazon In-App Purchasing API in my Fire TV app?
- Yes, Amazon's In-App Purchasing (IAP) API works on all Fire TV devices and with the Fire TV remotes and game controllers. For web apps, you can use App Tester to preview your transactions.
- Q: Can I use Amazon Device Messaging (ADM) in my Fire TV app?
- You can use Amazon Device Messaging to receive push messages and other data.
- Q: Can I use the Amazon Maps API in my Fire TV app?
- There are no location services in Amazon Fire TV, so the Amazon Maps API is not supported.
- Q: Can I link to my app's details page in the Amazon Appstore?
- Yes, Amazon Appstore deep links work as they do for other apps. See Link to Amazon from within Your App for more information on deep linking. Note, however, that your app should not prompt the user for a rating. Users can rate your app from the app's overview screen.
- Q: How do I change the onscreen keyboard to a numeric keypad?
- You can use the standard Android mechanisms for configuring the IME (input method editor) for any EditText widget. In XML, use
android:inputType="number"
:<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/edittext" android:inputType="number"/>
- Q: How do I take screen shots on Amazon Fire TV?
- See Taking Screenshots on Fire Devices for more details.
- Q: My app uses Google’s in-app purchasing. Will it work on the Amazon Fire TV platform?
- You can't use Google IAP, however Amazon IAP has parallel APIs to help you up and running in hours. See How Fire TV Development Differs from Android TV Development for more details.
- Q: Are there any other criteria for distributing apps for Amazon Fire TV or Fire TV Stick in Germany and/or Austria?
- Yes. We do not permit apps to be distributed on Amazon Fire TV or on Fire TV Stick in Germany and/or Austria if the apps enable copying, recording, downloading, storing, or similar actions of any type of video or audio content onto the Amazon Fire TV or Fire TV Stick device or onto any SD memory card or any connected external storage (where applicable). If we determine that an app contains this functionality, we will not make it available in Germany and/or Austria.
Fire OS
- Q: Does Fire OS support Android TV and the v17 Leanback Library?
- Fire OS 5 through Fire OS 7 include both support for Android TV functionality and the Leanback Library. However, speech recognition with the Leanback library’s
SearchFragment
class is not unsupported. See Implementing Search in Fire TV for more details.
Media and DRM
- Q: What third-party media player SDKs are supported by Fire TV?
- We support the use of the Amazon Port of ExoPlayer for Fire TV.
- Q: What are my options for implementing playback of media encrypted with Microsoft PlayReady DRM?
- The Amazon Fire TV platform includes support for the Android MediaCrypto class for playing protected media, or you can use a third-party media player SDK that supports PlayReady. See the Media Specifications table in the Fire TV Device Specifications for information about which Fire TV devices support which versions of PlayReady.
- Q: Does Amazon Fire TV support PlayReady content that uses encrypted audio?
- PlayReady content with encrypted video and clear (non-encrypted) audio is supported on Fire TV. Widevine DRM is also supported. See the Fire TV Device Specifications for more details. If you need to play content with both encrypted audio and video, please contact us for further information.
- Q: How do I decode Dolby Digital audio on Fire TV devices?
- Both Fire TV and Fire TV Stick contain decoders for Dolby Digital (AC3) and Dolby Digital Plus (eAC3). Fire TV (3rd Gen) also provides support for Dolby Atmos (EC3_JOC). You should be able to play these formats with the standard Android media player libraries. Note that the DolbyAudioProcessing SDK for Amazon Fire tablets is not supported (or required) for Fire TV devices. For more information about playing Dolby, see Dolby Integration Guidelines.
- Q: Do all devices support Secure Boot to verify firmware and OS?
- Yes.
- Q: Does the OS enforce signature checking of apps?
- Yes.
- Q: Is output HDCP protected though a secure channel over HDMI?
- Yes.
- Q: Does Amazon Fire TV support closed captioning (CEA-708)?
- Fire TV has platform-level closed-captioning support. Media apps are responsible for, and must implement, a UI that enables viewers to customize captions through a third-party media playback SDK or their own implementation.
-
If you're using the Amazon ExoPlayer port, note that the styling of captions for 4K streams (DASH) is handled through embedded styles from ExoPlayer. To ignore the embedded styles, you can use
playerView.subtitleView.setApplyEmbeddedStyles(false)
. However, consult the ExoPlayer forums for more information, as this is an ExoPlayer issue and not specific to Amazon. (For information on closed-captioning capabilities for Fire App Builder, see the Caption Support.) - Q: What fonts are available on Amazon Fire TV for use with closed captions?
- Amazon Fire TV includes a number of platform fonts which are already included on the system.
Media Playback
- Q: What are best practices with media playback to preserve resources and memory?
- Because the media playback resources for Amazon Fire TV are hardware-based and memory constrained, your app must be well-behaved and release the media resources on exit and on error. For details about handling audio focus and media playback, see Managing Audio Focus and Requirements for Multimedia Apps on Fire TV. You can also follow the more detailed guidance in the Android documentation:
- Q: My app plays music in the background. When my app pauses, why does the audio stop playing? OR when my app starts, why does audio from another app keep playing?
- Your app is not correctly managing Audio Focus. When your app begins playing it should both request audio focus and register for media button events. When your app relinquishes audio focus (because you're done playing or because another app has requested it), it should also unregister from media button events. Specifically:
- When your app begins playing, request audio focus with
AudioManager.requestAudioFocus()
- If audio focus was granted, register a media button receiver with
AudioManager.registerMediaButtonEventReceiver()
- Listen for the loss of audio focus with
AudioManager.onAudioFocusChangeListener()
- If your app loses audio focus, stop playback and unregister the media buttons with
AudioManager.unregisterMediaButtonEventReceiver()
- When your app begins playing, request audio focus with
-
See the following for more details:
- Audio Focus (Fire TV docs)
- Audio Focus (Android docs)
- Allowing applications to play nice(r) with each other: Handling remote control buttons
- Q: Why does my music app keep getting randomly killed when it's playing in the background?
- Make sure you are running your music playback app as a foreground service. Background services (the default) are automatically shut down by the system when resources are low. See the Android guide for Media Playback and the
startForeground()
method in the Service class for details. - Q: How should I handle the TV being turned off/disconnected with the HDMI cable?
- The expected behavior for an HDMI disconnect is different for audio and video. See Handling HDMI Events for details.
- Q: During media playback, how do I prevent the device from entering standby or Daydream mode (screen saver)?
- To keep both Amazon Fire TV and the television awake during media playback, set the
KEEP_SCREEN_ON
flag for your activity, or acquire a wake lock from the power manager. Your app must release all wake locks when it is not actively playing audio or video so that both the device and the television can sleep and preserve power. See thePowerManager
andPowerManager.WakeLock
classes for details on using wake locks. -
Note: If your app plays audio and you set a partial wake lock for your app
PARTIAL_WAKE_LOCK
, the television remains on and when idle the device enters Daydream mode (displays the screen saver). This is different behavior from a partial wake lock on a mobile device (where it keeps the CPU on, but turns the screen off), as audio playback over HDMI requires the television to be on. Again, make sure you release the wake lock when your app stops actively playing audio so that the television can sleep. - Q: How can I detect when the device has entered Daydream mode (the screen saver is on)?
- Daydream mode is an Android function. When Amazon Fire TV enters Daydream mode it displays the screen saver if the TV is on. Register for
Intent.ACTION_DREAMING_STARTED
andIntent.ACTION_DREAMING_STOPPED
to detect when the device enters or exits Daydream. -
Note: If your app plays audio but is not a music app, you should pause audio playback when the device enters Daydream mode.
- Q: Can I use an Android WebView and the
<video>
HTML tag for video playback? - Yes, with limitations. Hardware media resources are not currently released by the system when your app pauses or stops. To work around this issue implement your
onStop()
method to explicitly stop the process for your app:
public void onStop() {super.onStop();android.os.Process.killProcess(android.os.Process.myPid());}
- This issue may also cause instability in the user experience and navigation for your app. Use of a third-party media player SDK is the recommended method for media playback on the device.
- Q: Can I play 4K Ultra HD Videos in my App?
- Yes, some Fire TV devices can play 4K Ultra HD video when connected to a 4K-supported TV. Other Fire TV devices cannot. See Fire TV Device Specifications for details for which devices support 4K. Before playing 4K content, your app needs to check whether (1) the Fire TV device supports 4k and (2) whether the connected TV supports 4K. An Amazon 4K Extension Library has been developed to allow you to initiate the 4K mode switch for Fire TV 2nd Gen devices.
Controllers
- Q: The Amazon Fire TV Game Controller does not have media buttons like the previous version did. How do I handle media playback?
- Amazon Fire TV generates media input events for the analog stick presses (Play/Pause) and for the left (Rewind) and right (Fast Forward) shoulder buttons (L1/R1). If you do not use those buttons in your app or game, make sure you do not capture or throw away those button events so the user can control media playing in the background.
-
If you repurposed the media buttons on the Amazon Fire Game Controller for other purposes in your app, users of the new Amazon Fire Game Controller cannot use that functionality without the buttons. Consider updating your app to use buttons common to both game controllers, and updating your on-screen hints.
- Q: How do I manage volume control from the Amazon Fire TV Game Controller?
- Except for Fire TV (3rd Gen), other Fire TV devices can stream audio to the headphone jack on the Amazon Fire Game Controller (current controller generation only). The left and right trigger buttons (L2/R2) are used to control the volume.
- Volume control is a system function and cannot be mapped to other buttons in your app. However, if you do not use the trigger buttons in your app or game, make sure you do not capture or throw away those button events so the user can control media playing in the background.
- Q: Can I override the Microphone button on the Fire TV Voice Remote in my app?
- The Microphone button launches system-wide voice capabilities (requesting a transient audio focus) and cannot be overridden. Your application should handle this audio focus change event (
AUDIOFOCUS_LOSS_TRANSIENT
) as well as other audio focus change events too (AUDIOFOCUS_LOSS
andAUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK
), since any application (not just voice) might request any kind of audio focus. In short, all audio focus use cases should be handled appropriately. See Managing Audio Focus for more details. - Q: What does the Menu button do, and can I override it in my app?
- By default, the Menu button invokes the Android context menu, which appears as a list of menu items centered on the screen. You can override the menu button to provide your own custom menu user interface, or for any other purpose.
- If you only have one menu item, consider using the Menu button as a simple toggle (for example, to turn closed captions on or off), and provide an onscreen hint to expose that feature to your users.
- Q: Why is my activity restarted from scratch when a controller is connected, disconnected or sleeps?
- These events are handled as runtime configuration changes by Android. To ignore these events in your app, modify your
AndroidManifest.xml
to include theandroid:configChanges
attribute, and include keys forkeyboard
,keyboardHidden
, andnavigation
:
<activity android:name="MyActivity"android:configChanges="keyboard|keyboardHidden|navigation">
- See the Android Guide Handling Runtime Changes for information on the configChanges attribute and how to handle configuration changes in your app, if necessary.
- Q: How do I handle game controller disconnects in my app or game?
- The Amazon Fire Game Controller may disconnect from the system if it is idle or if either stick is held at an angle for more than five minutes (to preserve battery life). Other controllers may also disconnect when idle or when battery life runs out. Use the Android
OnInputDeviceRemoved
listener to handle controller disconnection events. Consider pausing the game or displaying a dialog to let the user know the controller is no longer available.
Fire TV Stick
- Q: What are the differences between Amazon Fire TV and Fire TV Stick?
- Fire TV Device Specifications lists the specifications for all Fire TV devices.
- Q: How do I adapt my Amazon Fire TV app to Fire TV Stick?
- Both Amazon Fire TV and Fire TV Stick run the same Fire OS (see Fire OS Overview). However, because of the more limited hardware for some older Fire TV Sticks, optimizing your app for performance and stability may be critical. Make sure you follow Android best practices for hardware acceleration and performance. Watch out in particular for OpenGL and textures. See Fire TV Device Specifications for specific details about specifications for each Fire TV device.
- Q: How can I identify an Fire TV Stick device programmatically?
- You can check for the feature
amazon.hardware.fire_tv
to identify all Fire TV devices. To look for the Fire TV Stick, you can check for the MODELAFTM
orAFTT
. See Identifying Amazon Fire TV Devices for more information. - Q: Some of the images/backgrounds in my app are not appearing, or I'm getting grey boxes for those images.
- This is usually a result of bitmap images or textures that are too large. Fire TV Stick supports textures up to 2048x2048. You may see an error in the logs like this if your app has this problem:
W/OpenGLRenderer( 8941): Bitmap too large to be uploaded in a texture (3840x2160, max=2048x2048)
Also, make sure your images for Fire TV are in the drawables-xhdpi/
folder and not in drawables/
. Platform scaling of the default drawables may result in large images that exceed the texture limit.
Last updated: Feb 06, 2024