gpt4 book ai didi

Android - 如何扫描接入点并选择最强信号?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:00 25 4
gpt4 key购买 nike

我目前正在尝试在 Android 中编写一个类,该类将扫描接入点,计算哪个接入点的信号最好,然后连接到该接入点。

因此,该应用程序将能够在移动中进行扫描并在移动中连接到新的接入点。

我可以扫描和计算最佳信号。

但是当谈到连接到最佳接入点时,我遇到了麻烦。

似乎 enableNetwork(netid, othersTrueFalse) 是连接到接入点的唯一方法,但这会导致问题,因为根据我的扫描结果,我无法获得信号最强的接入点的 ID。

这是我的代码:


public void doWifiScan(){

scanTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
sResults = wifiManager.scan(getBaseContext());
if(sResults!=null)
Log.d("TIMER", "sResults count" + sResults.size());
ScanResult scan = wifiManager.calculateBestAP(sResults);
wifiManager.addNewAccessPoint(scan);
}
});
}};

t.schedule(scanTask, 3000, 30000);
}

public ScanResult calculateBestAP(List<ScanResult> sResults){

ScanResult bestSignal = null;
for (ScanResult result : sResults) {
if (bestSignal == null
|| WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0)
bestSignal = result;
}

String message = String.format("%s networks found. %s is the strongest. %s is the bsid",
sResults.size(), bestSignal.SSID, bestSignal.BSSID);

Log.d("sResult", message);
return bestSignal;
}

public void addNewAccessPoint(ScanResult scanResult){

WifiConfiguration wc = new WifiConfiguration();
wc.SSID = '\"' + scanResult.SSID + '\"';
//wc.preSharedKey = "\"password\"";
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
int res = mainWifi.addNetwork(wc);
Log.d("WifiPreference", "add Network returned " + res );
boolean b = mainWifi.enableNetwork(res, false);
Log.d("WifiPreference", "enableNetwork returned " + b );

}

当我尝试使用 addNewAccessPoint(ScanResult scanResult) 时,它只是将另一个 AP 添加到设置应用程序的列表中,其名称与信号最好的那个相同,所以我最终得到了大量重复项,但实际上并没有附加到他们。

谁能指出我更好的解决方案的方向?

最佳答案

简单的改变

boolean b = mainWifi.enableNetwork(res, false);

boolean b = mainWifi.enableNetwork(res, true); 

关于Android - 如何扫描接入点并选择最强信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com