안드로이드 9는 어떻게 주동적으로 와이파이 목록을 검색합니까?

대학원생 방향은 실내 포지셔닝이다. 앞서 안드로이드 플랫폼을 이용하여 와이파이 목록을 검색하는 앱을 썼다.
당시 주요 문제는 startScan을 스캔한 후 와이파이 목록을 바로 업데이트할 수 없었고 몇 차례의 실험에서 2초 정도에 한 번 업데이트된 것을 발견했지만 당시에도 더 좋은 해결 방법을 찾지 못했다는 것이다.
현재(2019-08)에 직면한 주요 문제는 startScan을 스캔한 후 매번 획득한 와이파이 목록이 같고 startScan 함수가 안드로이드 9.0에서 폐기되었다는 것이다. 구글 측은 전기를 절약하기 위해 현재 프론트 데스크톱에서 2분에 4회 스캔을 허용하고 백엔드에서 기다리는 시간이 더 길다고 하는데 다른 방법이 없을까?여기는 Stackoverflow에서 언급한 이 문제에 대한 토론입니다.
이전 프로그램의 주요 코드는 다음과 같습니다.
private WifiManager mWifiManager;
private List mWifiList=new ArrayList<>();
private boolean isUpdate=false;

//   WifiManager
this.mWifiManager=(WifiManager)this.getApplicationContext().getSystemService(WIFI_SERVICE);


//        
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(receiver,intentFilter);


//             ,   startScan()      getScanResults()            
private BroadcastReceiver receiver= new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
       if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
          //    
          mWifiList = mWifiManager.getScanResults();
          isUpdate=false;
          // TODO
       }
    }
};

//         
Thread wifiThread = new Thread(){
      @Override
      public void run() {
          super.run();       
          while (!isUpdate) {
               mWifiManager.startScan();
               isUpdate=true;
               try {
                   sleep(2000);  //       
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
          }
      }
};
wifiThread.start();





좋은 웹페이지 즐겨찾기