Inspiration

Motion gaming on the TV used to mean buying a special controller or camera. But everyone already carries a motion sensor: their phone. We wanted to see whether the accelerometer and gyroscope in an ordinary smartphone could turn a Fire TV into a living-room sports console, with no extra hardware and nothing to install.

What it does

TennisTV is a Fire TV tennis game controlled by your phone. The TV shows a room code and a QR code. You scan it, a web page opens in your phone's browser (no app download), and you tap Start. From then on, your phone is the racket. Swing speed sets the power of your shot, and the direction of your wrist decides forehand or backhand. Your player moves automatically, so the game is about timing your swing rather than precise aiming, which suits what phone sensors can reliably measure. After the match, a results screen shows your swings, hits, peak power and an estimated calorie burn [check].

How we built it

  • Fire TV app: a native Android (Kotlin) app that runs the game fullscreen in a WebView, with Leanback launcher support so it shows up on the Fire TV home screen. We installed and tested it on a real Fire TV over ADB.
  • Game: an HTML5 canvas tennis game with an AI opponent, scoring, and swing-driven shots.
  • Phone controller: a web page that reads the DeviceMotion sensors, detects swings on the phone itself, and sends only small swing events (power and direction).
  • Relay: a Node.js WebSocket server that pairs phones to a TV by room code and forwards swing events in real time. It is served over HTTPS, because phone browsers block motion sensors otherwise.
  • Lobby and results: a QR-code pairing screen and a stats screen that are controllable with the Fire TV remote.

Challenges we ran into

  • Phone sensors can't track position. An accelerometer drifts within seconds, so we designed around gestures instead of tracking: swings trigger shots, the player moves automatically, and the hit timing window is generous.
  • Latency. Wi-Fi plus a relay adds delay, so swing detection runs on the phone, only small events are sent, and the TV plays the swing animation and sound immediately on input.
  • Browser sensor rules. Motion sensors need HTTPS and, on iOS, a permission prompt triggered by a tap, which shaped the pairing flow.
  • Getting onto a real Fire TV. We hit several setup problems, including an SDK-version mismatch (INSTALL_FAILED_OLDER_SDK), icon resources that required a newer minimum SDK, and ADB connection issues, and had to fix each one before the app would run on the device.

Accomplishments that we're proud of

  • A game that is playable on a real Fire TV, controlled by an ordinary phone with no app install.
  • A pairing flow that takes a few seconds: scan, tap, swing.
  • A design that works around the limits of phone sensors instead of fighting them.
  • A reusable phone-as-controller foundation, not just a single game.

What we learned

  • Designing for the sensor's strengths (gestures, timing, rhythm) works far better than trying to track precise position.
  • Instant on-screen feedback matters more than raw latency numbers for how responsive a game feels.
  • Building for TV is its own discipline, with remote-only navigation, fullscreen WebViews and device setup quirks that don't exist on phones.

What's next for TennisTV

We plan to build more games on the same controller: boxing, bowling and a rhythm-slash game, plus two-player matches and optional AI commentary using Amazon Bedrock and Polly. We also want better swing calibration across phone models and a proper Fire TV catalog presence, so any household can turn their phones into controllers.

Built With

Share this project:

Updates

Submission history