[BetterBatteryStats] chamonix:
Release

Edit 2021-06-13: Google has pulled BBS from GPlay. The given reason is that I use a library (HockeyApp) that allows installations by other means than the GPlay; that is correct except that library is a) deprecated and does not have backend anymore and b) the GPlay edition does not use that library, only the xda-edition does. Anyhow, I am working on a fix

BetterBatteryStats is available on Google Play (https://play.google.com/store/apps/details?id=com.asksven.betterbatterystats) for what I believe is a fair price. If you like my work and want to support me please fell free to show your gratitude by buying the app.

Google play users can register to be part of the public beta programme. Selected Release Candidates will be released to google play as part of the beta programm. You can enroll to the beta programme here: https://play.google.com/apps/testing/com.asksven.betterbatterystats

Follow me on Mastodon to be notified of updates and get insights in new features/developments.

xda edition: for xda-dev members I provide an always free and fully featured version of BBS (please play fair and do not redistribute the app without my consent).

Current test-release:

I have moved to an automated build system (older releases are still attached here) and do the distribution using AppCenter.

Privacy note

Access to the downloads does not require you to register to AppCenter (you still can to benefit from neat features like notifications when new releases are available)

Get release candidates here

Changelog

2.3

- Full android O support

- Unrooted devices now fully supported (with perms added using ADB)

- UI improvements and I18N

- Better support for substratum theming

- Fixes based on crash-reports

- Added application analytics

2.2.2.0

Fixed #791: bugs preventing sensor stats to show properly on pre-lolipop devices

2.2.1.0

Fixed #787, #788: bugs preventing some stats to show properly on pre-lolipop devices

2.2.0.0

Merged translations

same as RC3

Older Changelogs

2.2.0.0RC3

Fixed sensor report

Prep for release

2.2.0.0RC2

#780: Added proper Sensor Stats

2.2.0.0RC1

#659: Renamed "Other" stat to "Summary"

#398: possibility to add a note when saving a dumpfile

#682: Alarms details view is now scrollable

#772: use bolder fonts to comply with design guidelines and make reading on smaller devices easier

#677: added GPS time (sensors) to Summary

#777: folded both Text and JSON representations of the dumpfile into one file

2.2.0.0B6

#675: watchdog sometimes shows awake > 100%

#756: added LG G2 Kernel Wakelocks support and more agressive detection of LG G2, G3, G4

#759: Watchdog toast sometimes get sticky

#760: Kernel Wakelocks do not substract properly on non-root devices (or with API-mode on)

#762: alarm do not show icon on non-root devices (or wirh API-mode)

2.2.0.0B5

#733: Kernel wakelocks parser for LG G4

#753: Added option to select the destination directory for dumpfile/locat/etc. (Requires OI FileManager)

2.2.0.0B4

#715: introduced snackbars instead of many of the toasts

#731: fixed layout issues for "old" widgets with RTL languages

#749: fixed another non-root issue

2.2.0.0B3

#211: add sensor data to "other" stats

#741: improvements on non-root experience (network stats, fixes)

#748: fixed doze mode counters

Added sync time to other stats

2.2.0.0B2

#734: added doze mode stats (Marshmallow)#744, #747: more fixes for non-rooted usage

#745: fixed/more accurate Bluetooth stats for Marshmallow

2.2.0.0B1

#716: experimental: grant required permissions without having to install system app (requires root)

#735: fixed parsing of native alarms and API call for Marshmallow

#736, #737, #738: various FC from gplay crash reports

#741: improve functionality for non rooted devices (having system app installed)

2.1.0.0

No changes from RC6

2.1.0.0_RC6

Some more widget tuning

Merged transations

2.1.0.0_RC5

Some widget tuning

Merged and compacted changelog

2.1.0.0_RC4

#720, #721: "Awake" is now consistently "Awake when screen off"

2.1.0.0_RC3

I18N

More work on widget

2.1.0.0_RC2

#712: Fixed widget real estate

2.1.0.0_RC1

#708: reverted AppOps call back to older working version

#711: fixed process view sort

#713: fixed graph series

See also in-app changelog

2.1.0.0_B5

#673: permissions list scroll issue

Experimental M-preview support

Transition animations

2.1.0.0_B4

#612: kernel wakelocks for LG G3 5.0

#694: added awake ratio to dashclock

#699: merged system app changes

#702: moved to new appcompat

New Icons by Javi

2.1.0.0_B3

#693, 695: fixed crash on 2.3.x devices

#693: reverted back to "old" (small) system app apk to work around CM/LP 5.1.1 installation isuues

#696: fixed behavior of the "back" icon on older Android devices

2.1.0.0_B2

#671: revert to old AppOps calling method

#681: fixed rate dialog

#683: limit widget font size

#686: string mssing leading to @number being displayed

#687: widget opacity can be adjusted

I18N

2.1.0.0_B1

New responsive widget

#510: New System App (no need to update)

#658: Fixed various crash reports from gplay

#679: Fixed graphs being off on 5.1

#405: Fixed widget sometimes not refreshing at screen on

2.0.0.0

No functional changes from RC6

Merged I18Nalized changelogs

2.0.0.0RC6

This is the golden release: release notes have been updated for the upcoming 2.0

#650: semi transparent grey touch feedback for pre-lolipop devices

- Sorry, no fix for the unthemed dialogs: there is a bug in appcompat to that and I could not find a way around that except rewriting all dialogs and that is too much change at this point in time.

2.0.0.0RC5

#632, #633, #634, #635: Fixed package info dialog (colors, label width)

#639: added arabic (testwise)

#626: fix (again) for FC on long press using german language

2.0.0.0RC4

#626: fixes crash when long-pressing a list item

#630: added credits for I18N

#631: hotfix for issue with RC3 on pre-lolipop devices

2.0.0.0RC3

#616: no battery graph when all values are 100%

#617: no changelog showing in RC2

#618: add info to dumpfile is alarms/kernel wakelocks are from API

#621, #624: I18N

#622: material design touch feedback

#625: FC opening dashclock settings

2.0.0.0RC2

#552: fixed wrong style for overflow menu in dark theme

#609: fixed oblique lines in graphs

2.0.0.0RC1

#546: option to force EN-en locale

#569, #582, #588, #595: more translations

#583: move *api* out of the title

#585: optimized load time of graphs

#586: use white icon for watchdog notifications

#597: battery graph always shows same data

#599: FC opening credits screen

#600: clean up debug info from normal logcat

#602: fixed watchdog reporting of awake

2.0.0.0B7

#491: added frature to import/export preferences

#540: System App Dialog now includes link to the recovery ZIP as a workaround is in-app install does not work (links to XDA or gplay, depending on version)

#551: fixed "pinned" battery graph

#553: lighter cicle gauge and font

#554: settings screen and white text on the light background that appears after clean start

#558: make from-to ref spinners suppressable

#563: more I18N (thanks to gaich and mag01 fpr their hard work keeping up with me changing the strings)

#564: alarm details dialog title is too dark for dark theme

#566: add notification bar color for lolipop

#572: pass the su --context for accessing dumpsys alarm (may cause slowdown, please report on that with supersu version you are using)

#574: better performance in graphics

2.0.0.0B6

#521: make icon size and font size adjustable

#522: kernel wakelock using API fail on lolipop

#550: missing strings

#556: fixed native kernal wakelocks on lolipop

#557: no translation of array, mote stuff to strings

2.0.0.0B5

#360, #529, #534, #539: more externalized strings for I18N

#387: use of wakelocks with timeouts, because I can

#511: Themed dialogs

#517: redesigned graphs

#527: add SELinux policy to dumpfile

#532: fixed theme switching issues

#535: added Czeck, thanks to mag01

#536, #537, #538: added russian, thanks to gaich

#531: fixed alarms dialog showing infinite / Hr.

#545: merged new constants that were causing the wrong stats to be processed

2.0.0.0B4

First shot at I18N: implemented german

#495: cleanup ununsed libs

#502: cleanup assets

#518: fixed infinite wakeups per hour in alarms

#519: re-add battery from/to % to screen (optional)

#520: alignment of labele/icons

#523: theme switch only complete after restart

#524: switched back from cards layout as it takes too much real estate

#525: notification area invisible by default

#526: FC after theme switch

#528: Partial wakelocks show wrong values (thank google for changing the constants again)!

2.0.0.0B3

#484, #508: surface information about errors / failures to the UI

#493: avoid retrieving the battery level from battery info API to reduce load (and avoid service unavailable)

#497: added dark theme

#509: added % from/to back to dumpfile

#512: theme preference slider controls

#513: fixed empty release notes

#515: automatically detect SELinux preventing access to dumpsys alarm and fall back to API mode

#516: fixed alarms showing infinity in gauges

2.0.0.0B2

#496: fixed gauges in RAW stats always being 100%

#499: "since" and white header missing in raw stats

#504: failed remot to ro after system app install does not report an error anymore since the app was installed correctly

#505: advanced pref to enable alternate (API) mode for retrieving alarms (and avoid the need for permissive kernel)

#506: alarm details missing in dumpfile

Bigger changes under the hood: externalized all preferences to prepare for I18N

2.0.0.0B1

It's all new and shiny

#487: ability to save JSON format from tasker plugin

New calculation approach to avoid rounding differences

Simplified / removed unused options from settings

Removed google analytics

1.16.1.0B2

#486: watchdog does not warn

1.16.1.0B1

#446, #483: watchdog warns about 100% awake even if reading shows it's not the case

#481, #482: FC conditions from crash reports

#485: addedf more comprehensive info about BATTERY_STATS perm and Xposed setting to dumpfile

1.16.0.0

no changes from RC6 1.16.0.0_RC6

#479: attempt to fix failing system app install process on certain devices

#480: fixed Dashclock settings not opening in xdaedition

1.16.0.0_RC5

#475: more speaking text for XPosed module settings

#476: fixed dashclock API 2 manifest (kudos to DvTonder)

#477: fixed exception in method to obtain other stats from dumpsys (compat mode)

#478: fixed alarm parsing error on pre 4.2 versions

1.16.0.0_RC4

#469: Fixed network stats parsing error

#472: Fixed alarm parsing for L preview

#473: fixed wakelock being expressed in ms on L preview

#474: fixed sorting of CPU states

1.16.0.0_RC3

#470: fixed non null extra passed by certain launchers

#471: fixed batterystats service name on L preview

1.16.0.0_RC2

#464: fixed icon height in list

#466: if xposed modue is checked in advanced prefs do as if all perms were there (use at your own risk)

#467: fixed missing icons in network view

#468: fixed FC condition when creating a logcat

1.16.0.0_RC1

#463: added copy to clipboard on long-press

Merged to master1.16.0.0_B7

#462: fixed antialiasing of pie gauge to avoid pixelation

1.16.0.0_B6

#457: fixed FC on calling permissions

#458: fixed value of "other" stats gauge being off

#459: pie gauge brush too large on low density devices

#460: add setting to disable system app presence (for XPosed module users)

#461: added setting (display section) to use "old" bar gauge instead of "new" pie

1.16.0.0_B5

#452: update to Dashclock API 2.0

#453: fixed "current" reference not getting updated when BBS is called from tasker

#454: fixed network stats "lo" not matched to "Mobile"

#455: merged a few UI changes from the upcoming 2.0 branch

#456: fixed: when only one reference spinner is shown avoid Toast message

1.16.0.0_B4

#426: added occurences per minute/hours in alarms on screen and dumpfile

#450: fix for memory leak

#451: revert from JSON the Java serialization of references for better performance (references will be deleted after installation)

1.16.0.0_B3

#448: if root is available offer full featured alarms using dumpsys

#449 avoid flushing cache, imporving performance

1.16.0.0_B2

#447: system app has wrong signature

1.16.0.0_B1

#427: optimize the root calls for dumpsys if system app installed

#429: replace java serialization of references with a more flexible JSON serialization

#435: avoid crashing when appops not available (4.4.2+)

#437: better resetting of screen counters for non rooted 4.4+ devices

#439: dumpfile chapters comments reflect need for root

#440: better support for root (does not require to be enabled in advanced prefs anymore)

#441: offer to install as system app on 4.4+ is root available

#443: alarm does not require root anymore

#446: watchdog notification should never report more than 100%

1.15.0.0

Same as RC8 except the release notes

1.15.0.0_RC8

#432: make sure to ask for su rights right after enabling root features

#433: hint that the system app should be uninstalled before uninstalling BBS

1.15.0.0_RC7

#430: better fix for blocking root access

#431: fix for install as system app when package comes from gplay

A few changes in the popup for kitkat user at first run

Bump in version number causes references to be deleted at first run

1.15.0.0_RC6

#430: fixed blocking call if trying to install as system app without having root features enabled

1.15.0.0_RC5

#428: force mediascanner after saving files

Recreated icons in all densities

1.15.0.0_RC4

#421: Another attempt to fix the xxxhdpi icon

#426: fied missing process stats on kitkat

Fixed other stats not refreshing properly on kitkat

1.15.0.0_RC3

Fixed the way we manage system apps

1.15.0.0_RC2

Sharpened xxxhdpi icon

Added the ability to install BBS as system app (requires root, usefull only for kitkat right now)

1.15.0.0_RC1

#424: add proper (error) messages to notify about features not available without root on kitkat.

Add timing of screen on time when no stats can be retrieved

1.15.0.0_B6

#421: added xxhdpi assets

#423: fixed alarms parsing on 4.3+

1.15.0.0_B5

#422: fixed account info obfuscation for new account format coming with kitkat

1.15.0.0_B4

#418: re-add process stats to kitkat

Fix for potentially missed partial wakelocks where uid could not be found

1.15.0.0_B3

#419: Package info and icons re-added to kitkat partial wakelocks

#420: fixe from gplay creashreports

Added hires icon

1.15.0.0_B2

#416: readded missing other stats (kitkat)

#417: fix for duplicate partial wakelocks

1.15.0.0_B1

#414: Fixed error at launch (service not available for kitkat)

#415: re-added partial wakelocks and very basic other stats (deep sleep only) to kitkat (requires root)

1.14.0.0

Updated libs

1.14.0.0RC1

#404: Fixed text padding for short time strings

#407: added app ops for 4.3+ users

1.14.0.0B2

#401: added ACCESS_SUPERUSER to manifest permissions

#402: wrong values in wakelocks with hashed account info caused by hash being applied multiple times

1.14.0.0B1

#355: implement a permanent su shell to execute all commands

Various fixes from gplay crash reports

1.13.4.0

Same as B2, no changes

1.13.4.0B2

#391 support all implementations of sqlite

1.13.4.0B1

Refactoring of database access to avoid locking

1.13.3.0

Fix for users having FCs due to database lock problem

1.13.2.0

Fix for users having FCs at start

1.13.0.0

Unchanged from RC2

1.13.0.0RC2

#384: salted the account name before hashing

Fix for stats not reflecting the combo boxes anymore for some users after a reference refresh

1.13.0.0RC1

Fix to make sure spinners do not get out of sync

#383: Fixed battery / voltage level in dumpfile

A few typos

Added timestamp to logcat

1.13.0.0B5

#191, #334: Added "share" option for saving/sharing dumpfiles, dmesg and logcat

#381: fixed database exception occuring sometimes and potentially responsible for the blank stats happening from time to time for some users

#382: dmesg requires root for newer kernels

1.13.0.0B4

Added some logging to debug percentage problem: adb logcat | grep StatsAdapter

#377: refactored KB handling

#379: refactored "raw" stats

Stats row shows interactive areas (glow)

1.13.0.0B3

#236: mask account info

#378: fixed fallback stat in DashClock widget

1.13.0.0B2

#376: no icon in process view

#377: missing KB icon

1.13.0.0B1

#367: added dashclock support

#375: added JSON dumpfile format support

1.12.4.0

#372: Widgets do not update on a fresh install

#373: change default widget fallbacl to "boot"

#374: refresh spinners and user refresh causes the cache of refs to get flushed/reloaded from data

1.12.3.0

#369: small widget uses wrong prefs

#370: Other stat times/total time incorrect

1.12.2.0

#366: fixed FC when creating a dumpfiel from tasker

Improved logging

Fixed concurrency problems potentially leading to weird display

Fixed a caching issue

1.12.1.0

Fix migration issues from 1.11 leading to inconsistent stats

#359: make sure BatteryInfoUnavailableException does not other stats to be shown

#361: a better fix for battery/voltage using current instead of "to" stat

#363, #364, #365: fixed different error conditions from crash reports

1.12.0.2

Skipped 1.12.0.1

#356: bug when migrating from 1.11

#357: to battery % always shows current value

1.12

Same as RC12, no changes

1.12RC12

#356: fixed empty stats after screen being rotated

1.12RC11

#223: active monitoring

#346: save 'unplugged' ref at first use to avoid empty refs

#347: pref to diable widgets to be refreshed at screen on

#344: better fix for errors in parsing network/alarms causing the whole reference to be saved empty

1.12RC10

#302: added credits for used libs in app besides git (under help)

#342, #345: remove log verbosity when debug advanced pref is not enabled for cleaner logcats

#343: fixed alarms parsing of details for flg= and cmp= (both pre- and post 4.2.2)

#344: error in parsing network stats causes the reference to be saved empty (potentially a cause of reference shown as not having been created)

1.12RC9

#323: pref for saving dumpfile to private storage

#337: implement 48dp rhythm

#338: optimize list real estate

#339 (partially): fixed tiny font for widget being same as small

1.12RC8

#341: fixed alarms for android 4.2.2

1.12RC7

#327: spinner refresh issues

#331: sometimes the stats shown do not reflect the spinner selection

#333: charged and unplugged should not be in the "to" spinner as that makes no sense

1.12RC6

#307, #328; widget stops updating and stays blank

#327: spinner refresh issues

#329: fallback ref in 1x1 widget is never loaded

#330: an attempt to fix wakelock issue when su commands are blocked

1.12RC5

#326: fixed rate dialog showing at each start

Some profining

Less intrusive logging if dedug is disabled in prefs

1.12RC4

New readme and rate dialogs

#325: times in wakeup_sources are a factory 1000 to small

1.12RC3

#321: fixed spinner heights

#322: filter "0" cpu states

#324: add marker to dumfile if using wakeup_sources

1.12RC2

#320: added experimental support for wakeup_sources (newer kernels deprecate /proc/wakelocks)

1.12RC1

#318: automatically refresh current when entering the main screen (can be changed in adv. prefs)

#319: "to ref" is shown by default (can be changed in adv. prefs)

1.12B9

#316: FC when calling BBS from watchdog notification

#317: 2x2 widget showing 0 KWL/PWL

1.12B8

#312: Fixed negative CPU percentages

#313: refresh after events creating new references show inconsistent references (from/to)

#314: proper migration of default stat type prefs coming from 1.11

#315: fixed cause of "unknown error"

1.12B7

#310: fixed partial and kernel wakelocks always being the same and icons missing

#311: fixed kb reader thread not retriieving online content

1.12B6

Changed the way su operations are processed

Some fixes regarding the refresh of the spinners

Make sure all root operations are running in an own thread

1.12B5

#308: since boot can not be selected

Fixed callstack when updating a reference

Widget now have a lightweight method for obtaining the current data without causing the cache to be updated

Spinners show references sorted in ascending order

Fixed spinner not showing all existing references

1.12B4

#306: fixed broken dumpfile

Added pref to show/hide the "reference to" spinner

Added screen on reference (saved when watchdog is active)

References are now stored in a database

From/To references are chronogical

1.12B3

#303: invalidate "current" when other refs are saved

#305: dissapearing refs

1.12B2

Some tuning

#298: Fixed FC on raw alarms

#299: Watchdog does not report when awake > threshold

#300: fixed spinner height

1.12B1

#187: freeze current time

#193: add screen brightness states to "other" stats

#274: copy wakelock to clipboard

#279: add option to save dmesg

#286: add mV/h to dumpfile

#290, 292: typo, wording

#296: kbreader is now asynchronous and doesn't block UI thread when github is slow

1.11

no change from RC8

1.11RC8

#289: FC on package info screen for pre-ICS devices

1.11RC7

#288: usability issue in permission view fixed

1.11RC6

#276: another attempt at fixing scheduled dumpfile creation from tasker

#287: fixed ratio calculation for battery drain in %/h

1.11RC5

#280: added legend to permissions tab

#283: unticking watchdog option "Screen off" stops the EventHandler service

#284: added drain per hour to battery drain text on screen and dumpfile

1.11RC4

#281: Fixed bad reference on unplug when 100% charged

#276: fixed dumpfile creation from tasker

removed delimiter till a configurable version can be provided

1.11RC3

A better fix for widgets being updated

Nicer implementation of package info using a tabbed pager (using ActionBarSherlock)

Changed in-app help and messages to make the conect of references clearer

More speaking "missing ref" texts

1.11RC2

#277: more prominent delimiter in listview

fixed calculation of since value

1.11RC1

#229: show autorun and other package info like permissions and services, click on the icons

#279: reverted the time reference for since and calculations back to 1.9.x

#275: widgets do not always refresh: hack to make sure the widget always get the broadcasts from the launcher, even if the lancher is not complying with standards (see http://stackoverflow.com/questions/7390449/widget-notification-when-homescreen-app-is-restarted)

yet another attempt to fix since screen off dump incomplete when created at wakeup from taker plugin

big refactoring (only relevant for the ones reading the code)

1.10.5

No changes from RC1

1.10.5RC1

Make sure app is not installed to SD (watchdog, widgets, detecting boot and unplug won't work properly)

Writing references respect "root features" settings

Fixed error condition in widget (potentially not showing data)

Refactored broadcast handlers

Another attempt to fix dumpfile creation in tasker plugin

1.10.4

Fixed logcat permission

1.10.3

Some changes in widget code

#270: added option to save logcat from app

1.10.2

#263: adv prefs to turn on stats while plugged

#264: error happening when reading other stats should not skip the whole stats

#265: reference summary shows data instead of counts (in dumpfile and log)

#266: difference in "since" time between widget and screen

#268: error when checking charger status causes exception

1.10.1

#261: missing cpu states file causes references to stay empty

#262: battery level handling causes exception

1.10

A few changes in logging

New ?????

1.10RC3

#257: referencea are missing processes

#258: if debug pref is not checked since shows 0s

1.10RC2

#256: silent crash on progress dialog

#252: a better fix for the FC on enabling root features

Typo in prefs

Added drain to on screen battery info

1.10RC1

#251: added batter level from/to to screen (and a pref to enable/disable it)

#252: an attempt to fix the FC on enabling root features

#254: incomplete (ref missing) dump from tasker

#255: not systematic crash on creating custom ref

1.10b7

#248: added raw CPU states

#249: ratio of other stats is calculated against something that is smaller than "since"

#250: when a reference is null all stats should show that there is no reference availble

1.10b6

#247: fixed deep sleep sometimes being substracted twice, causing negative values

1.10b5

#245: source of "since" is now the reference

#246: added battery voltage/level from/to to dumpfile

Removed unneeded API calls (that were to cause to batteryinfo stopping)

New error handling exposes API errors to the user

1.10b4

#243: deep sleep not showing

#244: no stats when plugged (as some internal registers do not count when plugged, leading to inconsistencies)

Removed pre-1.9 migration code that may lead refs to be deleted at start

#235: grey background for bars

1.10b3

#234: show icon for stats providing package info

#8: call application settings when package info is available (click on icon)

Refactored error handling

Workaround to avoid SuperUser to obcess about asking for rights

1.10b2

#240: removed "test" menu

#241: fixed nested menu causing FC on SDK<14

#242: removed froyo specific references as BBS is not depending on Android's implementation of refs anymore

1.10b1

#209: added since boot ref

#227: fallback to since boot if default stat type is not available

#228: pref to control log level

#230: two step save of references to avoid empty references if su request times out

#231, #232: reorganized preferences

#233: reorganized menu

#238: process Siyah "deleted: " kernel wakelocks properly

#239: network stats / alarms are disabled by default, can be turned on in advanced prefs

1.9.2.1

#226: reference info to dumpfile

1.9.2 (|xda only)

Fixed error condition where "no ref since charged" appeared after a while when a reference was present

#224: screen on time is too high in "since screen off"

1.9.1 (@xda only)

Added more logging to references

#213: Tasker plugin does not create dumpfiles / custom refs

#216: more compact CPU state view

#218, 220, 221: various fixes from Google Play logs

I maintain A list of features to be implemented and bugs here.

Below you can find older releases.

If not required I do not recommend using these as they are not up-to-date with the most current development, features and fixes.