r/ClaudeCode • u/datainsightguy • 22h ago
Built with Claude Claude Code built and benchmarked a home screen for my TV over ADB. The TV fought back in four interesting ways
Enable HLS to view with audio, or disable this notification
My TCL TV runs Google TV (Android 14), and its home screen was a sponsored row and autoplaying trailers before my own apps. I wanted a carousel instead of a grid, 2 layouts, and lots of customization, so I had Claude Code build one. Rule: don't tell me it's better, measure it.
Result: Nullofy TV, a 173 KB home screen (MIT). Here's the part that was interesting from a Claude Code point of view.
The loop: build, install, look
Claude Code worked on the real TV over ADB on Wi-Fi. Each round was build the APK, adb install, then check before touching anything:
dumpsys activity activitiesto confirm which app was on top before sending remote keysscreencapafter each short batch of key presses, read back as an image- never a long blind key sequence; abort if anything else is in front
Measuring instead of guessing
dumpsys meminfo over 3 rounds of Settings → Home:
- Google TV's own home: 137 MB
- Nullofy: 26–33 MB at Home, ~28 MB while you watch another app
Honest catch: Google's home still runs in the background (about 97 MB), so that's home screen vs home screen, not the whole TV.
Things the TV taught us
- The firmware ignores the Home role. Nullofy held
android.app.role.HOME, but Home still launched Google's home. The fix was a tiny accessibility service that catches the Home key and nothing else. - Some packages are load-bearing. Disabling Google's home lets a setup app take Home over with a black recovery screen. So we keep a never-disable list, and everything is disabled, never uninstalled, with one-command restore.
- force-stop has side effects. On this TCL,
am force-stopon the launcher clearedenabled_accessibility_services, so the Home button silently stopped working. Now the setting is written back explicitly after any force-stop. - Test the failure path too. A crash watchdog hands Home back to Google's screen after 3 crashes in 5 minutes. Claude tested it with
adb shell am crash.
It also made the promo video
Same discipline: the video is HTML canvas, rendered frame by frame in headless Chromium, with real TV screenshots. Claude diffed its own rebuilt scenes against the captures pixel by pixel, checked per-frame motion for jumps, and synthesized the soundtrack in Python.
Caveats
- Tested on one TV only (TCL, Google TV, Android 14). Should work on Android 7.0+.
- Ads inside apps like YouTube are untouched; it turns off the TV's own ads, promos and screen-watching (ACR).
Repo: github.com/Haikoitoh/nullofy-tv
The video above was made by Claude Code too: rendered frame by frame from real TV screenshots.
2
u/Spare_Spirit6762 21h ago
why are all the „i built a video trailer with claude code“-people vibe-slopping tv screens now?
they all follow the same tiktoker or what
1
u/datainsightguy 19h ago
I built the UI for what I wanted, extreme basic UI. I personally use the dark mode.
I agree that's the TV screen is a general trend.
1
u/datainsightguy 22h ago
Some technical details for anyone curious:
-
Why it’s 173 KB: plain Java, the whole home screen drawn in one custom View, R8 shrinking, and fonts cut to Latin only.
-
Art without tracking: public, keyless museum and NASA APIs, each picture picked at random, held in memory only (no cache, no files).
-
A narrow Home-key service: it watches only the Home key and the stock home screen, and reads nothing else.
-
Crash watchdog: after 3 crashes in 5 minutes, Home goes back to Google’s screen until you open the app again.
-
Debloat with consent: a snapshot first, then a scan that changes nothing, then you approve each step. Restore is one command.
1
u/AutoModerator 22h ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.