Android app for controlling displays through the MonitorControl Remote HTTP API.
- Connects to a MonitorControl host with
host + port + bearer token - Scans your local network for candidate hosts from the settings dialog
- Shows connected displays and their current status
- Supports global controls for brightness, volume, and power
- Supports per-display controls for brightness, volume, power, and input source
- Persists connection settings and last known input source per display (DataStore)
- Android 8.0+ (API 26)
- A running MonitorControl Remote HTTP API server on your network
- Valid bearer token for the server
- JDK 11
- Android Studio version that supports AGP
8.13.2and Kotlin2.0.21
- Open this project in Android Studio.
- Let Gradle sync complete.
- Run the
appconfiguration on a device or emulator. - On first launch, configure:
Host(or use auto scan)Port(default51423)Bearer Token
- Save settings and start controlling displays.
GET /api/v1/healthGET /api/v1/displaysPOST /api/v1/displays/brightnessPOST /api/v1/displays/{id}/brightnessPOST /api/v1/displays/volumePOST /api/v1/displays/{id}/volumePOST /api/v1/displays/powerPOST /api/v1/displays/{id}/powerPOST /api/v1/displays/{id}/input
./gradlew assembleDebug
./gradlew testDebugUnitTest
./gradlew connectedDebugAndroidTestapp/src/main/java/com/demogorgon314/monitorcontrolremotecontrolandroid/
data/
local/ # DataStore-backed local persistence
remote/ # Retrofit API models and network setup
repository/ # API repository and error handling
scan/ # LAN host scanner
feature/
home/ # Main screen, state, and ViewModel
settings/ # Connection settings dialog
ui/theme/ # Compose theme
- The app currently uses HTTP (cleartext traffic is enabled in manifest).
- Network calls include bearer auth and retry handling for transient failures.