Releases: FrancescoMin/batteryhealthtracker
Release list
v1.7: Massive App Shrinking (-93% APK Size) & Refreshed Visuals
What's Changed in v1.7 🚀
⚡ Massive Performance & Size Optimization (R8 / ProGuard)
- -93.4% APK Footprint Reduction: Enabled R8 full-mode minification and resource shrinking, slashing the standalone APK size from 40.7 MB down to just 2.69 MB.
- Smoother 120 Hz UI Execution: Removed thousands of unused classes, dead code paths, and unreferenced assets, resulting in faster cold starts and stutter-free Jetpack Compose rendering.
- Robust ProGuard Keep Rules: Comprehensive rules preserving Shizuku Binder IPC (
rikka.shizuku.**,moe.shizuku.**), Room SQLite entities/DAOs (BatteryData,BatteryDao_Impl), and Android WorkManager background tasks (BatteryWorker).
🤖 Automated GitHub Actions CI/CD Pipeline
- Continuous Integration: Automated build and unit testing workflows on every push and pull request.
- Automated Release Deployment: Pushing version tags (
v*) now automatically compiles the signed release APK, attaches it to the GitHub Release, and publishes semantic release notes.
📊 Health Trend Chart & Visual Enhancements
- Refined Catmull-Rom Cubic Spline: Smoother Bezier curve interpolation with reference threshold guidelines (100%, 90%, 80% industrial battery replacement line).
- Timeline Date Grid: Dynamic date distribution across the X-axis for clearer wear progression tracking.
- TopAppBar Polish: Added a dedicated terminal prompt icon (
>_) for the Hardware Diagnostic Console and a dynamic badge counter on the overflow menu indicating soft-deleted items in the Trash bin.
🔔 Localized Notifications & Strings
- Standardized notification channels and fully localized receipt strings, 100% full-charge disconnect alerts, and 42°C overheat warnings across English, Italian (Italiano), and Spanish (Español).
📸 Updated High-Resolution Documentation
- Refreshed all screenshots in the repository README with real captures taken directly from a physical Oppo Reno 14 running v1.7.
📦 Checksums & Verification
- File:
BatteryHealthTracker-v1.7.apk - Size:
2.69 MB (2,698,103 bytes) - Requires: Android 14+ (API 34) & Shizuku API v13+
v1.6: In-App Update Checker & Presets Update
What's Changed
🔄 In-App GitHub Release Checker
- Added manual update check in Settings: directly checks GitHub Releases via public API without background trackers.
- Semantic version comparison with instant changelog preview dialog and 1-tap APK download button.
- Declared transparent
android.permission.INTERNETexclusively scoped for release checks.
📱 Hardware Presets & Database
- Added Oppo Find X9 Ultra battery preset (7500 mAh typical / 7290 mAh rated).
- Verified preset detection and capacity calculations.
🧪 Architecture & Tests
- Extracted pure
BatteryTelemetryParserfor decoupled, reliable fuel-gauge log parsing. - Added comprehensive unit tests for version comparisons and telemetry decoding.
v1.5: Real-Time BMS Fuel-Gauge Parsing & Extended Realme/OPlus Hardware Support
🚀 What's New in v1.5
🔋 Dynamic BMS Fuel-Gauge Log Parsing (Realme, Oppo & OnePlus)
- Bypass Static Sysfs Baselines: On recent ColorOS and Realme UI firmware builds, legacy sysfs nodes (such as
/sys/class/oplus_chg/battery/battery_soh) can remain frozen at the factory baseline (100%) even after hundreds of charge cycles. - Real-Time Hardware Stream Decoding: The app now parses the kernel's dynamic telemetry stream (
battery_log_headandbattery_log_content) generated by the unifiedoplus_chg_batterydriver. - 100% OS Parity: Accurately extracts dynamic State of Health (
batt_soh) and true chemical capacity (batt_qmax), ensuring telemetry perfectly matches the native "Maximum capacity" metric in Realme UI and ColorOS Settings. - Resilient Fallback: Automatically utilizes
batt_rmfrom the fuel-gauge log when individual remaining-capacity sysfs nodes are restricted.
📱 New Device Presets & Battery Database Updates
- Realme GT 7T (EU / RMX5085, RE6090L1): Added native hardware preset (7000 mAh typical / 6850 mAh rated IEC, 120W SuperVOOC dual-cell architecture). Certified 100% Tested & Verified on physical hardware via Shizuku.
- Oppo Reno 13: Added device preset (5600 mAh typical / 5450 mAh rated IEC).
- Database Updates: Updated the verified hardware compatibility matrix in
README.md.
📖 Dedicated Shizuku Setup Guide
- Added
OPPO_REALME_ONEPLUS_SHIZUKU_GUIDE.mdto help users bypass the proprietary OPlus Binder firewall ("The permission of ADB is limited"). - Documents the essential system language trick for European / regional firmware builds (temporarily switching to English US to unhide the hidden "Disable System Optimization" / "Disable permission monitoring" toggle at the bottom of Developer Options).
📥 Installation
Download BatteryHealthTracker-v1.5.apk attached below to install or update.
v1.4: Usage Stats, Hardware Diagnostics Console & UI Refinements
🚀 What's New in v1.4
📅 Usage Stats & Days Since First Boot
- First Boot Telemetry: Added a dedicated usage statistics card in Health Trend & Protection displaying the elapsed days since the smartphone was first initialized (retrieved from OPlus sysfs registers or system framework fallback).
- Charging Habits Ratio: Real-time calculation of Days per Cycle and Cycles per Day (e.g.
1.22 days/cycle • 0.82 cycles/day), helping users evaluate long-term battery preservation habits. - Informative Dialog: Tap the usage card to view benchmarks and detailed explanations of how these metrics are calculated.
🖥️ In-App Hardware Diagnostics Console
- Kernel Command Inspector: Directly inspect all raw ADB / OPlus Sysfs queries and driver responses directly inside the app via the new terminal icon in the top app bar.
- One-Tap Issue Sharing: Easily copy or share full kernel diagnostic logs with a direct shortcut link to GitHub Issues, making device compatibility testing faster and simpler for the community.
🧭 Redesigned Top Bar & Overflow Menu
- Clean 3-Dots Menu: Moved Export CSV, Trash Bin (with dynamic deleted-readings badge), and Settings into a sleek overflow menu.
- Full Title Visibility: Resolves top bar crowding on narrower screens, ensuring the full "Battery Health Tracker" title is always visible.
⚡ Battery Health Calculation & Accuracy Alignment
- Typical Capacity SOH Alignment: When proprietary
normal_batt_sohregisters are not exposed by specific ColorOS/OxygenOS builds, calculated SOH is automatically aligned against typical rated capacity to prevent artificial degradation offsets. - Dynamic Versioning: Settings screen now dynamically resolves and displays the exact installed app version (
1.4 - Oplus Edition). - Complete Localizations: Updated Italian, English, and Spanish translations for all new dialogs and metrics.
📦 Assets & Installation
Download BatteryHealthTracker-v1.4.apk below and install it directly on your Oppo, OnePlus, or Realme device running Android 14+.
v1.3: 120 Hz Dialog Lock & Zero-Allocation UI Performance Optimization
What's Changed in v1.3
This update brings dedicated display and rendering performance optimizations to guarantee solid, uninterrupted 120 Hz refresh rate across both LTPS fixed-frequency and LTPO variable-rate displays.
🚀 120 Hz Enforce on Dialog Windows
- Fixed 90 Hz Downclocking on LTPS Panels: On ColorOS/OxygenOS (and other vendor display managers), modal dialog windows previously lacked explicit display mode tags, causing the OS power governor to drop the screen refresh rate from 120 Hz to 90 Hz while reading pop-ups.
AppAlertDialog&HighRefreshRateHelper: All application dialogs now automatically query display capabilities and lock theirpreferredDisplayModeIdandpreferredRefreshRatedirectly to 120 Hz viaDialogWindowProvider.
⚡ Recomposition & Frame Budget Optimizations (< 8.33 ms)
- Isolated Diagnostic Dialogs: Decoupled dialog presentation state from
OplusAdvancedHardwareCard, preventing all 12 diagnostic tiles and power meters from unnecessarily recomposing when an info pop-up is opened. - Canvas Zero-Allocation Draw Scope: Precomputed Y-axis scales, Min/Max limits, and grid guidelines outside the
Canvas { ... }block inHealthTrendChart, eliminating Garbage Collection pauses and micro-stutters during high-speed scrolling.
📱 Installation
Download and install BatteryHealthTracker-v1.3.apk from the Assets below.
v1.2: Root & Dumpsys Fallback, 100% Saturation Estimation & ESR Fixes
What's Changed in v1.2
This release brings expanded hardware support for devices with restricted Qualcomm BMS nodes (such as the OnePlus Nord 5 Indian variant), introduces 100% Coulomb saturation health estimation, fixes internal resistance (ESR) calculations, and refines warning pop-ups.
⚡ Multi-Tier Privileged Fallback (Root & dumpsys HAL)
- Root (
su) Execution: If Shizuku lacks access or sysfs nodes are restricted by SELinux, the app now automatically executes commands with Root privileges when available. - Elevated
dumpsysHAL Parser: Queries Android battery HAL services (dumpsys batteryanddumpsys batterystats) to recover voltage, Coulomb counter, ASOC, and estimated capacity on locked Qualcomm Snapdragon platforms (addresses #2). - Broadcast Intent Cycles: Added
EXTRA_CYCLE_COUNTintent fallback for Android 14+ devices where sysfs nodes are obscured.
🔋 100% Saturation SOH & Capacity Estimation
- Coulomb Saturation Tracking: When charging reaches 100% capacity saturation (or status
Full), the Coulomb counter accurately represents the battery's true Full Charge Capacity (FCC). The app now uses this saturation point to compute an accurate State of Health (SOH) even when proprietary OEM BMS nodes are unavailable.
🔬 Internal Resistance (ESR) & Zero-Alarm Notice
- Formula & Scale Normalization: Corrected dynamic DC-ESR calculation and voltage scale alignment (accounting for series 2S dual-cell pack vs single-cell OCV) (fixes #3).
- Load-Aware Subtitles: Added dynamic context indicators (Light Load < 2W, Heavy Load > 2.5W, Fast Charging).
- Clear Reference Ranges: Updated information dialog with realistic DC ranges (800–1800 mΩ at light load, 200–600 mΩ under heavy load) and a zero-alarm note explaining that momentary fluctuations are completely normal.
ℹ️ BatteryManager Pop-up Clarifications
- Clarified in warning dialogs (English, Italian, Spanish) that instantaneous values from standard
BatteryManagerreflect the charge present at that moment, and users must wait for 100% capacity saturation during charging to get a credible estimate of maximum capacity.
🌐 Localization & UI
- Fully localized charging protocol indicators (
In Scarica/Discharging,Carica Standard/Standard Charging,Standby) across English, Italian, and Spanish.
📱 Installation
Download and install BatteryHealthTracker-v1.2.apk from the Assets below.
v1.1: Multi-Path Hardware Resolver & Expanded Presets
🚀 What's New in v1.1
⚡ Multi-Path Hardware Sysfs Resolver (Snapdragon & MediaTek)
- Added resilient multi-candidate sysfs node querying (
querySysfs) supporting both Qualcomm Snapdragon and MediaTek Dimensity platforms across OnePlus, Realme, and Oppo devices. - Added automatic fallback to the Android 14+ HAL interface (
BatteryManager.getIntProperty(7)) to ensure accurate charge cycle reporting even when custom kernel nodes differ. - Added bidirectional mathematical inference between real Full Charge Capacity (FCC) and State of Health (SOH) so no hardware telemetry is lost.
- Fixes #2 where OnePlus Snapdragon devices previously showed N/A or fell back to BatteryManager despite Shizuku being connected.
📱 Expanded Device Battery Presets
Added factory-rated IEC 61960 capacity profiles for new flagship and mid-range devices:
- OnePlus:
- Nord 5 (
CPH2707,CPH2709,CPH2709_EU) - 13R (
CPH2649,CPH2645,CPH2647) - 12 & 12R (
CPH2581,CPH2609) - 11 & 13 (
CPH2449,CPH2653) - Nord 3, Nord 4, Nord CE 4, Nord CE 4 Lite
- Nord 5 (
- Realme:
- 14 Pro+ (
RMX3980,RMX3981— 6000 mAh typical / 5850 mAh rated) - 13 Pro+ & 12 Pro+ (
RMX3921,RMX3840) - GT Series: GT 5 Pro (
RMX3888), GT 6, GT 6T, GT 7 Pro
- 14 Pro+ (
🛡️ Enhanced Transparency & Reliability Warnings
- Added warning icons and explanatory dialogs when operating under BatteryManager fallback mode (e.g. on non-Oplus devices like Samsung Galaxy, Google Pixel, Xiaomi):
- Remaining Capacity: Clearly alerts the user when the value is the instantaneous Coulomb counter rather than true maximum chemical capacity.
- Cycle Count: Informs the user when system HAL returns 0 or unverified counts.
🧪 Automated Unit Test Suite & Optimizations
- Introduced a full automated unit test suite (
DevicePresetsAndHealthTest) verifying preset matching and mathematical conversions (14/14 tests passing). - Reduced release APK size from 55 MB to 40 MB (-27%) with baseline profile optimizations.
📦 Installation
Download BatteryHealthTracker-v1.1.apk below and install it directly on your Android 14+ device.
v1.0
Battery Health Tracker v1.0 (Oplus Edition)
First public stable release of Battery Health Tracker, an advanced, 100% offline, privacy-first battery diagnostics and health tracking application designed specifically for Oppo, OnePlus, and Realme devices powered by Shizuku.
✨ Key Features
- Deep Hardware Diagnostics via Shizuku: Direct inspection of ColorOS/OxygenOS/Realme UI BMS sysfs nodes without root.
- True Chemical Capacity: Measures real battery capacity with full Coulomb counter integration.
- IEC 61960 Thermal Normalization: Calibrates chemical capacity against ambient cell temperature to reference standard 25°C.
- Silicon Health & Safety Registers: Real-time monitoring of internal resistance (ESR), cell balance/deviation, cutoff voltage, and BMS protection states.
- Degradation Trend Chart: Interactive historical trend chart predicting cycle life down to the 80% threshold.
- Zero Background Drain: Event-driven updates and manual refresh — strictly 0% background battery consumption.
- Pure Black AMOLED & Dynamic Theme: Optimized for 120 Hz high-refresh AMOLED screens with color-matched system bars.
- Data Privacy & Control: 100% offline (no internet permissions), single/multi-selection history management with recycle bin, and CSV export.
📦 Installation
- Install and start Shizuku (via Wireless Debugging or ADB).
- Download and install
BatteryHealthTracker-v1.0.apkattached below. - Open the app and grant Shizuku permission when prompted.