VibePlayer is a modern Android video player with support for syncing with adult devices via Buttplug API.
- 🎬 Local video playback — support for various video formats via ExoPlayer
- 📁 Gallery — video library management with rename and cover options
- 🔗 Buttplug API integration — direct device sync via Buttplug.io
- 📡 Bluetooth connection — device support through Intiface Central
- ⏱️ Auto-switch timer — automatic video switching by timer
- 🎛️ Playback speed — adjustable from 0.5x to 2.0x
- 🔒 Password protection — app lock with password
- 🌐 Multi-language — Russian/English with auto-detection
- 📥 Video download — URL download directly to app
- 🎨 Material Design 3 — modern UI built with Jetpack Compose
- 💾 Encrypted database — SQLCipher for data protection
VibePlayer uses Buttplug API to sync with compatible devices:
- Lovense — Max, Nora, Lush, Calor, Ferri, Solace, and more
- WeVibe — Pivot, Connect, Verge, Moxie, Jive series
- Kiiroo — Pearl, Keon, Onyx, Pulse
- Satisfyer — Bluetooth-enabled models
- Magic Motion — Compatible devices
- Other — Any device supported by Buttplug.io
┌─────────────────┐ Bluetooth ┌─────────────────┐
│ VibePlayer │ ◄────────────────► │ Device │
│ (Android) │ │ (Lovense, etc.)│
└────────┬────────┘ └─────────────────┘
│
│ Buttplug Protocol
▼
┌─────────────────┐
│ Intiface Central│
│ (Server) │
└─────────────────┘
- Intiface Central runs on PC or mobile device
- VibePlayer connects via Bluetooth
- Video syncs with device through Buttplug Protocol
- Intensity adjusts automatically based on playback
| Command | Description |
|---|---|
DeviceScan |
Scan for nearby devices |
DeviceConnect |
Connect to selected device |
StopAllDevices |
Stop all device activity |
SingleMotorVibrateCmd |
Control vibration intensity |
BatteryLevelCmd |
Check device battery level |
- ✅ Single protocol for all supported devices
- ✅ Open specification — fully documented
- ✅ Active community — regular updates and support
- ✅ Cross-platform — works on Android, iOS, PC
| Category | Technology |
|---|---|
| Language | Kotlin 2.0.21 |
| UI Framework | Jetpack Compose, Material Design 3 |
| Architecture | MVVM, Clean Architecture |
| Dependency Injection | Hilt |
| Database | Room + SQLCipher |
| Async Operations | Coroutines, Flow |
| Navigation | Navigation Compose |
| Networking | OkHttp |
| Media Player | ExoPlayer (Media3) |
| Image Loading | Coil |
| Device Protocol | Buttplug Android Library |
- Android 8.0 (API 26) or higher
- Android 13 (API 33) recommended for full localization support
- Intiface Central (PC or mobile app)
- Compatible Bluetooth device
- Bluetooth permission granted
- Download APK from Releases
- Enable installation from unknown sources in device settings
- Install APK and launch the app
- For Buttplug: install Intiface Central
Coming soon...
# Clone the repository
git clone https://github.com/spgsroot/VibePlayer.git
cd VibePlayer
# Open in Android Studio or build via command line
./gradlew assembleDebug
# APK will be created in app/build/outputs/apk/debug/- Android Studio Hedgehog or newer
- JDK 11 or higher
- Android SDK 36
- Download and install Intiface Central
- Launch the application on your PC
- Enable Bluetooth server in settings
- Open VibePlayer on your Android device
- Navigate to Settings → Device Connection
- Tap Start Scan
- Select your device from the discovered list
- Add a video from gallery or paste URL
- Tap to start playback
- Device will sync automatically with video
- Open Settings menu
- Configure auto-switch timer for automatic playback
- Adjust playback speed (0.5x - 2.0x)
- Set your preferred language
| Method | Description |
|---|---|
| Gallery | Import videos from device storage |
| URL | Paste direct video link |
| Batch Import | Import multiple URLs at once |
The app supports two languages with automatic detection:
| Language | Option |
|---|---|
| System Default | Follows device language |
| Русский | Force Russian interface |
| English | Force English interface |
Change language in Settings → Language.
- 🔐 App Password — PIN code protection against unauthorized access
- 🔒 SQLCipher — 256-bit AES database encryption
- 🛡️ Secure Storage — Android Keystore for sensitive data
- 📱 Minimal Permissions — only required permissions requested
VibePlayer/
├── app/
│ ├── src/main/
│ │ ├── java/ru/spgsroot/vibeplayer/
│ │ │ ├── data/
│ │ │ │ ├── db/ # Room database + SQLCipher
│ │ │ │ ├── repository/ # Data repositories
│ │ │ │ ├── downloader/ # Video download service
│ │ │ │ └── storage/ # File storage management
│ │ │ ├── device/
│ │ │ │ └── buttplug/ # Buttplug API integration
│ │ │ ├── domain/
│ │ │ │ └── model/ # Business logic models
│ │ │ ├── ui/
│ │ │ │ ├── player/ # Video player screen
│ │ │ │ ├── gallery/ # Gallery screen
│ │ │ │ ├── settings/ # Settings screen
│ │ │ │ ├── auth/ # Authentication screen
│ │ │ │ ├── dialog/ # Dialog components
│ │ │ │ └── onboarding/ # Onboarding flow
│ │ │ ├── di/ # Hilt dependency injection
│ │ │ ├── locale/ # Localization manager
│ │ │ └── security/ # Auth & encryption
│ │ └── res/
│ │ ├── values/ # Russian strings
│ │ └── values-en/ # English strings
│ └── build.gradle.kts
└── build.gradle.kts
- Buttplug.io Official — Official documentation
- Intiface Central — Connection server
- Device List — Supported devices
- API Reference — API documentation
- Discord Community — Get help and chat
Contributions are welcome! Here's how you can help:
- Report bugs — Open an issue with detailed description
- Suggest features — Share your ideas for improvements
- Improve translations — Help localize the app
- Add device support — Contribute Buttplug device configurations
- Submit PRs — Send pull requests for fixes and features
# Fork and clone
git clone https://github.com/spgsroot/VibePlayer.git
cd VibePlayer
# Create a branch
git checkout -b feature/your-feature
# Make changes and commit
git commit -m "Add: your feature description"
# Push and create PR
git push origin feature/your-featureMIT License — free to use, modify and distribute.
Copyright (c) 2024 VibePlayer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
If you like this project and want to support its development, you can donate via TON:
TON: UQCGFymEHFNq1IcIhXBWJJe7Ha7Cx7RU6apvotRs5DcEEAaG
Every contribution helps keep this project alive and growing! ❤️
- GitHub: @spgsroot
- Email: aqu.de@yandex.ru



