Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
B

Battery-Metrics

> 编程语言
Open source

Library that helps in instrumenting battery related system metrics.

771 stars0 likes0 views
WebsiteGitHub

About

Library that helps in instrumenting battery related system metrics.

Battery Metrics

Battery Metrics is a lightweight android library to quickly instrument several metrics for understanding battery consumption.

As a developer, it's surprisingly hard to understand how your application affects battery life on Android — relying on the operating system level reported battery level tends to be inaccurate (because the reported levels are fairly coarse, affected by every app running on the device and smoothed out) and while it's possible to get really good measurements locally you don't really know what sort of experience users are having in the wild.

The library helps instrument hardware utilization to be able to understand how the application is behaving -- most of the underlying hardware metrics are either exposed by the OS, or not directly accessible -- which is where this library comes into play. We've written several metrics collectors that read from procfiles, or provide a consistent way to call into to instrument your application.

Adding BatteryMetrics

Add jcenter to your repositories –

groovy
repositories {
  jcenter()
}

And add dependencies on the projects you'd like to use in build.gradle –

groovy
dependencies {
    implementation 'com.facebook.battery:metrics:1.0.0'
    implementation 'com.facebook.battery:reporters:1.0.0'   // optional
    implementation 'com.facebook.battery:serializers:1.0.0' // optional
}

Quick Start

As a simple quickstart, let's instrument sample activity to check CPU time while the activity is being used in the foreground --

java
class SampleActivity extends Activity {

  private static final CpuMetricsCollector sCollector = new CpuMetricsCollector();
  private final CpuMetrics mInitialMetrics = sCollector.createMetrics();
  private final CpuMetrics mFinalMetrics = sCollector.createMetrics();

  @Override
  protected void onResume() {
    super.onResume();
    sCollector.getSnapshot(mInitialMetrics);
  }

  @Override
  protected void onPause() {
    super.onPause();
    sCollector.getSnapshot(mFinalMetrics);

    Log.d("BatteryMetrics", mFinalMetrics.diff(mInitialMetrics).toString());
  }
}

And foregrounding and background the application prints the metrics to logcat --

java
CpuMetrics{userTimeS=0.06, systemTimeS=0.04, childUserTimeS=0.0, childSystemTimeS=0.0}

Sample App

Building further on this, there are many more metrics to collect, and some utility classes to reduce boilerplate -- a more detailed deep dive into using the API is in the sample app: check out sample/../BatteryApplication.java.

You can quickly install and run the app --

./gradlew :sample:installDebug

Documentation

  • JavaDocs -- a reasonably comprehensive reference to all the exposed APIs.
  • Roadmap -- our planned, but unprioritized roadmap. Give us feedback!
  • Additional reading -- some sources we've found useful.
  • API description -- a brief description of the terms used throughout the project.
  • Getting started -- the core of the sample app described. Make sure you check out sample/../BatteryApplication.java.
  • Mistrusting battery level -- why we don't rely on the os reported battery level
  • Contribution guidelines -- we'd love to see contributions to the project.

Community

  • Find us on (unsurprisingly) Facebook.
  • And Slack -- and the invite.

License

BatteryMetrics is MIT-licensed.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Java

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言