Skip to main content

Generated page. Written from IdaMilk/VolumeEnforcer at commit 6120773 on 2026-07-28. The repository has 1,002 files, nearly all Gradle and Android build scaffolding; the application is four Kotlin files.

VolumeEnforcer

What is it?

A minimal Android utility for Android Enterprise Dedicated Devices managed by Microsoft Intune. It sets every audio stream to maximum volume on boot and re-enforces it every 15 minutes. There is no visible UI.

Purpose

Kiosk devices used as alert stations or announcement terminals are useless if muted, and volume gets changed — by an accidental key press, a stray gesture, or someone silencing a device and forgetting.

An audible alert that nobody hears is a safety problem, not an inconvenience. This removes the failure mode entirely: whatever changes the volume, it comes back within fifteen minutes and always after a reboot.

Audio streams enforced

StreamCovers
STREAM_MUSICMedia playback
STREAM_RINGIncoming calls
STREAM_NOTIFICATIONNotifications
STREAM_ALARMAlarms
STREAM_SYSTEMSystem sounds
STREAM_DTMFDial tones
STREAM_ACCESSIBILITYAccessibility audio

All seven, rather than just the obvious ones — because which stream an alerting app uses is not always predictable.

How it Works

Four Kotlin classes, and the whole design is in their names:

ClassRole
BootReceiverBroadcast receiver — enforces on device boot
VolumeWorkerWorkManager worker — the 15-minute enforcement cycle
VolumeManagerApplies maximum volume across all streams
MainActivityEntry point; the app has no meaningful UI

Using WorkManager rather than a foreground service is the right call for a periodic task: it survives reboots, respects Doze, and needs no persistent notification. Fifteen minutes is also the shortest interval WorkManager permits for periodic work, so the cycle is as tight as the platform allows.

Tech Stack

TechnologyPurpose
KotlinLanguage
Android WorkManagerPeriodic enforcement
GradleBuild
Microsoft IntuneDeployment and device management

Operations

Distributed through Intune as a line-of-business app to Android Enterprise Dedicated Device enrolments. A signed app-release.apk is committed under app/release/, so the deployable artefact is available without a build — convenient, though it means the committed APK and the current source can drift.

local.properties is also committed. It normally holds a machine-specific Android SDK path, so it is noise rather than a risk, but it is conventionally gitignored and will differ per developer.

Repository

RepositoryIdaMilk/VolumeEnforcer
Primary languageKotlin
Files1,002 (about 20 meaningful)
Last activity2026-04-08
StatusActive

The only Android project in the organisation, and the largest repository by file count despite being one of the smallest by code — Gradle wrappers and generated Android resources account for nearly all of it. A CLAUDE.md is present.