WiFiScanner.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package com.epson.mobilephone.common.wifidirect;
  2. import android.net.wifi.WifiManager;
  3. import android.os.Build;
  4. import android.os.Handler;
  5. import java.lang.ref.WeakReference;
  6. /**
  7. * wifi扫描工具类
  8. */
  9. public class WiFiScanner {
  10. private static final int INTERVAL_SCAN = 30;
  11. private static Handler wifiScannerHandler;
  12. private static Object wifiScannerToken;
  13. private String TAG = "WiFiScanner";
  14. private WeakReference<WifiManager> refWiFiManager = null;
  15. public boolean startScan(WifiManager wifiManager) {
  16. if (Build.VERSION.SDK_INT >= 28) {
  17. if (wifiScannerHandler == null) {
  18. wifiScannerHandler = new Handler();
  19. wifiScannerToken = new Object();
  20. }
  21. wifiScannerHandler.removeCallbacksAndMessages(wifiScannerToken);
  22. refWiFiManager = new WeakReference<>(wifiManager);
  23. wifiScannerHandler.postDelayed(new Runnable() {
  24. public void run() {
  25. WifiManager wifiManager = (WifiManager) refWiFiManager.get();
  26. if (refWiFiManager != null) {
  27. EPLog.d (TAG, "Started Delayed startScan()");
  28. if (!wifiManager.startScan()) {
  29. EPLog.e (TAG, "Failed Delayed startScan()");
  30. }
  31. }
  32. }
  33. }, wifiScannerToken, 30000);
  34. return true;
  35. } else if (wifiManager.startScan()) {
  36. return true;
  37. } else {
  38. EPLog.e(TAG, "Failed startScan()");
  39. return false;
  40. }
  41. }
  42. }