Case study · v1.0.2
Vela
Your iPhone, on the big screen.
Android TVGoogle TVKotlinAndroid TVC/C++ (NDK)MediaCodec
The problem
An iPhone or a Mac can mirror its screen to an Apple TV, but not, out of the box, to an Android TV or a Google TV.
The idea
A small open-source receiver that runs on the TV itself. Open it, choose the TV under Screen Mirroring on the iPhone, type the PIN, and the screen is there. No cables, no extra box.
What I built
A Kotlin app for Android TV and Google TV (Android 7.0 and up), built on two open-source projects, Android AirPlay Server and UxPlay, under GPL-3.0. The TV announces itself on the local network, a native engine handles pairing and media, and MediaCodec decodes the picture.
PIN pairing is on by default, with no fixed fallback code. Nothing is recorded, and the receiver only runs while the app is on screen.
My role
I adapted the upstream receiver, built the TV interface for a remote, and set up the release: every version ships with its full source, licences and checksums. 16 automated tests pass. It has not been tested on a real TV yet, and I’d rather say so.
Facts
- Status
- Released, not yet tested on a real TV
- Latest version
- 1.0.2
- Commits
- 14
- Releases
- 3 (1.0.0, 1.0.1, 1.0.2)
- Licence
- GPL-3.0, credits the upstream projects
Stack
- Kotlin: the Android TV app and its remote-friendly interface
- C/C++ through the NDK: the native pairing and media engine (from upstream)
- MediaCodec, SurfaceView: hardware video decoding
- Oboe: audio
- DNS-SD: showing the TV on the local network