Hi: I know this was recently discussed here, and earlier, but I want to re-open and escalate the lack of this API as an urgent problem whose absence is eroding trust in Fire TV (including Signage Stick) more generally.
Context: We have operated a digital signage business based on Fire TV for 10 years. Our fleet has millions and millions of hours on these devices in the field, originally from our Android app and now (reluctantly, but necessarily) supporting Vega too.
It is critical that in such an app, the screen stays on without interaction.
Problem: Without any first class support for keeping the screen on, customers on Vega devices experience something akin to the app crashing: black screen. Our customers on Vega devices are very unhappy.
Problem 2: I could understand that Amazon might wish to discourage use of consumer Fire TV devices for signage/business products as such, and might be withholding this API for this reason. Unfortunately this position ignores several realities and leads to the negative experience that is ultimately damaging to Amazon and the Fire brand overall:
Customer confusion: Vega- and Fire-OS devices are nearly indistinguishable to the end user. Marketing in the Amazon store does not emphasize that it is a different platform/OS, with different capabilities. As such, our customers end up purchasing Vega devices and becoming frustrated that a “Fire TV” no longer works as advertised.
Diverse market and customer base: We work with the Amazon Signage Stick device and team, and we recommend it to new customers. However, some customers will nonetheless prefer the lower price point of the Vega-based devices.
When a customer has a bad experience with a Vega-based device, they are going to be less receptive to us recommending another Amazon device. We have already experienced this with customers, and FWIW I am escalating this situation to our contacts on the Signage team.
Ultimately, without a solution here, this platform difference is too significant for us to ignore, and we will have to start discouraging the purchase of (and recommending return and replacement of) Vega-based devices by our customers.
I would be very happy to discuss this privately with anyone on either team and work toward a solution, even if it involves e.g. Apple-style special entitlements that only specially-blessed apps can get. We would really love to continue the high standard of service and functionality that our customers have enjoyed, for a decade, with Amazon TV sticks. Thanks! ~mike
Thank you for the detailed and thoughtful feedback on the need for an API or flag to prevent sleep mode / keep the display awake for signage and kiosk apps on Vega.
We understand how important first-class support for keeping the screen on is for digital signage use cases, and we appreciate you sharing the context around your fleet, your customers’ experience, and the impact this has.
We’ve captured this as a feature request and shared it with our team for consideration. We’ll provide an update here as soon as we have more information to share.
Thank you. Please feel free to get in touch privately, too.
I want to just re-state that if this is being withheld for Amazon strategic reasons—e.g. to push enterprise apps and customers to the new Signage offering—we can work with that. But at least a stopgap solution would allow us to do that more gracefully than suddenly dropping support.
Hey Mike, I hit the exact same black-screen problem on Vega, so here’s the stopgap I’ve been using until there’s a real flag.
The resource manager only holds the display while your app has an audio-playback or video-playback session. So I play one: a native AudioPlayer from @amazon-devices/react-native-w3cmedia loops a tiny silent MP3 (8 kbps mono, a few KB) while the app is in the foreground. I pause it on AppState background and resume it on active, so the screensaver still behaves normally everywhere else. I start it about 5 s after launch so it doesn’t slow down the first render.
A few things that tripped me up:
the media services need to be in [wants] in manifest.toml (audio.stream, audio.control, media.server, media.playersession and friends). The build adds the modules to [needs] by itself.
strip file:// from the bundled asset’s URI, or the player won’t load it
the silent player takes media-control focus, so “Alexa, play/resume” does nothing (it already thinks it’s playing). You can handle Next/Previous through it, though.