SkillAgentSearch skills...

SendspinDroid

SendSpin Android client with background playback, lock screen controls, and Android Auto support.

Install / Use

/learn @chrisuthe/SendspinDroid
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GitHub all releases

SendSpin Player & Music Assistant Client for Android

A native Android client for SendSpin

Features

Synchronized Playback

  • 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

Music Assistant Integration

  • 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

Audio Quality

  • 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

Interface

  • 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

Connectivity

  • 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

Server Management

  • 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

Settings

  • 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

Getting Started

  1. Install -- Download the latest APK from Releases
  2. Open -- The app searches for SendSpin servers on your network
  3. Tap -- Select your server and you're listening

For development and testing guides, see the Wiki.

Connecting to a Server

  • 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

Requirements

  • Android 8.0 (Oreo) or higher
  • A SendSpin server on your network (or a Remote ID for remote access)

Installing the APK

Since SendSpin Player isn't on the Play Store, you'll need to allow installation from your browser:

  1. Download the APK from Releases
  2. Open the downloaded file
  3. When prompted, tap Settings -> enable Allow from this source
  4. Go back and tap Install

Architecture

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

The SendSpin Protocol

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.

License

MIT -- see LICENSE for the full text.

Third-Party Acknowledgments

SendSpin Player uses the following open-source libraries:

| Library | License | Copyright | |---------|---------|-----------| | AndroidX (Core, AppCompat, Lifecycle, Media3, Compose, CameraX, Palette, Preference, Fragment, ViewPager2, SwipeRefreshLayout, ConstraintLayout) | Apache 2.0 | The Android Open Source Project | | Material Components for Android | Apache 2.0 | The Android Open Source Project | | Kotlin & Kotlinx Coroutines | Apache 2.0 | JetBrains s.r.o. and contributors | | OkHttp | Apache 2.0 | Square, Inc. | | Coil | Apache 2.0 | Coil Contributors | | Stream WebRTC Android | Apache 2.0 | Stream.io Inc. | | Java-WebSocket | MIT | Nathan Rajlich | | QR code scanning uses zxing-cpp | Apache 2.0 | |

View on GitHub
GitHub Stars66
CategoryCustomer
Updated6d ago
Forks3

Languages

Kotlin

Security Score

95/100

Audited on Mar 29, 2026

No findings