summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/os/BatteryStatsHelper.java4
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java34
2 files changed, 21 insertions, 17 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java
index 8a15c99..e0cf435 100644
--- a/core/java/com/android/internal/os/BatteryStatsHelper.java
+++ b/core/java/com/android/internal/os/BatteryStatsHelper.java
@@ -642,8 +642,8 @@ public class BatteryStatsHelper {
final long radioDataUptimeMs
= mStats.getMobileRadioActiveTime(mBatteryRealtime, mStatsType) / 1000;
- final double mobilePps = radioDataUptimeMs != 0
- ? mobileData / (double)radioDataUptimeMs
+ final double mobilePps = (mobileData != 0 && radioDataUptimeMs != 0)
+ ? (mobileData / (double)radioDataUptimeMs)
: (((double)MOBILE_BPS) / 8 / 2048);
return (MOBILE_POWER / mobilePps) / (60*60);
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index c3e9862..40e8727 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -56,7 +56,6 @@ import com.android.internal.net.NetworkStatsFactory;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.JournaledFile;
-import com.google.android.collect.Sets;
import java.io.File;
import java.io.FileInputStream;
@@ -65,7 +64,6 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -372,8 +370,10 @@ public final class BatteryStatsImpl extends BatteryStats {
new HashMap<String, KernelWakelockStats>();
private final NetworkStatsFactory mNetworkStatsFactory = new NetworkStatsFactory();
- private NetworkStats mLastMobileSnapshot;
- private NetworkStats mLastWifiSnapshot;
+ private NetworkStats mCurMobileSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50);
+ private NetworkStats mLastMobileSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50);
+ private NetworkStats mCurWifiSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50);
+ private NetworkStats mLastWifiSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50);
private NetworkStats mTmpNetworkStats;
private final NetworkStats.Entry mTmpNetworkStatsEntry = new NetworkStats.Entry();
@@ -5608,6 +5608,7 @@ public final class BatteryStatsImpl extends BatteryStats {
if (mMobileIfaces.length > 0) {
final NetworkStats snapshot;
+ final NetworkStats last = mCurMobileSnapshot;
try {
snapshot = mNetworkStatsFactory.readNetworkStatsDetail(UID_ALL,
mMobileIfaces, NetworkStats.TAG_NONE, mLastMobileSnapshot);
@@ -5616,15 +5617,12 @@ public final class BatteryStatsImpl extends BatteryStats {
return;
}
- if (mLastMobileSnapshot == null) {
- mLastMobileSnapshot = snapshot;
- return;
- }
+ mCurMobileSnapshot = snapshot;
+ mLastMobileSnapshot = last;
- final NetworkStats delta = NetworkStats.subtract(snapshot, mLastMobileSnapshot,
+ final NetworkStats delta = NetworkStats.subtract(snapshot, last,
null, null, mTmpNetworkStats);
mTmpNetworkStats = delta;
- mLastMobileSnapshot = snapshot;
final int size = delta.size();
for (int i = 0; i < size; i++) {
@@ -5649,6 +5647,7 @@ public final class BatteryStatsImpl extends BatteryStats {
if (mWifiIfaces.length > 0) {
final NetworkStats snapshot;
+ final NetworkStats last = mCurWifiSnapshot;
try {
snapshot = mNetworkStatsFactory.readNetworkStatsDetail(UID_ALL,
mWifiIfaces, NetworkStats.TAG_NONE, mLastWifiSnapshot);
@@ -5657,12 +5656,10 @@ public final class BatteryStatsImpl extends BatteryStats {
return;
}
- if (mLastWifiSnapshot == null) {
- mLastWifiSnapshot = snapshot;
- return;
- }
+ mCurWifiSnapshot = snapshot;
+ mLastWifiSnapshot = last;
- final NetworkStats delta = NetworkStats.subtract(snapshot, mLastWifiSnapshot,
+ final NetworkStats delta = NetworkStats.subtract(snapshot, last,
null, null, mTmpNetworkStats);
mTmpNetworkStats = delta;
mLastWifiSnapshot = snapshot;
@@ -5671,6 +5668,13 @@ public final class BatteryStatsImpl extends BatteryStats {
for (int i = 0; i < size; i++) {
final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry);
+ if (DEBUG) {
+ final NetworkStats.Entry cur = snapshot.getValues(i, null);
+ Slog.d(TAG, "Wifi uid " + entry.uid + ": delta rx=" + entry.rxBytes
+ + " tx=" + entry.txBytes + ", cur rx=" + cur.rxBytes
+ + " tx=" + cur.txBytes);
+ }
+
if (entry.rxBytes == 0 || entry.txBytes == 0) continue;
final Uid u = getUidStatsLocked(entry.uid);