SlopScore
00 crowd

UniBattery

One widget for the battery level of all your Bluetooth devices (vibecoded Android app)
Open repo on GitHubgithub.com/IanBakeland/UniBattery
Kotlin · ★ 1 · 0 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 56 minutes ago by IanBakeland · last checked 56 minutes ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-06: One widget for the battery level of all your Bluetooth devices (vibecoded Android app); its own README says "One widget for the battery level of all your Bluetooth devices (vibecoded Android app)". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as IanBakeland. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
One widget for the battery level of all your Bluetooth devices (vibecoded Android app)
created
2026-10-04 · pushed 10 hours ago · 20 commits · 1 contributor
release
v1.0.9 · 2026-10-05
languages
Kotlin 100%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 56 minutes ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
kotlin
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: One widget for the battery level of all your Bluetooth devices (vibecoded Android app); its own README says "One widget for the battery level of all your Bluetooth devices (vibecoded Android app)". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

🔋 UniBattery

Android Kotlin Vibecoded License

One widget for the battery level of all your Bluetooth devices.

Headphones, mouse, keyboard, controller, watch: every one of them seems to want its own companion app just so you can see how much battery is left. Or you dig through Bluetooth settings every time. UniBattery shows them all in one place, so a quick look at your home screen is enough.

Dashboard Last known battery when nothing is connected Home screen widgets Icon picker

Note

This app is vibecoded. It was built almost entirely by prompting an AI (Claude) rather than written by hand. It works for what I need, but don't treat it as production-quality code. Issues and PRs are welcome.

✨ Features

  • 🏠 Home-screen widget: all connected devices and their battery levels at a glance
  • 📱 Dashboard app: Material 3 Expressive UI with an icon per device type
  • 🕘 Last known battery: when a device isn't connected, the app and the widgets show the level it had last time, so you know whether to charge it before you connect
  • 🎨 Customisable widgets: background opacity (all the way to 0%), corner roundness, text size, wallpaper or fixed colours, and whether to show last known levels
  • 🔔 Optional notification: a silent, persistent notification that keeps the levels current
  • 🎧 AirPods and Beats (Android 17+): exact battery levels through Apple's own protocol
  • 🔒 Minimal permissions: no location, no scanning, only access to devices you have already paired

📋 Requirements

  • Android 8.0 (API 26) or newer
  • Bluetooth devices that actually report their battery level (most modern ones do)

🚀 Getting started

There's no Play Store release. Download the latest APK from Releases, open it on your phone and allow installing from that source when asked.

Or build it yourself with Android Studio, or from the command line:

git clone https://github.com/IanBakeland/UniBattery.git
cd UniBattery
./gradlew :app:installDebug      # build and install on a connected phone
./gradlew :app:testDebugUnitTest # run unit tests

Then add a widget from your launcher's widget picker: Bluetooth battery (all devices), Device battery (one device) or All devices (compact) (a grid of rings for small sizes).

🔍 Where battery levels come from

The app only shows a percentage when one of these sources actually reports one. Otherwise it says "Battery unavailable".

  1. Android's own per-device level (BluetoothDevice.getBatteryLevel(), hidden in the SDK but reachable). It covers HFP/AVRCP headsets, Apple accessory reports and, on Android 14+, the LE Battery Service.
  2. The system BATTERY_LEVEL_CHANGED broadcast.
  3. A direct GATT read of the standard Battery Service (0x180F) on connected LE devices, for example mice and keyboards on older Android versions.
  4. AirPods and Beats: Apple's own accessory protocol (AAP, an L2CAP channel on PSM 0x1001), kept open while they're connected so they push exact levels. Written from tyalie/AAP-Protocol-Definition. Android only allows this channel without root on versions newer than 16 QPR3, and apps can only open it through a hidden constructor, so UniBattery uses HiddenApiBypass for that one class (as LibrePods does).

Devices that only report battery through their own proprietary protocol (some earbuds with a companion app) won't show up with a level.

🔐 Permissions

Permission Why
BLUETOOTH_CONNECT (Android 12+) / BLUETOOTH (11 and lower) Read paired devices and their battery level. No scan, no location.
POST_NOTIFICATIONS Only requested when you turn on the battery notification.
FOREGROUND_SERVICE_CONNECTED_DEVICE The notification is a silent foreground service, so it stays current in the background.
RECEIVE_BOOT_COMPLETED Restarts the notification after a reboot if you had it on.

🛠️ Built with

📄 License

MIT

Read the rest on GitHub

Scan report · 2026-10-06
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review — +25 binaries at repo root (gradlew.bat)

0 comments

log in to comment.

report this listing — log in to report