Saravanan — Portfolio 2026

Skip to content
All products

Android battery alarm

Battery Guard

Rings an alarm when your phone reaches the charge level you choose, so you unplug in time.

Role
Solo developer, from design handoff to a signed release build
Status
Prepared for Google Play closed testing
Stack
Flutter, Dart, Kotlin, flutter_bloc, Foreground services, Home-screen widgets
Battery Guard home screen with live battery details

Results

internet permissions requested
0
alarm sounds, with snooze
4
native home-screen widget sizes
2

01Problem

Leaving a phone on the charger past full wears the battery down, and Android's background limits stop most apps from alerting reliably once they are closed.

02Architecture

A Flutter app with flutter_bloc, on top of a native `specialUse` foreground service that watches the battery with the app closed and starts again after a reboot. Alarm-stream audio and wake locks make alarms and snooze timers fire on time. The 2×1 and 2×2 home-screen widgets are rendered in Kotlin and updated from the battery receiver.

03Key decision

Shipping with no internet permission, so no data can leave the phone. The security review also found a fake-alarm vulnerability where another app could open the alarm screen; launch intents are now sanitized and routes are guarded.

04Result

A signed, obfuscated release build with an automated release-check script, prepared for Google Play closed testing. Alarms ring over the lock screen, and a Test alarm confirms the setup in 5 seconds.

Screens

Battery Guard full-screen alarm
Battery Guard settings
Battery Guard home-screen widgets