0
내 응용 프로그램에 WiFiManger를 사용하는 것에 관한 질문이 있습니다. 것을, 나는 "신선한"와이파이 목록을 기다리고 싶지 :이 조건을 추가 할 수있는 방법startScan이 검사를 마칠 때까지 기다리십시오.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mapName = intent.getExtras().getString("mapName");
sendNotification();
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// Check for wifi is disabled
if (!mainWifi.isWifiEnabled()) {
// If wifi disabled then enable it
Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled",
Toast.LENGTH_LONG).show();
mainWifi.setWifiEnabled(true);
}
mainWifi.startScan();
List<ScanResult> scanResults=mainWifi.getScanResults();
readAps=getAps(scanResults);
//List of AP received in current position
String result=compareRP();
if(!result.isEmpty())
Toast.makeText(this, "Localized in RP: "+result, Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "Unable to localize you in this map", Toast.LENGTH_LONG).show();
return START_NOT_STICKY;
}
private ArrayList<AccessPoint> getAps(List<ScanResult> scanResults) {
ArrayList<AccessPoint> temp = new ArrayList<AccessPoint>();
for(ScanResult s:scanResults){
temp.add(new AccessPoint(s.SSID,s.level,s.frequency));
}
return temp;
}
: 이 코드는, 나는 가능한 무선 랜을 얻을 수있는 네트워크를 검색하여이 서비스를 매우 간단 만든됩니다 다음 경우에 발생합니다.
mainwifi.startScan();
메서드가 반환됩니다.
이제 내 서비스는 여전히 알고리즘과 일치하는 클러스터로 진행되며 원하지 않습니다. 내가 뭘해야 해?
도움 주셔서 감사합니다.
프레드
방송에 등록하면 Wi-Fi 목록이 나타납니다. 기다릴 수 없어. –
BroadcastReceiver로 해결하려고했지만 작동하지 않습니다 ... 클러스터 일치를 위해 전체 목록이 필요하므로 비교를 위해 mainWifi.startScan() 메서드가 돌아올 때까지 기다려야합니다. "참된". (여기서 BroadcastReceiver를 사용한 코드 예제 : http://pastebin.com/RxV2XFEi) – Stiva
SCAN_RESULTS_AVAILABLE_ACTION을 수신 대기하는 브로드 캐스트를 구현해야합니다. 스캔이 준비되면 안드로이드에 의해 트리거됩니다. startScan은 검색을 시작하고 검색을 시작했는지 여부를 알려주는 true/false를 반환하는 데 사용됩니다. 스캔이 완료 될 때까지 기다릴 수 없습니다. 애플리케이션 로직을 onReceive of the Broadcast로 옮겨야합니다. –