diff options
author | Jeff Sharkey <jsharkey@android.com> | 2012-04-19 23:01:08 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2012-04-20 15:57:19 -0700 |
commit | 9f6e4ba50e7e73704c7fbd3ba65fe73bdf8ad73f (patch) | |
tree | ed8045c7cfb0fcea3c10b0f76d2808116ac1545e /wifi/java/android/net/wifi/WifiInfo.java | |
parent | f0c4c658488824707c206551fd1ccc0a0781031e (diff) | |
download | frameworks_base-9f6e4ba50e7e73704c7fbd3ba65fe73bdf8ad73f.zip frameworks_base-9f6e4ba50e7e73704c7fbd3ba65fe73bdf8ad73f.tar.gz frameworks_base-9f6e4ba50e7e73704c7fbd3ba65fe73bdf8ad73f.tar.bz2 |
Connect metered DHCP hint for Wi-Fi networks.
When DHCP lease includes vendor info indicating that remote Wi-Fi
network is metered, advise NetworkPolicy. Users can still manually
change the metered flag in Settings.
Also remove any policies belonging to removed Wi-Fi networks, and
teach isNetworkMetered() about ethernet networks.
Bug: 6344821, 6369307, 6365872
Change-Id: I108606c6fddf2d02828fcab011f3a1501415f1bc
Diffstat (limited to 'wifi/java/android/net/wifi/WifiInfo.java')
-rw-r--r-- | wifi/java/android/net/wifi/WifiInfo.java | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 7bb927b..30e4a20 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -68,9 +68,14 @@ public class WifiInfo implements Parcelable { private int mLinkSpeed; private InetAddress mIpAddress; - private String mMacAddress; + /** + * Flag indicating that AP has hinted that upstream connection is metered, + * and sensitive to heavy data transfers. + */ + private boolean mMeteredHint; + WifiInfo() { mSSID = null; mBSSID = null; @@ -96,6 +101,7 @@ public class WifiInfo implements Parcelable { mLinkSpeed = source.mLinkSpeed; mIpAddress = source.mIpAddress; mMacAddress = source.mMacAddress; + mMeteredHint = source.mMeteredHint; } } @@ -168,6 +174,16 @@ public class WifiInfo implements Parcelable { return mMacAddress; } + /** {@hide} */ + public void setMeteredHint(boolean meteredHint) { + mMeteredHint = meteredHint; + } + + /** {@hide} */ + public boolean getMeteredHint() { + return mMeteredHint; + } + void setNetworkId(int id) { mNetworkId = id; } @@ -248,6 +264,15 @@ public class WifiInfo implements Parcelable { } } + /** {@hide} */ + public static String removeDoubleQuotes(String string) { + final int length = string.length(); + if ((length > 1) && (string.charAt(0) == '"') && (string.charAt(length - 1) == '"')) { + return string.substring(1, length - 1); + } + return string; + } + @Override public String toString() { StringBuffer sb = new StringBuffer(); @@ -260,7 +285,8 @@ public class WifiInfo implements Parcelable { append(mSupplicantState == null ? none : mSupplicantState). append(", RSSI: ").append(mRssi). append(", Link speed: ").append(mLinkSpeed). - append(", Net ID: ").append(mNetworkId); + append(", Net ID: ").append(mNetworkId). + append(", Metered hint: ").append(mMeteredHint); return sb.toString(); } @@ -284,6 +310,7 @@ public class WifiInfo implements Parcelable { dest.writeString(getSSID()); dest.writeString(mBSSID); dest.writeString(mMacAddress); + dest.writeInt(mMeteredHint ? 1 : 0); mSupplicantState.writeToParcel(dest, flags); } @@ -303,6 +330,7 @@ public class WifiInfo implements Parcelable { info.setSSID(in.readString()); info.mBSSID = in.readString(); info.mMacAddress = in.readString(); + info.mMeteredHint = in.readInt() != 0; info.mSupplicantState = SupplicantState.CREATOR.createFromParcel(in); return info; } |