in metrics/src/main/java/com/facebook/battery/metrics/sensor/SensorMetricsCollector.java [138:184]
public synchronized boolean getSnapshot(SensorMetrics snapshot) {
Utilities.checkNotNull(snapshot, "Null value passed to getSnapshot!");
if (!mEnabled) {
return false;
}
long currentTimeMs = SystemClock.elapsedRealtime();
snapshot.set(mCumulativeMetrics);
for (int i = 0, l = mActiveSensors.size(); i < l; i++) {
Sensor sensor = mActiveSensors.keyAt(i);
SensorData data = mActiveSensors.valueAt(i);
if (data.activeCount <= 0) {
continue;
}
long sensorActiveTimeMs = currentTimeMs - data.startTimeMs;
double sensorPowerMah = energyConsumedMah(sensor, sensorActiveTimeMs);
snapshot.total.activeTimeMs += sensorActiveTimeMs;
snapshot.total.powerMah += sensorPowerMah;
boolean isWakeupSensor = Util.isWakeupSensor(sensor);
if (isWakeupSensor) {
snapshot.total.wakeUpTimeMs += sensorActiveTimeMs;
}
if (snapshot.isAttributionEnabled) {
int type = sensor.getType();
SensorMetrics.Consumption consumption = snapshot.sensorConsumption.get(type);
if (consumption == null) {
consumption = new SensorMetrics.Consumption();
snapshot.sensorConsumption.put(type, consumption);
}
consumption.activeTimeMs += sensorActiveTimeMs;
consumption.powerMah += sensorPowerMah;
if (isWakeupSensor) {
consumption.wakeUpTimeMs += sensorActiveTimeMs;
}
}
}
return true;
}