diff options
Diffstat (limited to 'wifi/java/android')
| -rw-r--r-- | wifi/java/android/net/wifi/WifiInfo.java | 32 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 3 |
2 files changed, 33 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; } diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 2f14098..705e3c7 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -1642,6 +1642,7 @@ public class WifiStateMachine extends StateMachine { mWifiInfo.setNetworkId(WifiConfiguration.INVALID_NETWORK_ID); mWifiInfo.setRssi(MIN_RSSI); mWifiInfo.setLinkSpeed(-1); + mWifiInfo.setMeteredHint(false); setNetworkDetailedState(DetailedState.DISCONNECTED); mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.DISCONNECTED); @@ -1713,6 +1714,7 @@ public class WifiStateMachine extends StateMachine { mWifiConfigStore.setIpConfiguration(mLastNetworkId, dhcpInfoInternal); InetAddress addr = NetworkUtils.numericToInetAddress(dhcpInfoInternal.ipAddress); mWifiInfo.setInetAddress(addr); + mWifiInfo.setMeteredHint(dhcpInfoInternal.hasMeteredHint()); if (getNetworkDetailedState() == DetailedState.CONNECTED) { //DHCP renewal in connected state LinkProperties linkProperties = dhcpInfoInternal.makeLinkProperties(); @@ -1735,6 +1737,7 @@ public class WifiStateMachine extends StateMachine { loge("IP configuration failed"); mWifiInfo.setInetAddress(null); + mWifiInfo.setMeteredHint(false); /** * If we've exceeded the maximum number of retries for DHCP * to a given network, disable the network |
