private boolean isWifiScanningAlwaysOn() { if (Build.VERSION.SDK_INT >= ScannerFactory.OS_VERSION_JELLY_BEAN_MR2) { return wifiManager.isScanAlwaysAvailable(); } return false; }
@Test @Config(minSdk = JELLY_BEAN_MR2) public void getIsScanAlwaysAvailable() { shadowOf(wifiManager).setIsScanAlwaysAvailable(true); assertThat(wifiManager.isScanAlwaysAvailable()).isEqualTo(true); shadowOf(wifiManager).setIsScanAlwaysAvailable(false); assertThat(wifiManager.isScanAlwaysAvailable()).isEqualTo(false); }
public static boolean isScanAlwaysAvailable(WifiManager wifiManager) { try { return wifiManager.isScanAlwaysAvailable(); } catch (NoSuchMethodError e) { return false; } } }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) private boolean isScanAlwaysAvailable() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && wifiManager.isScanAlwaysAvailable(); }
/** * Ask Android's WiFi manager to scan for access points (APs). When done the onWiFisChanged() * method will be called by Android. */ private void startWiFiScan() { // Throttle scanning for WiFi APs. In open terrain an AP could cover a kilometer. // Even in a vehicle moving at highway speeds it can take several seconds to traverse // the coverage area, no need to waste phone resources scanning too rapidly. long currentProcessTime = System.currentTimeMillis(); if (currentProcessTime < nextWlanScanTime) return; nextWlanScanTime = currentProcessTime + WLAN_SCAN_INTERVAL; if (wm == null) { wm = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE); } if ((wm != null) && !wifiScanInprogress) { if (wm.isWifiEnabled() || ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) && wm.isScanAlwaysAvailable())) { //Log.d(TAG,"startWiFiScan() - Starting WiFi collection."); wifiScanInprogress = true; wm.startScan(); } } }
/** * Check that WiFi is supported and background scanning is enabled */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) public void onCheckWiFiBackgroundScanning(View view) { WifiManager manager = (WifiManager) getApplicationContext() .getSystemService(Context.WIFI_SERVICE); if (manager == null) { ExampleUtils.showInfo(this, getString(R.string.wifi_not_supported)); } else { if (manager.isScanAlwaysAvailable()) { ExampleUtils.showInfo(this, getString(R.string.wifi_background_scanning_enabled)); } else { // Ask user to enable background scanning startActivityForResult( new Intent(WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE), WIFI_BACKGROUND_SCANNING_ENABLED_REQUEST_CODE); } } }
if (!mWifiManager.isWifiEnabled() && !mWifiManager.isScanAlwaysAvailable()) { Log.i(TAG, "Wifi disabled or is scan always available off, skipping wifi scan"); return;