use of android.net.wifi.WifiInfo in project platform_frameworks_base by android.
the class AccessPointTest method testOnAccessPointChangedCallback.
public void testOnAccessPointChangedCallback() {
WifiInfo wifiInfo = Mockito.mock(WifiInfo.class);
Mockito.when(wifiInfo.getNetworkId()).thenReturn(NETWORK_ID);
mAccessPoint.update(wifiInfo, null);
verifyOnAccessPointsCallback(1);
mAccessPoint.update(null, null);
verifyOnAccessPointsCallback(2);
ScanResult result = new ScanResult();
result.capabilities = "";
result.SSID = TEST_SSID;
mAccessPoint.update(result);
verifyOnAccessPointsCallback(3);
}
use of android.net.wifi.WifiInfo in project platform_frameworks_base by android.
the class WifiTrackerTest method generateTestNetworks.
private String[] generateTestNetworks(List<WifiConfiguration> wifiConfigs, List<ScanResult> scanResults, boolean connectedIsEphemeral) {
String[] expectedSsids = new String[NUM_NETWORKS];
// First is just saved;
addConfig(wifiConfigs, TEST_SSIDS[0]);
// This should come last since its not available.
expectedSsids[4] = TEST_SSIDS[0];
// Second is saved and available.
addConfig(wifiConfigs, TEST_SSIDS[1]);
addResult(scanResults, TEST_SSIDS[1], 0);
// This one is going to have a couple extra results, to verify de-duplication.
addResult(scanResults, TEST_SSIDS[1], 2);
addResult(scanResults, TEST_SSIDS[1], 1);
// This should come second since it is available and saved but not connected.
expectedSsids[1] = TEST_SSIDS[1];
// Third is just available, but higher rssi.
addResult(scanResults, TEST_SSIDS[2], 3);
// This comes after the next one since it has a lower rssi.
expectedSsids[3] = TEST_SSIDS[2];
// Fourth also just available but with even higher rssi.
addResult(scanResults, TEST_SSIDS[3], 4);
// This is the highest rssi but not saved so it should be after the saved+availables.
expectedSsids[2] = TEST_SSIDS[3];
// Last is going to be connected.
int netId = WifiConfiguration.INVALID_NETWORK_ID;
if (!connectedIsEphemeral) {
netId = addConfig(wifiConfigs, TEST_SSIDS[4]);
}
addResult(scanResults, TEST_SSIDS[4], 2);
// Setup wifi connection to be this one.
WifiInfo wifiInfo = Mockito.mock(WifiInfo.class);
Mockito.when(wifiInfo.getSSID()).thenReturn(TEST_SSIDS[4]);
Mockito.when(wifiInfo.getNetworkId()).thenReturn(netId);
Mockito.when(mWifiManager.getConnectionInfo()).thenReturn(wifiInfo);
// This should come first since it is connected.
expectedSsids[0] = TEST_SSIDS[4];
return expectedSsids;
}
use of android.net.wifi.WifiInfo in project platform_frameworks_base by android.
the class DevicePolicyManagerTest method testGetMacAddress.
public void testGetMacAddress() throws Exception {
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
mContext.callerPermissions.add(permission.INTERACT_ACROSS_USERS_FULL);
// In this test, change the caller user to "system".
mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
// Make sure admin1 is installed on system user.
setUpPackageManagerForAdmin(admin1, DpmMockContext.CALLER_SYSTEM_USER_UID);
// Test 1. Caller doesn't have DO or DA.
try {
dpm.getWifiMacAddress(admin1);
fail();
} catch (SecurityException e) {
MoreAsserts.assertContainsRegex("No active admin", e.getMessage());
}
// DO needs to be an DA.
dpm.setActiveAdmin(admin1, /* replace =*/
false);
assertTrue(dpm.isAdminActive(admin1));
// Test 2. Caller has DA, but not DO.
try {
dpm.getWifiMacAddress(admin1);
fail();
} catch (SecurityException e) {
MoreAsserts.assertContainsRegex("does not own the device", e.getMessage());
}
// Test 3. Caller has PO, but not DO.
assertTrue(dpm.setProfileOwner(admin1, null, UserHandle.USER_SYSTEM));
try {
dpm.getWifiMacAddress(admin1);
fail();
} catch (SecurityException e) {
MoreAsserts.assertContainsRegex("does not own the device", e.getMessage());
}
// Remove PO.
dpm.clearProfileOwner(admin1);
dpm.setActiveAdmin(admin1, false);
// Test 4, Caller is DO now.
assertTrue(dpm.setDeviceOwner(admin1, null, UserHandle.USER_SYSTEM));
// 4-1. But no WifiInfo.
assertNull(dpm.getWifiMacAddress(admin1));
// 4-2. Returns WifiInfo, but with the default MAC.
when(mContext.wifiManager.getConnectionInfo()).thenReturn(new WifiInfo());
assertNull(dpm.getWifiMacAddress(admin1));
// 4-3. With a real MAC address.
final WifiInfo wi = new WifiInfo();
wi.setMacAddress("11:22:33:44:55:66");
when(mContext.wifiManager.getConnectionInfo()).thenReturn(wi);
assertEquals("11:22:33:44:55:66", dpm.getWifiMacAddress(admin1));
}
use of android.net.wifi.WifiInfo in project platform_frameworks_base by android.
the class NetworkMonitor method sendNetworkConditionsBroadcast.
/**
* @param responseReceived - whether or not we received a valid HTTP response to our request.
* If false, isCaptivePortal and responseTimestampMs are ignored
* TODO: This should be moved to the transports. The latency could be passed to the transports
* along with the captive portal result. Currently the TYPE_MOBILE broadcasts appear unused so
* perhaps this could just be added to the WiFi transport only.
*/
private void sendNetworkConditionsBroadcast(boolean responseReceived, boolean isCaptivePortal, long requestTimestampMs, long responseTimestampMs) {
if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0) {
return;
}
if (systemReady == false)
return;
Intent latencyBroadcast = new Intent(ACTION_NETWORK_CONDITIONS_MEASURED);
switch(mNetworkAgentInfo.networkInfo.getType()) {
case ConnectivityManager.TYPE_WIFI:
WifiInfo currentWifiInfo = mWifiManager.getConnectionInfo();
if (currentWifiInfo != null) {
// NOTE: getSSID()'s behavior changed in API 17; before that, SSIDs were not
// surrounded by double quotation marks (thus violating the Javadoc), but this
// was changed to match the Javadoc in API 17. Since clients may have started
// sanitizing the output of this method since API 17 was released, we should
// not change it here as it would become impossible to tell whether the SSID is
// simply being surrounded by quotes due to the API, or whether those quotes
// are actually part of the SSID.
latencyBroadcast.putExtra(EXTRA_SSID, currentWifiInfo.getSSID());
latencyBroadcast.putExtra(EXTRA_BSSID, currentWifiInfo.getBSSID());
} else {
if (VDBG)
logw("network info is TYPE_WIFI but no ConnectionInfo found");
return;
}
break;
case ConnectivityManager.TYPE_MOBILE:
latencyBroadcast.putExtra(EXTRA_NETWORK_TYPE, mTelephonyManager.getNetworkType());
List<CellInfo> info = mTelephonyManager.getAllCellInfo();
if (info == null)
return;
int numRegisteredCellInfo = 0;
for (CellInfo cellInfo : info) {
if (cellInfo.isRegistered()) {
numRegisteredCellInfo++;
if (numRegisteredCellInfo > 1) {
if (VDBG)
logw("more than one registered CellInfo." + " Can't tell which is active. Bailing.");
return;
}
if (cellInfo instanceof CellInfoCdma) {
CellIdentityCdma cellId = ((CellInfoCdma) cellInfo).getCellIdentity();
latencyBroadcast.putExtra(EXTRA_CELL_ID, cellId);
} else if (cellInfo instanceof CellInfoGsm) {
CellIdentityGsm cellId = ((CellInfoGsm) cellInfo).getCellIdentity();
latencyBroadcast.putExtra(EXTRA_CELL_ID, cellId);
} else if (cellInfo instanceof CellInfoLte) {
CellIdentityLte cellId = ((CellInfoLte) cellInfo).getCellIdentity();
latencyBroadcast.putExtra(EXTRA_CELL_ID, cellId);
} else if (cellInfo instanceof CellInfoWcdma) {
CellIdentityWcdma cellId = ((CellInfoWcdma) cellInfo).getCellIdentity();
latencyBroadcast.putExtra(EXTRA_CELL_ID, cellId);
} else {
if (VDBG)
logw("Registered cellinfo is unrecognized");
return;
}
}
}
break;
default:
return;
}
latencyBroadcast.putExtra(EXTRA_CONNECTIVITY_TYPE, mNetworkAgentInfo.networkInfo.getType());
latencyBroadcast.putExtra(EXTRA_RESPONSE_RECEIVED, responseReceived);
latencyBroadcast.putExtra(EXTRA_REQUEST_TIMESTAMP_MS, requestTimestampMs);
if (responseReceived) {
latencyBroadcast.putExtra(EXTRA_IS_CAPTIVE_PORTAL, isCaptivePortal);
latencyBroadcast.putExtra(EXTRA_RESPONSE_TIMESTAMP_MS, responseTimestampMs);
}
mContext.sendBroadcastAsUser(latencyBroadcast, UserHandle.CURRENT, PERMISSION_ACCESS_NETWORK_CONDITIONS);
}
use of android.net.wifi.WifiInfo in project carat by amplab.
the class SamplingLibrary method getWifiMacAddress.
/**
* Get Wifi MAC ADDR. Hashed and used in UUID calculation.
*/
private static String getWifiMacAddress(Context context) {
WifiManager myWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (myWifiManager == null)
return null;
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
if (myWifiInfo == null)
return null;
return myWifiInfo.getMacAddress();
}
Aggregations