ShizuStore

PULSE // BATTERY

kreza6173-pixel

1.0.0 · GitHub

Download APK
Power management Android 8.0+ 11 hours ago MIT
32 ShizuStore
6 GitHub
2 Stars
8 MB Size

More about this app

Overnight per-app alarm-wakeup report with verified one-tap standby restrict and revert, plus wake lock and alarm diagnostics, Doze controls and APK backup

PULSE // BATTERY

Find out what drained your battery overnight, and fix it in one tap. No root. Runs through Shizuku.

License: MIT Android 8.0+ Shizuku No internet Latest release


Why

Your phone loses 15% overnight and the system battery screen just says "Android System". PULSE asks Android directly which apps woke the device, ranks them, and lets you put the worst one to sleep. Every change is read back from the system and can be reverted in one tap.

Screenshots

Overnight drain report Diagnostics Standby and Doze APK Vault Console

Features

Overnight drain report (the headline)

  • Tap Start new period before bed. In the morning: apps ranked by alarm wakeups, with a per-hour rate.
  • One-tap Restrict moves an offender to the Restricted standby bucket. One-tap Revert.
  • Android keeps the counters itself, so PULSE does not run in the background. Detects reboots.

Diagnostics

  • Live battery state: level, temperature, voltage, health, power source.
  • Active wake locks, attributed to the real package (including *job* tags).
  • Top alarms table from dumpsys alarm.

Standby & Doze

  • See and change the standby bucket of every app, with raw bucket codes shown.
  • Add or remove apps from the user Doze whitelist.
  • Force deep Doze on demand to test whether an app survives it.

Vault (APK backup)

  • Export base + split APKs of any app to Download/PulseVault. Survives uninstalling PULSE.
  • Restore with one tap.

Console

  • Run any shell command as the Shizuku user, with 12 read-only quick commands, cancel, copy and share.

Requirements

  • Android 8.0 or newer.
  • Shizuku running (wireless debugging, ADB or root).
  • That is it. No root, no internet permission, no account, no ads, no trackers.

Install

Download the APK from Releases. On first launch PULSE asks Shizuku for permission. If Shizuku says allowed but PULSE still asks, tap Restart app (some Shizuku builds apply a new grant only to a fresh process).

Release signing certificate SHA-256:

3f8c1e2df2deaf9d561a8fdce3c667ed0ceda972622f20d006a1b6098c2a2512

FAQ

Is Restrict safe? It uses the same standby-bucket API Android itself uses. Restricted apps still work when you open them; their background jobs and alarms just run rarely. Messaging apps may deliver notifications late, so do not restrict the ones you need instantly. Revert is one tap, or change the bucket anytime in Standby & Doze.

Why alarm wakeups and not mAh? Per-app mAh estimates are unreliable across vendors and Android versions. Wakeups are counted by the system, are exact, and are the usual cause of overnight drain.

Some apps say "Protected by the system". Android marks core and some vendor apps as exempted. Their bucket cannot be changed without root, so PULSE does not pretend it can.

Does PULSE drain battery itself? No. Nothing runs while the app is closed. The report screen refreshes once a minute only while it is open.

Root features? Not in 1.0. Anything that needs root stays locked until it can be tested on a real rooted device.

How it works

Feature Command
Drain report dumpsys alarm (Alarm Stats per-package totals)
Battery dumpsys battery
Wake locks dumpsys power
Standby bucket am get-standby-bucket / am set-standby-bucket
Doze whitelist dumpsys deviceidle whitelist +pkg / -pkg
Force Doze dumpsys deviceidle force-idle / unforce
APK export pm path then cp
Restore staged in /data/local/tmp, then pm install -r

All parsers are pure Kotlin, unit-tested against real device output. Package names are validated and shell-quoted before any command runs.

Build

CI is the build system: every push builds, tests, lints and uploads app-debug. With signing secrets present it also builds a signed app-release. See docs/RELEASE.md.

Toolchain: AGP 8.13.1, Kotlin 2.2.21, Gradle 8.13, Compose BOM 2025.12.00, compile/target SDK 36, Shizuku API 13.1.5.

Support

If PULSE saved your battery, a star helps other people find it. Contributions and bug reports are welcome, see CONTRIBUTING.md.

License

MIT, see LICENSE. Uses Shizuku-API (MIT), AndroidX, Jetpack Compose and Kotlin (Apache-2.0).

Close

How Shizuku is used

Can run arbitrary shell commands, report alarm wakeups, restrict standby buckets, control Doze and back up APKs via `Shizuku user service shell`

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

Shizuku is used to run privileged shell commands for battery, standby, Doze and APK backup features.

  • Run custom commands: type any shell command in the console screen and run it with Shizuku privileges through the system shell, with preset buttons for common checks and a cancel option for long runs.
  • Report overnight drain: show per app alarm wakeup counts from dumpsys alarm combined with standby bucket states from am get-standby-bucket to identify overnight offenders.
  • Restrict standby buckets: apply one tap standby restriction to a draining app with am set-standby-bucket and revert it later, with the change verified by reading the bucket back.
  • Diagnose battery health: show battery status and health from dumpsys battery, active wake locks from dumpsys power and top alarm sources from dumpsys alarm.
  • Control Doze mode: view deep and light Doze states and Doze whitelists with dumpsys deviceidle, change user whitelisting and force or clear forced idle with dumpsys deviceidle actions.
  • Back up and restore APKs: copy installed APKs to a vault folder with pm path plus file copy, reinstall vault copies with pm install, and delete vault copies when no longer needed.

Android APIs or commands used

  • dumpsys battery
  • dumpsys power
  • dumpsys alarm
  • am get-standby-bucket
  • am set-standby-bucket
  • dumpsys deviceidle whitelist
  • dumpsys deviceidle force-idle
  • dumpsys deviceidle unforce
  • dumpsys deviceidle get deep
  • dumpsys deviceidle get light
  • pm list packages -3
  • pm path
  • pm install
  • /system/bin/sh -c
Close

Changelog

What's new for version 1.0.0

First release of the native app.

Overnight drain report: start a period before bed, see which apps woke your phone, restrict the worst one in one tap (and revert in one tap).

  • Battery, wake lock and top alarm diagnostics
  • Standby bucket and Doze whitelist control, force Doze
  • APK Vault: export and restore any app
  • Shell console with read-only quick commands

No root, no internet permission, no ads, no trackers. Requires Android 8.0+ and Shizuku.

Signing certificate SHA-256: 3f8c1e2df2deaf9d561a8fdce3c667ed0ceda972622f20d006a1b6098c2a2512

Close

Permissions

2 permissions requested

  • moe.shizuku.manager.permission.API_V23
  • io.github.kreza6173pixel.pulsebattery.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Close