Skip to content

Repository files navigation

AirRoom TV logo  AirRoom TV

Instant, private screen mirroring and high-fidelity music streaming, right on your television.

AirRoom TV provides a cross-platform, low-latency AirPlay receiver experience for Apple devices, requiring no registration, no advertisements, and no cloud-based telemetry tracking.

Android TV Kotlin Jetpack Compose C++ Gradle

🤔 Why AirRoom TV?

Sharing a screen or playing audio on a television should be direct and instantaneous. It should not require configuring complex casting hardware, logging into social media accounts, or buying expensive ecosystem-locked hubs.

AirRoom TV is engineered to be the simplest, fastest, and most private way to turn any Android TV device into an AirPlay receiver:

Feature AirRoom TV Traditional Smart TV Cast Apple TV Hardware
Setup Cost Zero. Simply install and open the app Requires proprietary companion apps & setups Requires buying high-priced hardware
Protocol Native AirPlay & RAOP integration Often relies on DLNA or custom screen protocols Proprietary Apple ecosystem
Hardware Compatibility Any Android TV & Google TV device Limited built-in support, varies by brand Apple-only ecosystem
Privacy 100% Local. Streaming data never leaves the network Collects telemetry, viewing habits, & usage analytics Closed source, cloud accounts required

✨ Highlights

Feature What it does
📺 Low-Latency Mirroring Mirrors screens from iPhones, iPads, and MacBooks directly onto the television screen.
🎵 Audio Receiver Engine Plays high-fidelity music, displaying metadata (title, artist, progress) and dynamic blurred album art backgrounds.
🛜 Native Bonjour Discovery Leverages Android's native system daemon (NsdManager) for reliable _airplay._tcp and _raop._tcp advertisements.
👤 Sender-Aware UI Sanitizes and displays the human-readable sender name when system-wide audio does not supply track metadata.
🎛️ TV-First Compose UI Provides a native television layout optimized for D-pad navigation with capsule-style card options.
🔒 Secure Connections Protects the television screen from unauthorized casts using manual connection approval popups.
🔄 Live Server Reload Dynamically stops and restarts background AirPlay processes immediately when settings are updated.
🌉 Developer Emulator Bridge Leverages a macOS shell utility to bypass local emulator NAT limitations during local testing.
🚫 Zero User Tracking Operates entirely locally with no external analytical reporting, cookie tracking, or user telemetry.

🚀 How to Share & Stream

1. Direct Wi-Fi Streaming 📱 ↔️ 📺

  1. Install and open the AirRoom TV application.
  2. Ensure both the television and the Apple device are connected to the same Wi-Fi network.
  3. Open the Control Center on the iPhone, iPad, or Mac.
  4. Select the target service:
    • For Screen Mirroring: Tap Screen Mirroring and select the primary device name (e.g. MyTV).
    • For Music / Audio Streaming: Tap the AirPlay audio icon and select the device name ending with Speakers (e.g. MyTV Speakers). This is required because audio-only streaming uses the native RAOP protocol.

2. Emulator Testing (Developers) 💻

When running the application inside an Android TV Emulator, Bonjour/mDNS discovery cannot traverse the emulator's NAT interface. To test locally:

  1. Open the app on the TV emulator.
  2. In a terminal on the host Mac, execute:
    chmod +x scripts/emulator-bridge.sh
    ./scripts/emulator-bridge.sh
  3. The bridge script dynamically discovers the emulator's dynamic cryptographic keys and custom name, then advertises the matching services on the Mac's Wi-Fi network.

✔️ Known Limits

Development is active to continuously improve AirRoom TV. The following are the current limitations in this release:

  • Gallery Video Playback: Videos cast directly from the native iOS Photos app/gallery may hang or fail to render video frames, though the audio track streams successfully.
  • Photo Slideshow Transitions: Smooth transitions between casting Photos gallery images are not supported. To view a different photo, the current casting view must be closed to select and cast the next photo.
  • Image Zooming: Zooming or scaling cast images on the TV screen is currently unstable.
  • Screen Mirroring Rotation: Display rotation during active screen mirroring can be unstable or buggy.
  • Screen Mirroring Disconnection: No manual disconnect button is displayed on the TV screen during mirroring; mirroring must be stopped from the sender device.
  • Music Playback Control: Play, pause, and track skip controls using the TV remote are not supported.
  • Native Media Player for Music: Streaming music from an iPhone successfully launches and displays metadata inside the app's native custom media player, but streaming from macOS does not load the custom player.

🤝 Open Source & Contributing

AirRoom TV is open-source. Contributions, issue reports, and pull requests are welcome to help improve the project.

Local Building & Run

Clone the repository and use the Android SDK and Gradle to build and install the debug package:

# Compile the debug APK
./gradlew assembleDebug

# Install onto the connected device/emulator
adb install -r app/build/outputs/apk/debug/app-debug.apk

📚 References & Credits

This project references and incorporates patterns, concepts, or code from the following open-source projects:

  • ariplay-receiver
  • PhairPlay

⚖️ Legal Disclaimer & License

AirRoom TV is an independent compatible receiver application. AirPlay, Bonjour, Apple TV, iPhone, iPad, and macOS are trademarks of Apple Inc., registered in the U.S. and other countries. This project is not affiliated with, authorized, sponsored, or officially endorsed by Apple Inc.

This software is licensed under the MIT License - see the LICENSE file for details.

About

Turn your Android TV into an AirPlay receiver. Stream, cast, and mirror.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages