Skip to content

jerynv/droidplay

Repository files navigation

DroidPlay

An AirPlay 2 receiver for Android TV / Google TV that gets the two hard parts right:

  • Audio that stays locked. Low-latency RAOP audio path with a real jitter buffer, clock-drift compensation, and underrun concealment — modeled on the approach proven in jqssun/android-airplay-server.
  • Video that doesn't stutter. Async MediaCodec with presentation-timestamp-driven release, buffer-ahead depth for streamed sessions, and a deliberate late-frame drop policy instead of decode-loop stalls.

Plus a UI that respects your TV: one calm status screen, not a settings maze.

Status

Early development, but it builds and runs. See docs/ARCHITECTURE.md for the design and the analysis of the two upstream codebases this project draws from, and CHANGELOG.md for what's landed.

Build & install

Requires JDK 17+, the Android SDK (compileSdk 36, NDK 28), and CMake 3.22.

./gradlew assembleDebug                 # -> app/build/outputs/apk/debug/app-debug.apk
./gradlew testDebugUnitTest             # JVM unit tests
./gradlew assembleRelease               # R8-minified release APK

# install to a Google TV over adb (enable network debugging on the TV first)
adb connect <tv-ip>:5555
adb install -r app/build/outputs/apk/debug/app-debug.apk

Then open Screen Mirroring / AirPlay on an iPhone or Mac and pick the TV.

Upstream credit

DroidPlay stands on two open-source AirPlay receiver implementations:

Because it incorporates GPL-3.0 code, DroidPlay is licensed GPL-3.0 as a whole. See LICENSE and per-file headers.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages