2

現在のwifiネットワーク(存在する場合)を切断し、既知のSSIDで特定のwifiネットワークに再接続するコードを作成しようとしています。

ここで使用されているコードに従っています。プログラムで Android の特定の Wi-Fi ネットワークに接続するにはどうすればよいですか?

これは機能しますが、接続には数秒から最大約 10 秒かかります。

具体的には、次のようにコードを使用します。

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration config;

新しいものを作成し、SSIDとKeyMgmtをNONEに設定してから追加するかどうかにかかわらず、構成を取得します。

wifiManager.add(config);

または、すでに存在する構成を取得することによって;

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
         config = i;
         break;
    }           
 }

それから私は電話します。

wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();

Wi-Fi の状態をチェックするブロードキャストを受信しました。正しい SSID に接続されたら続行できますが、このプロセスには最大 10 秒かかります。これにもっと速く接続するには、config または wifimanager を設定するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

このコードはあなたに役立つと思います..

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.network_test);
    context = this;
    mUpdate = new UpdateTimeTask();
    mHandler = new Handler();
    mHandler.post(mUpdate);
    }
public Boolean isNetAvailable(Context con) {
    try{
        connectivityManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
        wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if(wifiInfo.isConnected() || mobileInfo.isConnected()) {
            return true;
            }
        }catch(Exception e){
            e.printStackTrace();
            }
    return false;
    }
private class UpdateTimeTask implements Runnable{

    public void run() {
        boolean net = isNetAvailable(context);


        if(net != false) {
        Toast.makeText(getBaseContext(), "network Available", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(getBaseContext(), "network Not Available", Toast.LENGTH_SHORT).show();
        }
        mHandler.postDelayed(mUpdate, 30000);
    }
}

}

于 2012-04-05T13:40:47.777 に答える