Loop countdown · Android

One lap at a time

Turn “the next N minutes” into a countdown. Start it from the lock screen, pause it for real, and let it ring when the lap is done.

  • Android 8.0+
  • No account
  • No internet permission
  • No ads or tracking
Running Lap
15:30
25 min lap
5152545
Start 25 min

Lap · 25 min

Timer running

now

Features

Built for the way a timer actually gets used

A handful of lengths you reuse all day, started without unlocking anything, ended with one tap.

Start from the shade

A media-style card in the notification shade and on the lock screen starts a new lap without opening the app.

A pause that really pauses

Pausing cancels the system alarm and freezes the remaining time. Resume picks up exactly where it stopped.

Rings, vibrates, wakes the screen

A foreground service loops the alarm sound, vibrates and turns the screen on — and gives up after five minutes.

Presets you decide

5, 15, 25 and 45 minutes out of the box, covering a micro-break to deep focus. Add or remove your own.

Never loops on its own

Every lap is deliberate. Nothing restarts behind your back, so the timer never becomes background noise.

Offline by construction

The app does not declare the INTERNET permission, so it has no technical way to send data anywhere.

Try it

The whole app is one card

A live reproduction of the main screen and the media card — same states, same controls. Everything runs in your browser; nothing is sent anywhere.

Ready
25:00
25 min

Media card

Lap · 25 min

Tap play to start the timer

now

Drag the progress bar to move the remaining time.

Why

Why Lap keeps its own time

The first build handed timing to the system clock app. On Xiaomi HyperOS that broke in a very specific way: with Lap in the background, the clock app’s screen refused to open.

  1. 01

    Media-card taps are in-process callbacks

    Tapping play in the notification shade calls into Lap itself. Android does not make a jump on the app’s behalf, so Lap had to launch another app’s activity from the background.

  2. 02

    MIUI adds a layer AOSP does not have

    SYSTEM_ALERT_WINDOW, the chained-launch switch, a higher-priority process and PendingIntent start modes all failed. The system logged the refusal as a MIUI permission denial.

  3. 03

    Owning the timer removes the jump

    With AlarmManager.setAlarmClock() and a foreground ringing service, nothing crosses an app boundary. The bug vanished, and the overlay permission became unnecessary.

What was tried against the system clock app

AttemptResult
Grant SYSTEM_ALERT_WINDOW (background-activity allowance)Allowed by Android, blocked again by MIUI
Enable “chained launch” in system settingsEnabled, still denied
Promote the process with a foreground service firstNo change in the logs
setPendingIntentBackgroundStartModeDropped by the system
Override the MIUI policy with cmd appopsNo such switch exists

Two side effects worth knowing: setAlarmClock shows the status-bar alarm icon, and it is ignored by battery saver and app standby buckets.

Access

Permissions and known limits

Six permissions, each tied to one visible behaviour. Notification permission is requested when you first press start — not the moment you open the app.

Permissions

POST_NOTIFICATIONS
Shows the media-style timer card in the notification shade and on the lock screen
SCHEDULE_EXACT_ALARM · USE_EXACT_ALARM
Fires the alarm at the exact minute the lap ends
VIBRATE
Vibrates when a lap ends
WAKE_LOCK
Wakes the screen while the alarm rings
FOREGROUND_SERVICE · SPECIAL_USE
Keeps the ringing service alive for the few minutes the alarm sounds

Deny notifications and the timer controls cannot appear. Nothing else changes, and no other permission touches your personal data.

Known limits

  • No full-screen ringing page

    The target device rejects fullScreenIntent, so ringing is a notification plus sound plus a screen wake.

  • Silent mode does not silence it

    The alarm sound uses the alarm volume stream. Lower alarm volume or enable Do Not Disturb.

  • Changing presets leaves the running lap alone

    The current lap keeps its length; the newly selected preset applies from the next one.

Privacy

The policy is short because there is nothing to report

No account, no analytics, no crash reports, no advertising ID. Settings stay in the app’s private storage on your device, and the app cannot reach the network even if it wanted to.

Read the privacy policy