使用安卓设备检测周围的wifi设备

3
有没有办法在Android设备上检测到我周围的所有Wifi设备并获取信号强度?
为了实验使用,我想在一些Android设备上运行一个应用程序。该应用程序应记录每个手机与其他手机之间的信号强度。 我希望“连接”直接在手机之间进行,而不是使用外部路由器。 我相信这是可能的,因为Android手机具有作为Wifi路由器的功能,因此它可以被其他设备检测到。但是我不知道如何以编程方式解决这个问题。
有人能帮忙吗? 你认为这是可能的吗?
1个回答

1
如果您想扫描附近的所有WiFi,请尝试以下操作:
创建一个wifiManager、BroadcastReceiver,并使用任何异步任务扫描所有WiFi,扫描结果将在广播接收器中获取。
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 Direct (P2P)在没有路由器/接入点的情况下在两个设备之间进行WiFi通信。我认为这个功能可以从Android 4.0开始访问,否则我不确定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接