Android 安卓-如何扫描接入点并选择最强信号?
我目前正在尝试用Android编写一个类,该类将扫描接入点,计算哪个接入点具有最佳信号,然后连接到该接入点 因此,该应用程序将能够在移动中进行扫描,并在移动中连接到新的接入点 我有扫描和计算的最佳信号工作 但在连接到最佳接入点时,我遇到了麻烦 似乎enableNetwork(netid,OtherStrueValse)是连接到接入点的唯一方法,但这会导致问题,因为从扫描结果来看,我无法获得信号最强的接入点id 这是我的代码:Android 安卓-如何扫描接入点并选择最强信号?,android,signals,wifi,wifimanager,network-scan,Android,Signals,Wifi,Wifimanager,Network Scan,我目前正在尝试用Android编写一个类,该类将扫描接入点,计算哪个接入点具有最佳信号,然后连接到该接入点 因此,该应用程序将能够在移动中进行扫描,并在移动中连接到新的接入点 我有扫描和计算的最佳信号工作 但在连接到最佳接入点时,我遇到了麻烦 似乎enableNetwork(netid,OtherStrueValse)是连接到接入点的唯一方法,但这会导致问题,因为从扫描结果来看,我无法获得信号最强的接入点id 这是我的代码: 当我尝试使用addNewAccessPoint(ScanResu
当我尝试使用addNewAccessPoint(ScanResult ScanResult)时,它只是将另一个AP添加到设置应用程序的列表中,并使用与具有最佳信号的AP相同的名称,因此我最终会加载重复的AP,而不是实际附加到它们 有人能给我指出更好的解决方案吗?只要改变就行了
boolean b = mainWifi.enableNetwork(res, false);
到
更直截了当地回答你的问题。首先,确定具有最佳信号强度的扫描结果。一旦你有,你也应该得到wifi配置列表已经在设备上,并确保扫描结果与最强的信号尚未配置的设备。如果是,只需启用它,如果不是,按原样创建一个新的。这将帮助您避免重复配置
private int findExistingNetworkConfig(String ssid) {
if (ssid != null && !ssid.isEmpty()) {
WifiManager wifiManager = (WifiManager) mContextRef.get()
.getSystemService(Context.WIFI_SERVICE);
for (WifiConfiguration wifiConfig : wifiManager
.getConfiguredNetworks()) {
if (ssid.equals(wifiConfig.SSID)) {
return wifiConfig.networkId;
}
}
}
// Didn't find a matching network ssid
return -1;
}
是的,启用网络时请确保使用“true”参数。这将有助于确保您连接到所需的网络
wifiManager.enableNetwork(mNetID, true);
boolean b = mainWifi.enableNetwork(res, false);
boolean b = mainWifi.enableNetwork(res, true);
private int findExistingNetworkConfig(String ssid) {
if (ssid != null && !ssid.isEmpty()) {
WifiManager wifiManager = (WifiManager) mContextRef.get()
.getSystemService(Context.WIFI_SERVICE);
for (WifiConfiguration wifiConfig : wifiManager
.getConfiguredNetworks()) {
if (ssid.equals(wifiConfig.SSID)) {
return wifiConfig.networkId;
}
}
}
// Didn't find a matching network ssid
return -1;
}
wifiManager.enableNetwork(mNetID, true);