package org.microg.networklocation.platform; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; import android.util.Log; import org.microg.networklocation.MainService; import org.microg.networklocation.data.MacAddress; import org.microg.networklocation.data.WifiSpec; import java.util.ArrayList; import java.util.Collection; class WifiSpecRetriever implements org.microg.networklocation.retriever.WifiSpecRetriever { private static final String TAG = "nlp.WifiSpecRetriever"; private final WifiManager wifiManager; public WifiSpecRetriever(WifiManager wifiManager) { this.wifiManager = wifiManager; } public WifiSpecRetriever(Context context) { this((WifiManager) context.getSystemService(Context.WIFI_SERVICE)); } public Collection<WifiSpec> retrieveWifiSpecs() { Collection<WifiSpec> wifiSpecs = new ArrayList<WifiSpec>(); if (wifiManager == null) { return wifiSpecs; } Collection<ScanResult> scanResults = wifiManager.getScanResults(); if (scanResults == null) { return wifiSpecs; } for (ScanResult scanResult : scanResults) { MacAddress macAddress = MacAddress.parse(scanResult.BSSID); int frequency = scanResult.frequency; int level = scanResult.level; wifiSpecs.add(new WifiSpec(macAddress, frequency, level)); } if (MainService.DEBUG) { Log.d(TAG, "Found "+ wifiSpecs.size()+" Wifis"); } return wifiSpecs; } }