Enable bandwidth module from stats service.

During systemReady(), tell netd to enable bandwidth tracking module,
which is used to provide detailed stats and controls.

Change-Id: Iecfd8b17a3b90f5a817d731fbe1c71777681ed6e
This commit is contained in:
Jeff Sharkey
2011-06-22 16:32:41 -07:00
parent 3bc842e4c3
commit 2e546ddbde

View File

@@ -27,6 +27,7 @@ import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkStats.UID_ALL;
import static android.net.TrafficStats.UID_REMOVED; import static android.net.TrafficStats.UID_REMOVED;
import static android.provider.Settings.Secure.NETSTATS_ENABLED;
import static android.provider.Settings.Secure.NETSTATS_NETWORK_BUCKET_DURATION; import static android.provider.Settings.Secure.NETSTATS_NETWORK_BUCKET_DURATION;
import static android.provider.Settings.Secure.NETSTATS_NETWORK_MAX_HISTORY; import static android.provider.Settings.Secure.NETSTATS_NETWORK_MAX_HISTORY;
import static android.provider.Settings.Secure.NETSTATS_PERSIST_THRESHOLD; import static android.provider.Settings.Secure.NETSTATS_PERSIST_THRESHOLD;
@@ -134,6 +135,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
* Settings that can be changed externally. * Settings that can be changed externally.
*/ */
public interface NetworkStatsSettings { public interface NetworkStatsSettings {
public boolean getEnabled();
public long getPollInterval(); public long getPollInterval();
public long getPersistThreshold(); public long getPersistThreshold();
public long getNetworkBucketDuration(); public long getNetworkBucketDuration();
@@ -206,6 +208,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
} }
public void systemReady() { public void systemReady() {
if (mSettings.getEnabled()) {
try {
// enable low-level bandwidth stats and control
// TODO: consider shipping with this enabled by default
mNetworkManager.setBandwidthControlEnabled(true);
} catch (RemoteException e) {
Slog.e(TAG, "problem enabling bandwidth controls", e);
}
} else {
Slog.w(TAG, "detailed network stats disabled");
}
synchronized (mStatsLock) { synchronized (mStatsLock) {
// read historical network stats from disk, since policy service // read historical network stats from disk, since policy service
// might need them right away. we delay loading detailed UID stats // might need them right away. we delay loading detailed UID stats
@@ -1040,6 +1054,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
return Settings.Secure.getLong(mResolver, name, def); return Settings.Secure.getLong(mResolver, name, def);
} }
public boolean getEnabled() {
return Settings.Secure.getInt(mResolver, NETSTATS_ENABLED, 1) != 0;
}
public long getPollInterval() { public long getPollInterval() {
return getSecureLong(NETSTATS_POLL_INTERVAL, 15 * MINUTE_IN_MILLIS); return getSecureLong(NETSTATS_POLL_INTERVAL, 15 * MINUTE_IN_MILLIS);
} }