A native Android client for Jellyfin servers built with Jetpack Compose and Material 3.
Afinity provides a clean, responsive interface for accessing your Jellyfin media library on Android devices. The app focuses on delivering smooth playback performance and an intuitive browsing experience.
Media Playback
- Hardware-accelerated video playback with LibMPV
- Multiple audio and subtitle track support
- Resume functionality across sessions
- Trickplay navigation with thumbnail previews
- Media Segments Support (Intro/Outro Skipper)
Content Discovery
- Library browsing by content type
- Search and filtering capabilities
- Favorites management
- Cast and crew information
Interface
- Material 3 design with system theming
- Responsive layouts for different screen sizes
- Gesture-based player controls
- Dark and light theme support
Server Integration
- Secure authentication
- Playback progress synchronization
- Multiple quality options
- Background library updates
| Feature | Preview |
|---|---|
| Login | |
| Home Screen | |
| Library Browser | |
| Movie Details | |
| TV Show Details | |
| Episode Selection | |
| Person Details |
Requirements
- Android 14+ (API level 35)
- Jellyfin server 10.8+
Download Options
Download the latest APK from our Releases page
git clone https://github.com/MakD/AFinity.git
cd AFinity
./gradlew assembleRelease- Install and launch Afinity
- Enter your Jellyfin server address (e.g.,
http://192.168.1.100:8096) - Sign in with your credentials
- Access your media library
For remote access, ensure your Jellyfin server is configured for external connections.
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- Architecture: MVVM with Repository pattern
- DI: Hilt
- Navigation: Navigation Compose
- Player: LibMPV
- Networking: Retrofit + Jellyfin SDK
- Images: Coil with BlurHash
- Storage: Room
Building
./gradlew build
./gradlew test
./gradlew installDebugContributing
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Download management for offline viewing
- Adaptive streaming with quality selection (transcoding support)
- Chromecast support
- Enhanced accessibility features
- Multi-user profile switching
- Multi-server support
- Picture-in-picture mode
- Advanced subtitle styling options
- Audio delay adjustment
- Playback speed controls
- Tablet-optimized layouts
- Advanced search filters
- Custom library views
- Gesture customization
- Background sync optimization
- Cache management
- Network quality detection
- Performance monitoring
Join the conversation on our Discord server at https://discord.gg/uZTjF8c2Vm
- Jellyfin - Open source media server
- MPV - Media player engine
- libmpv-android by Jarne Demeulemeester - Android MPV integration
Afinity respects your privacy:
- No tracking or analytics are collected
- All data stays local or with your own Jellyfin server
- No third-party services are used without your explicit consent
- Source code is open for full transparency
LGPL-3.0 License - see LICENSE for details.
Made with ❤️ for the Jellyfin community
Afinity is not affiliated with Jellyfin. Jellyfin is a trademark of the Jellyfin project.