2012-08-13 68 views
2

有没有一种方法可以检测我周围的所有Wifi设备,并从android设备获取信号强度。使用android检测我周围的wifi设备

对于实验性使用,我想在某些android设备上运行应用程序。应用程序应该记录每部手机和其他手机之间的信号强度。 我想“连接”直接在手机之间,而不使用外部路由器。 我相信这是可能的,因为android手机有能力作为Wifi路由器,所以它可能被其他设备检测到。但我不知道如何以编程方式处理这个问题。

任何人都可以帮忙吗? 你认为这是可能的吗?

回答

1

如果你想在附近扫描所有的无线网络,试试这个

创建wifiManager,广播接收器,并使用任何异步任务扫描所有的无线网络连接,扫描的结果将获得广播接收器

WifiManager wManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
// wifi Scan 
    new wifiScan().execute(); // call to async task 

    BroadcastReceiver br = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context c, Intent intent) { 
    wifiList = wManager.getScanResults(); 

    for (int i = 0; i < wifiList.size(); i++) { 
    ScanResult scanresult = wManager.getScanResults().get(i); 
    ssid = scanresult.SSID;//ssid is Name of wifi (String) 
    bid = scanresult.BSSID;// bssid: MAC of wifi (String) 
    level = scanresult.level;//level: strength of wifi(int) 
     } 

     }; 



// Async task 

public class wifiScan extends AsyncTask<Void, String, Void> { 
     int i = 0; 

    protected void onPreExecute() { 

    } 

    protected void onPostExecute(Void results) { 
     if (results != null) { if (i < 6) { new wifiScan().execute(); 
        } 
        } 


    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     registerReceiver(br, new IntentFilter(
       WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     wManager.startScan(); 
     return null; 
    } 
} 

通过WiFi,您可以在两台设备之间进行通信,无需路由器/接入点即可使用Wifi Direct (P2P)。 我觉得这个功能可以从Android 4.0访问,否则我不确定。