package com.num.utils;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import com.num.Values;
import com.num.listeners.ResponseListener;
public class NeighborWifiUtil {
private static Context context;
public static ResponseListener responseListener;
public static WifiManager mainWifi;
public static WifiReceiver receiverWifi;
public static List<ScanResult> wifiList;
public static NeighborResult neighborResult;
public boolean isRunning = true;
public void getNeighborWifi(Context ct, NeighborResult nr) {
context = ct;
neighborResult = nr;
isRunning = true;
mainWifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
receiverWifi = new WifiReceiver();
try{
context.registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
catch(Exception e){
context.unregisterReceiver(receiverWifi);
context.registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
mainWifi.startScan();
/*
while(isRunning){
try {
Thread.sleep(Values.SHORT_SLEEP_TIME);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//receiverWifi.abortBroadcast();*/
//context.unregisterReceiver(receiverWifi);
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
wifiList = mainWifi.getScanResults();
neighborResult.gotNeighbor(wifiList);
isRunning=false;
try{
context.unregisterReceiver(receiverWifi);
}
catch(Exception e){
e.printStackTrace();
}
//mainWifi.disconnect();
}
}
public static abstract class NeighborResult {
public abstract void gotNeighbor(List<ScanResult> wifiList);
}
}