有没有办法可以检测到我周围的所有 Wifi 设备并从 android 设备获取信号强度。
对于实验用途,我想在一些 android 设备上运行一个应用程序。该应用程序应记录每部手机与其他手机之间的信号强度。我希望“连接”直接在手机之间,而不使用外部路由器。我相信这是可能的,因为 android 手机具有充当 Wifi 路由器的功能,因此它可能会被其他设备检测到。但我不知道如何以编程方式解决这个问题。
任何人都可以帮忙吗?你认为这可能吗?
有没有办法可以检测到我周围的所有 Wifi 设备并从 android 设备获取信号强度。
对于实验用途,我想在一些 android 设备上运行一个应用程序。该应用程序应记录每部手机与其他手机之间的信号强度。我希望“连接”直接在手机之间,而不使用外部路由器。我相信这是可能的,因为 android 手机具有充当 Wifi 路由器的功能,因此它可能会被其他设备检测到。但我不知道如何以编程方式解决这个问题。
任何人都可以帮忙吗?你认为这可能吗?
如果你想扫描附近的所有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 在两个设备之间进行通信,而无需使用Wifi Direct (P2P)的路由器/接入点。我认为此功能可以从 Android 4.0 访问。否则,我不确定。