A native Android client for SendSpin -- synchronized multi-room audio that just works.
Play music in perfect sync across every room in your home. No special hardware required -- just your Android phone or tablet.
- Precision-synced audio across unlimited rooms
- Background audio with lock screen and notification controls
- Android Auto integration
- Android TV support
- Hardware volume buttons with bidirectional sync
- Skip, pause, seek, and group switching from any device
- Adjustable sync offset for speaker delay compensation
- Browse your full music library -- albums, artists, tracks, playlists, and radio
- Full-text search across your entire collection
- Album and artist detail screens with cover art
- Create and manage playlists, add or remove tracks
- Queue management -- view upcoming tracks, reorder, remove, clear
- Play Next and Add to Queue from any browse or search screen
- Shuffle and repeat mode controls
- Opus -- efficient compressed streaming, great for cellular
- FLAC -- lossless quality for critical listening on WiFi
- PCM -- uncompressed raw audio
- Network-aware codec selection -- automatically choose the best format per connection type
- Separate WiFi and cellular codec preferences
- 48 kHz stereo output
- Material You dynamic colors -- matches your wallpaper on Android 12+
- Full dark and light theme support
- Bottom navigation with Home, Library, Search, and Playlists tabs
- Mini player bar with configurable position (top or bottom)
- Full-screen now playing view with album art and playback controls
- Queue bottom sheet accessible from the now playing screen
- Full-screen immersive mode
- Keep screen on while playing
- Portrait and landscape support
- Automatic server discovery via mDNS/Zeroconf on local networks
- Manual server entry for direct connections
- Remote access via Music Assistant Remote ID (WebRTC)
- QR code scanner for quick Remote ID input
- HTTP proxy support for routed connections
- Automatic reconnection on network changes
- Works on WiFi, Ethernet, and cellular networks
- Multi-server support with saved server list
- Add Server wizard with guided setup (discover, login, test, save)
- Music Assistant authentication with token-based login
- Per-server connection configuration
- Server status monitoring
- Custom player name
- Display preferences (full-screen mode, keep screen on, mini-player position)
- Audio sync offset tuning
- Preferred codec selection (per WiFi and cellular)
- Low memory mode for older devices
- Debug logging with log export
- Stats for Nerds -- real-time sync diagnostics
- Install -- Download the latest APK from Releases
- Open -- The app searches for SendSpin servers on your network
- Tap -- Select your server and you're listening
- Local network: Servers are discovered automatically via mDNS
- Manual entry: Tap "Enter server manually" and type your server address (e.g.,
192.168.1.100:7080) - Remote access: Enter a Music Assistant Remote ID or scan a QR code to connect from anywhere
- Proxy: Configure an HTTP proxy for routed connections
- Android 8.0 (Oreo) or higher
- A SendSpin server on your network (or a Remote ID for remote access)
Since SendSpin Player isn't on the Play Store, you'll need to allow installation from your browser:
- Download the APK from Releases
- Open the downloaded file
- When prompted, tap Settings -> enable Allow from this source
- Go back and tap Install
SendSpin Player is built with native Kotlin and Jetpack Compose, using a hybrid architecture:
- Jetpack Compose for library browsing, search, playlists, detail screens, queue, and settings
- XML layouts with ViewBinding for the main activity shell, now playing screen, and server management
- Fragments for navigation within the bottom navigation tabs
- ViewModels for state management across configuration changes
- Coroutines for async operations and WebSocket communication
- Media3 MediaSession for system integration, notifications, and Android Auto
SendSpin Player speaks the SendSpin Protocol -- a WebSocket-based streaming protocol designed for real-time synchronized audio. The server timestamps every audio chunk and each client uses precision clock synchronization to play them at exactly the right moment. The result: every speaker in your home plays the same beat at the same time.
MIT