ScanResultpublic class ScanResult extends Object implements android.os.ParcelableDescribes information about a detected access point. In addition
to the attributes described here, the supplicant keeps track of
{@code quality}, {@code noise}, and {@code maxbitrate} attributes,
but does not currently report them to external clients. |
Fields Summary |
---|
public String | SSIDThe network name. | public WifiSsid | wifiSsidAscii encoded SSID. This will replace SSID when we deprecate it. @hide | public String | BSSIDThe address of the access point. | public String | capabilitiesDescribes the authentication, key management, and encryption schemes
supported by the access point. | public int | levelThe detected signal level in dBm, also known as the RSSI.
Use {@link android.net.wifi.WifiManager#calculateSignalLevel} to convert this number into
an absolute signal level which can be displayed to a user. | public int | frequencyThe frequency in MHz of the channel over which the client is communicating
with the access point. | public long | timestamptimestamp in microseconds (since boot) when
this result was last seen. | public long | seenTimestamp representing date when this result was last seen, in milliseconds from 1970
{@hide} | public int | isAutoJoinCandidateIf the scan result is a valid autojoin candidate
{@hide} | public static final int | ENABLED | public static final int | AUTO_ROAM_DISABLED | public static final int | AUTO_JOIN_DISABLED | public static final int | AUTHENTICATION_ERROR | public int | autoJoinStatusStatus: indicating join status | public int | numIpConfigFailuresnum IP configuration failures | public long | blackListTimestamp | public boolean | untrustedStatus: indicating the scan result is not a result
that is part of user's saved configurations | public int | numConnectionNumber of time we connected to it | public int | numUsageNumber of time autojoin used it | public int | distanceCmThe approximate distance to the AP in centimeter, if available. Else
{@link UNSPECIFIED}.
{@hide} | public int | distanceSdCmThe standard deviation of the distance to the AP, if available.
Else {@link UNSPECIFIED}.
{@hide} | public static final int | UNSPECIFIED{@hide} | public InformationElement[] | informationElementsinformation elements found in the beacon | public static final Creator | CREATORImplement the Parcelable interface {@hide} |
Constructors Summary |
---|
public ScanResult()empty scan result
{@hide}
| public ScanResult(WifiSsid wifiSsid, String BSSID, String caps, int level, int frequency, long tsf){@hide}
this.wifiSsid = wifiSsid;
this.SSID = (wifiSsid != null) ? wifiSsid.toString() : WifiSsid.NONE;
this.BSSID = BSSID;
this.capabilities = caps;
this.level = level;
this.frequency = frequency;
this.timestamp = tsf;
this.distanceCm = UNSPECIFIED;
this.distanceSdCm = UNSPECIFIED;
| public ScanResult(WifiSsid wifiSsid, String BSSID, String caps, int level, int frequency, long tsf, int distCm, int distSdCm){@hide}
this.wifiSsid = wifiSsid;
this.SSID = (wifiSsid != null) ? wifiSsid.toString() : WifiSsid.NONE;
this.BSSID = BSSID;
this.capabilities = caps;
this.level = level;
this.frequency = frequency;
this.timestamp = tsf;
this.distanceCm = distCm;
this.distanceSdCm = distSdCm;
| public ScanResult(ScanResult source)copy constructor {@hide}
if (source != null) {
wifiSsid = source.wifiSsid;
SSID = source.SSID;
BSSID = source.BSSID;
capabilities = source.capabilities;
level = source.level;
frequency = source.frequency;
timestamp = source.timestamp;
distanceCm = source.distanceCm;
distanceSdCm = source.distanceSdCm;
seen = source.seen;
autoJoinStatus = source.autoJoinStatus;
untrusted = source.untrusted;
numConnection = source.numConnection;
numUsage = source.numUsage;
numIpConfigFailures = source.numIpConfigFailures;
isAutoJoinCandidate = source.isAutoJoinCandidate;
}
|
Methods Summary |
---|
public void | averageRssi(int previousRssi, long previousSeen, int maxAge)
if (seen == 0) {
seen = System.currentTimeMillis();
}
long age = seen - previousSeen;
if (previousSeen > 0 && age > 0 && age < maxAge/2) {
// Average the RSSI with previously seen instances of this scan result
double alpha = 0.5 - (double) age / (double) maxAge;
level = (int) ((double) level * (1 - alpha) + (double) previousRssi * alpha);
}
| public int | describeContents()Implement the Parcelable interface {@hide}
return 0;
| public boolean | is24GHz()
return ScanResult.is24GHz(frequency);
| public static boolean | is24GHz(int freq)
return freq > 2400 && freq < 2500;
| public boolean | is5GHz()
return ScanResult.is5GHz(frequency);
| public static boolean | is5GHz(int freq)
return freq > 4900 && freq < 5900;
| public void | setAutoJoinStatus(int status)
if (status < 0) status = 0;
if (status == 0) {
blackListTimestamp = 0;
} else if (status > autoJoinStatus) {
blackListTimestamp = System.currentTimeMillis();
}
autoJoinStatus = status;
| public java.lang.String | toString()
StringBuffer sb = new StringBuffer();
String none = "<none>";
sb.append("SSID: ").
append(wifiSsid == null ? WifiSsid.NONE : wifiSsid).
append(", BSSID: ").
append(BSSID == null ? none : BSSID).
append(", capabilities: ").
append(capabilities == null ? none : capabilities).
append(", level: ").
append(level).
append(", frequency: ").
append(frequency).
append(", timestamp: ").
append(timestamp);
sb.append(", distance: ").append((distanceCm != UNSPECIFIED ? distanceCm : "?")).
append("(cm)");
sb.append(", distanceSd: ").append((distanceSdCm != UNSPECIFIED ? distanceSdCm : "?")).
append("(cm)");
if (autoJoinStatus != 0) {
sb.append(", status: ").append(autoJoinStatus);
}
return sb.toString();
| public void | writeToParcel(android.os.Parcel dest, int flags)Implement the Parcelable interface {@hide}
if (wifiSsid != null) {
dest.writeInt(1);
wifiSsid.writeToParcel(dest, flags);
} else {
dest.writeInt(0);
}
dest.writeString(BSSID);
dest.writeString(capabilities);
dest.writeInt(level);
dest.writeInt(frequency);
dest.writeLong(timestamp);
dest.writeInt(distanceCm);
dest.writeInt(distanceSdCm);
dest.writeLong(seen);
dest.writeInt(autoJoinStatus);
dest.writeInt(untrusted ? 1 : 0);
dest.writeInt(numConnection);
dest.writeInt(numUsage);
dest.writeInt(numIpConfigFailures);
dest.writeInt(isAutoJoinCandidate);
if (informationElements != null) {
dest.writeInt(informationElements.length);
for (int i = 0; i < informationElements.length; i++) {
dest.writeInt(informationElements[i].id);
dest.writeInt(informationElements[i].bytes.length);
dest.writeByteArray(informationElements[i].bytes);
}
} else {
dest.writeInt(0);
}
|
|