diff options
Diffstat (limited to 'wifi/java/android')
11 files changed, 173 insertions, 39 deletions
diff --git a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java index c9a2f07..0f73342 100644 --- a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java +++ b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java @@ -21,37 +21,60 @@ import android.os.Parcelable; /** * Record of energy and activity information from controller and - * underlying wifi stack state.Timestamp the record with system - * time + * underlying wifi stack state. Timestamp the record with elapsed + * real-time. * @hide */ public final class WifiActivityEnergyInfo implements Parcelable { - private final int mStackState; - private final int mControllerTxTimeMs; - private final int mControllerRxTimeMs; - private final int mControllerIdleTimeMs; - private final int mControllerEnergyUsed; - private final long timestamp; + /** + * @hide + */ + public long mTimestamp; + + /** + * @hide + */ + public int mStackState; + + /** + * @hide + */ + public int mControllerTxTimeMs; + + /** + * @hide + */ + public int mControllerRxTimeMs; + + /** + * @hide + */ + public int mControllerIdleTimeMs; + + /** + * @hide + */ + public int mControllerEnergyUsed; public static final int STACK_STATE_INVALID = 0; public static final int STACK_STATE_STATE_ACTIVE = 1; public static final int STACK_STATE_STATE_SCANNING = 2; public static final int STACK_STATE_STATE_IDLE = 3; - public WifiActivityEnergyInfo(int stackState, int txTime, int rxTime, - int idleTime, int energyUsed) { + public WifiActivityEnergyInfo(long timestamp, int stackState, + int txTime, int rxTime, int idleTime, int energyUsed) { + mTimestamp = timestamp; mStackState = stackState; mControllerTxTimeMs = txTime; mControllerRxTimeMs = rxTime; mControllerIdleTimeMs = idleTime; mControllerEnergyUsed = energyUsed; - timestamp = System.currentTimeMillis(); } @Override public String toString() { return "WifiActivityEnergyInfo{" - + " timestamp=" + timestamp + + " timestamp=" + mTimestamp + " mStackState=" + mStackState + " mControllerTxTimeMs=" + mControllerTxTimeMs + " mControllerRxTimeMs=" + mControllerRxTimeMs @@ -63,13 +86,14 @@ public final class WifiActivityEnergyInfo implements Parcelable { public static final Parcelable.Creator<WifiActivityEnergyInfo> CREATOR = new Parcelable.Creator<WifiActivityEnergyInfo>() { public WifiActivityEnergyInfo createFromParcel(Parcel in) { + long timestamp = in.readLong(); int stackState = in.readInt(); int txTime = in.readInt(); int rxTime = in.readInt(); int idleTime = in.readInt(); int energyUsed = in.readInt(); - return new WifiActivityEnergyInfo(stackState, txTime, rxTime, - idleTime, energyUsed); + return new WifiActivityEnergyInfo(timestamp, stackState, + txTime, rxTime, idleTime, energyUsed); } public WifiActivityEnergyInfo[] newArray(int size) { return new WifiActivityEnergyInfo[size]; @@ -77,6 +101,7 @@ public final class WifiActivityEnergyInfo implements Parcelable { }; public void writeToParcel(Parcel out, int flags) { + out.writeLong(mTimestamp); out.writeInt(mStackState); out.writeInt(mControllerTxTimeMs); out.writeInt(mControllerRxTimeMs); @@ -128,7 +153,7 @@ public final class WifiActivityEnergyInfo implements Parcelable { * @return timestamp(wall clock) of record creation */ public long getTimeStamp() { - return timestamp; + return mTimestamp; } /** diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 8ee2273..6ea0db2 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -17,6 +17,7 @@ package android.net.wifi; import android.annotation.SystemApi; +import android.content.pm.PackageManager; import android.net.IpConfiguration; import android.net.IpConfiguration.ProxySettings; import android.net.ProxyInfo; @@ -398,10 +399,32 @@ public class WifiConfiguration implements Parcelable { /** * @hide + * Universal name for app creating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String creatorName; + + /** + * @hide + * Universal name for app updating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String lastUpdateName; + + /** + * @hide * Uid used by autoJoin */ public String autoJoinBSSID; + /** + * @hide + * Status of user approval for connection + */ + public int userApproved = USER_UNSPECIFIED; + /** The Below RSSI thresholds are used to configure AutoJoin * - GOOD/LOW/BAD thresholds are used so as to calculate link score * - UNWANTED_SOFT are used by the blacklisting logic so as to handle @@ -603,6 +626,28 @@ public class WifiConfiguration implements Parcelable { /** @hide */ public static final int AUTO_JOIN_DELETED = 200; + // States for the userApproved field + /** + * @hide + * User hasn't specified if connection is okay + */ + public static final int USER_UNSPECIFIED = 0; + /** + * @hide + * User has approved this for connection + */ + public static final int USER_APPROVED = 1; + /** + * @hide + * User has banned this from connection + */ + public static final int USER_BANNED = 2; + /** + * @hide + * Waiting for user input + */ + public static final int USER_PENDING = 3; + /** * @hide */ @@ -856,6 +901,8 @@ public class WifiConfiguration implements Parcelable { ephemeral = false; validatedInternetAccess = false; mIpConfiguration = new IpConfiguration(); + lastUpdateUid = -1; + creatorUid = -1; } /** @@ -936,6 +983,15 @@ public class WifiConfiguration implements Parcelable { return false; } + /** + * Helper function, idenfity if a configuration should be treated as an enterprise network + * @hide + */ + public boolean isEnterprise() { + return allowedKeyManagement.get(KeyMgmt.WPA_EAP) || + allowedKeyManagement.get(KeyMgmt.IEEE8021X); + } + /** @hide **/ public void setAutoJoinStatus(int status) { if (status < 0) status = 0; @@ -1060,7 +1116,6 @@ public class WifiConfiguration implements Parcelable { sbuf.append("IP config:\n"); sbuf.append(mIpConfiguration.toString()); - if (this.creatorUid != 0) sbuf.append(" uid=" + Integer.toString(creatorUid)); if (this.autoJoinBSSID != null) sbuf.append(" autoJoinBSSID=" + autoJoinBSSID); long now_ms = System.currentTimeMillis(); if (this.blackListTimestamp != 0) { @@ -1072,6 +1127,12 @@ public class WifiConfiguration implements Parcelable { sbuf.append(" blackListed: ").append(Long.toString(diff/1000)).append( "sec"); } } + if (creatorUid != 0) sbuf.append(" cuid=" + Integer.toString(creatorUid)); + if (creatorName != null) sbuf.append(" cname=" + creatorName); + if (lastUpdateUid != 0) sbuf.append(" luid=" + lastUpdateUid); + if (lastUpdateName != null) sbuf.append(" lname=" + lastUpdateName); + sbuf.append("userApproved=" + userApprovedAsString(userApproved)); + if (this.lastConnected != 0) { sbuf.append('\n'); long diff = now_ms - this.lastConnected; @@ -1172,6 +1233,20 @@ public class WifiConfiguration implements Parcelable { return SSID; } + /** @hide **/ + public static String userApprovedAsString(int userApproved) { + switch (userApproved) { + case USER_APPROVED: + return "USER_APPROVED"; + case USER_BANNED: + return "USER_BANNED"; + case USER_UNSPECIFIED: + return "USER_UNSPECIFIED"; + default: + return "INVALID"; + } + } + /** * Get an identifier for associating credentials with this config * @param current configuration contains values for additional fields @@ -1437,6 +1512,8 @@ public class WifiConfiguration implements Parcelable { lastConnectUid = source.lastConnectUid; lastUpdateUid = source.lastUpdateUid; creatorUid = source.creatorUid; + creatorName = source.creatorName; + lastUpdateName = source.lastUpdateName; peerWifiConfiguration = source.peerWifiConfiguration; blackListTimestamp = source.blackListTimestamp; lastConnected = source.lastConnected; @@ -1463,6 +1540,7 @@ public class WifiConfiguration implements Parcelable { = source.autoJoinUseAggressiveJoinAttemptThreshold; autoJoinBailedDueToLowRssi = source.autoJoinBailedDueToLowRssi; dirty = source.dirty; + userApproved = source.userApproved; numNoInternetAccessReports = source.numNoInternetAccessReports; } } @@ -1518,6 +1596,8 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(creatorUid); dest.writeInt(lastConnectUid); dest.writeInt(lastUpdateUid); + dest.writeString(creatorName); + dest.writeString(lastUpdateName); dest.writeLong(blackListTimestamp); dest.writeLong(lastConnectionFailure); dest.writeLong(lastRoamingFailure); @@ -1538,6 +1618,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(numUserTriggeredJoinAttempts); dest.writeInt(autoJoinUseAggressiveJoinAttemptThreshold); dest.writeInt(autoJoinBailedDueToLowRssi ? 1 : 0); + dest.writeInt(userApproved); dest.writeInt(numNoInternetAccessReports); } @@ -1589,6 +1670,8 @@ public class WifiConfiguration implements Parcelable { config.creatorUid = in.readInt(); config.lastConnectUid = in.readInt(); config.lastUpdateUid = in.readInt(); + config.creatorName = in.readString(); + config.lastUpdateName = in.readString(); config.blackListTimestamp = in.readLong(); config.lastConnectionFailure = in.readLong(); config.lastRoamingFailure = in.readLong(); @@ -1609,6 +1692,7 @@ public class WifiConfiguration implements Parcelable { config.numUserTriggeredJoinAttempts = in.readInt(); config.autoJoinUseAggressiveJoinAttemptThreshold = in.readInt(); config.autoJoinBailedDueToLowRssi = in.readInt() != 0; + config.userApproved = in.readInt(); config.numNoInternetAccessReports = in.readInt(); return config; } diff --git a/wifi/java/android/net/wifi/WifiLinkLayerStats.java b/wifi/java/android/net/wifi/WifiLinkLayerStats.java index 7fac7cf..1de4fd8 100644 --- a/wifi/java/android/net/wifi/WifiLinkLayerStats.java +++ b/wifi/java/android/net/wifi/WifiLinkLayerStats.java @@ -18,12 +18,6 @@ package android.net.wifi; import android.os.Parcelable; import android.os.Parcel; -import android.text.TextUtils; -import java.util.HashMap; -import java.util.Date; -import java.util.ArrayList; - -import java.util.BitSet; /** * A class representing link layer statistics collected over a Wifi Interface. diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 2058645..4e4f9b2 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -86,6 +86,28 @@ public class WifiManager { public static final String EXTRA_SCAN_AVAILABLE = "scan_enabled"; /** + * Broadcast intent action indicating that the credential of a Wi-Fi network + * has been changed. One extra provides the ssid of the network. Another + * extra provides the event type, whether the credential is saved or forgot. + * @hide + */ + @SystemApi + public static final String WIFI_CREDENTIAL_CHANGED_ACTION = + "android.net.wifi.WIFI_CREDENTIAL_CHANGED"; + /** @hide */ + @SystemApi + public static final String EXTRA_WIFI_CREDENTIAL_EVENT_TYPE = "et"; + /** @hide */ + @SystemApi + public static final String EXTRA_WIFI_CREDENTIAL_SSID = "ssid"; + /** @hide */ + @SystemApi + public static final int WIFI_CREDENTIAL_SAVED = 0; + /** @hide */ + @SystemApi + public static final int WIFI_CREDENTIAL_FORGOT = 1; + + /** * Broadcast intent action indicating that Wi-Fi has been enabled, disabled, * enabling, disabling, or unknown. One extra provides this state as an int. * Another extra provides the previous state, if available. @@ -2635,4 +2657,25 @@ public class WifiManager { } return false; } + + /** + * Resets all wifi manager settings back to factory defaults. + * + * @hide + */ + public void factoryReset() { + // Enable wifi + setWifiEnabled(true); + // Delete all Wifi SSIDs + List<WifiConfiguration> networks = getConfiguredNetworks(); + if (networks != null) { + for (WifiConfiguration config : networks) { + removeNetwork(config.networkId); + } + saveConfiguration(); + } + + // Turn mobile hotspot off + setWifiApEnabled(null, false); + } } diff --git a/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java b/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java index c7d62e5..9b2fdc8 100644 --- a/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java +++ b/wifi/java/android/net/wifi/WifiNetworkConnectionStatistics.java @@ -21,8 +21,6 @@ import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; -import java.util.HashMap; - /** * Connection Statistics For a WiFi Network. * @hide diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java index fea934f..cecd738 100644 --- a/wifi/java/android/net/wifi/WifiScanner.java +++ b/wifi/java/android/net/wifi/WifiScanner.java @@ -417,11 +417,6 @@ public class WifiScanner { public void onPeriodChanged(int periodInMs); /** * reports results retrieved from background scan and single shot scans - * @deprecated in favor of {@link #onResults(ScanData[])} - */ - public void onResults(ScanResult[] results); - /** - * reports results retrieved from background scan and single shot scans */ public void onResults(ScanData[] results); /** @@ -452,12 +447,12 @@ public class WifiScanner { } /** * reports currently available scan results on appropriate listeners + * @return true if all scan results were reported correctly */ - public ScanResult[] getScanResults() { + public boolean getScanResults() { validateChannel(); Message reply = sAsyncChannel.sendMessageSynchronously(CMD_GET_SCAN_RESULTS, 0); - // return reply.what == CMD_OP_SUCCEEDED; - return null; + return reply.what == CMD_OP_SUCCEEDED; } /** diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java index d65d03e..92c7e36 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java @@ -77,6 +77,7 @@ public class WifiP2pWfdInfo implements Parcelable { public boolean setDeviceType(int deviceType) { if (deviceType >= WFD_SOURCE && deviceType <= SOURCE_OR_PRIMARY_SINK) { + mDeviceInfo &= ~DEVICE_TYPE; mDeviceInfo |= deviceType; return true; } diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceResponse.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceResponse.java index 194c982..0ddfa77 100644 --- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceResponse.java +++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceResponse.java @@ -334,7 +334,7 @@ public class WifiP2pServiceResponse implements Parcelable { result = 31 * result + mTransId; result = 31 * result + (mDevice.deviceAddress == null ? 0 : mDevice.deviceAddress.hashCode()); - result = 31 * result + (mData == null ? 0 : mData.hashCode()); + result = 31 * result + (mData == null ? 0 : Arrays.hashCode(mData)); return result; } diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java index 0a7230f..a100aed 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointCredential.java @@ -20,9 +20,7 @@ import android.net.wifi.WifiEnterpriseConfig; import android.os.Parcelable; import android.os.Parcel; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Iterator; import java.util.Map; import java.util.Set; diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java index bbf5fc6..427c84c 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointDmTree.java @@ -18,8 +18,6 @@ package android.net.wifi.passpoint; import android.os.Parcelable; import android.os.Parcel; -import android.util.Log; - import java.util.HashMap; /** diff --git a/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java b/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java index f84ac88..c08877e 100644 --- a/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java +++ b/wifi/java/android/net/wifi/passpoint/WifiPasspointPolicy.java @@ -17,7 +17,6 @@ package android.net.wifi.passpoint; import android.net.wifi.WifiConfiguration; -import android.net.wifi.ScanResult; import android.os.Parcelable; import android.os.Parcel; import android.security.Credentials; @@ -25,7 +24,6 @@ import android.util.Log; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.List; /** @hide */ |
