Android TV allows third-party apps to target the largest screens in your house. TVs are huge displays that are shared by the whole family, making them great for not just media consumption (watching videos) but also displaying any passive information you want.
Passive displays have fascinated me for a while, since the rise of smart mirror apps like HomeMirror. Using an old tablet, you can mount a mirror on the wall that also provides you with timely information: the latest news, weather, stock prices, and time. I’ve kept coming back to the idea of a TV, however, because there’s a lot of potential there. With this latest app I’ve been working on, NeoDash, a powerful and modular dashboard is created that gives you a lot of control while making it aesthetically pleasing.
Development was easier than it could be, but also rather challenging. I have incorporated two other projects, pretty much off-the-shelf, which made it challenging to adapt code for a TV. These two other projects were themselves complex, with several modules and a variety of unnecessary features. The app is still fairly small, although there’s plenty of optimization that could be done in the future.
Wallpapers are a very personal thing. Many people may want to personalize it with photos of a recent trip, or of their family. By default, the Android TV launcher has a rather plain picture of mountains and nothing else. This is not something which can be changed. Additionally, there is the Backdrop screensaver which moves between a collection of interesting photos but without much customization.
In creating a new screensaver app, I wanted to let users choose from a variety of wallpaper sources. If there was no source picker, then my implementation wouldn’t be any better. While I could try to build a series of custom implementations, there is already a third-party app which supports many sources: Muzei. This open-source app was created by Roman Nurik and maintained with the help of Ian Lake. Third-party developers have created a lot of sources, giving users ample choice.
Muzei currently doesn’t support Android TV, but it is open source. So I incorporated that code into the app. Users can select from the apps on their device. The default source pulls from popular works of art. What the app also does now is creates a high priority recommendation with this content and an additional background parameter. What does that mean? When you go home to the launcher, it appears as the first recommendation and changes the background. It’s a bit of a workaround, but it effectively changes your homescreen background. (This feature will probably only work on Android N and lower. The Android O launcher doesn’t seem like it’ll have full-res custom backgrounds.)
In addition to the source, users can customize the look of the pictures. They can dim the image, make it grayscale, or apply a blur. These settings all come straight from Muzei. When these effects are applied to the screensaver, it makes it work much better with the information on top. The screensaver does show pertinent information about each artwork including the title, attribution, and name of the source. If you click the center DPAD button, the image temporarily unblurs so you can see it, just like double-tapping in Muzei.
A wallpaper is great, but this is a screensaver app and users expect to have a lot of custom content. You’ll want the time, of course, but there’s plenty of other data: weather, number of notifications, system health, calendar events, and much more. I didn’t want to build all these extensions myself.
There is another open source app called DashClock. Also created by Roman Nurik, the mobile app is a widget which appears on your homescreen. Third-party apps can create small extensions which place can information into this widget. Users can select the order and extensions they want. It’s very much like the Complications API on Android Wear.
I also incorporated this app into NeoDash. It took some time to get the app incorporated. The default weather extension is broken, and there were a handful of user interface problems I had to solve. I also added a few new extensions for users. As you can see from one of the early releases, there was a lot of user interface tweaking that had to be done to make the two apps behave well together along with my custom code.
A new feature I added is the option to put your home Wi-Fi details on the TV as a QR code, making it easy for guests to connect to your Wi-Fi without the need to type in complex passwords. It just works. The screenshot also shows a variety of UI tweaks I have made: changing fonts, adding the user-controlled blur to the background, and changing some spacing. Everything is setup to be customized by users and the UI is optimized for a simple remote control.
I think this is really neat, and by using already-existing platforms you already get a lot of support in the app. Of course, most of these third-party plugins probably don’t support TVs, so you’ll need to contact the developers or sideload them. This would not be so far along without these two apps being open source, so I’m grateful to all of those contributors of those two apps.
It’s a great example of the potential that TVs have to display pertinent information. Combining this with Assistant could make it better. You could view traffic info, your reminders, calendar entries, and more without having to ask.
The app is free to download on Google Play, and is available on GitHub.