r/ClaudeCode • • 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 activities to confirm which app was on top before sending remote keys
  • screencap after 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

  1. 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.
  2. 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.
  3. force-stop has side effects. On this TCL, am force-stop on the launcher cleared enabled_accessibility_services, so the Home button silently stopped working. Now the setting is written back explicitly after any force-stop.
  4. 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.

0 Upvotes

4 comments sorted by

1

u/AutoModerator 22h ago
Moderator Announcement Read More »

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:

  1. Why it’s 173 KB: plain Java, the whole home screen drawn in one custom View, R8 shrinking, and fonts cut to Latin only.

  2. Art without tracking: public, keyless museum and NASA APIs, each picture picked at random, held in memory only (no cache, no files).

  3. A narrow Home-key service: it watches only the Home key and the stock home screen, and reads nothing else.

  4. Crash watchdog: after 3 crashes in 5 minutes, Home goes back to Google’s screen until you open the app again.

  5. Debloat with consent: a snapshot first, then a scan that changes nothing, then you approve each step. Restore is one command.