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
- π WebView playback β open a website in-app and use page audio for haptic sync
- π 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
- ποΈ Unified DSP settings β shared smoothing, power boost, and threshold for Player and WebView sources
- β±οΈ 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 to Intiface and discovers supported actuators
- Local player audio or WebView page audio is analyzed in real time
- Intensity is mapped through unified DSP settings and sent through Buttplug Protocol
| Command | Description |
|---|---|
DeviceScan |
Scan for nearby devices |
DeviceConnect |
Connect to selected device |
StopAllDevices |
Stop all device activity |
ScalarCmd / actuator commands |
Control vibration, rotation, oscillation, position and other supported actuators |
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
- Android 10 (API 29) or higher for WebView audio capture haptics
- Intiface Central (PC or mobile app)
- Compatible Bluetooth device
- Bluetooth permission granted
- Android audio output capture consent via MediaProjection
RECORD_AUDIOpermission- A visible foreground capture notification while WebView audio analysis is active
- Note: while WebView is open, Android audio output capture may include other media playing on the device; audio is analyzed locally and converted to haptic intensity.
- 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)
- Tune shared DSP settings for all haptic sources:
- Smoothing β response stability
- Threshold β silence/noise cutoff
- Power Boost β final intensity multiplier
- Set your preferred language
- Open Add Video β Open WebView.
- Enter a website URL.
- Grant Android audio capture consent.
- Play media on the page; VibePlayer analyzes WebView audio and drives the selected Buttplug device through the same DSP settings as the local player.
When local player playback is started again, WebView audio capture is stopped so the two sources do not fight for device control.
| Method | Description |
|---|---|
| Gallery | Import videos from device storage |
| URL | Paste direct video link |
| Batch Import | Import multiple URLs at once |
| WebView | Open a website and use page audio for haptics |
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
- π± Runtime Permissions β Bluetooth and WebView audio capture permissions are requested only when needed
- π§ Local audio analysis β audio samples are analyzed on-device for intensity and are not stored by VibePlayer
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/
β β β β βββ dsp/ # Audio analysis, haptic mapping and runtime DSP config
β β β β βββ model/ # Business logic models
β β β βββ playback/
β β β β βββ player/ # ExoPlayer wrapper and DSP audio processor
β β β β βββ service/ # Foreground playback and WebView audio capture services
β β β βββ ui/
β β β β βββ player/ # Video player screen
β β β β βββ webview/ # In-app WebView playback 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



