Android WiFi Management Sample

1 篇文章 0 订阅

Method onCreate(Bundle savedInstanceState) is called when the activity(WiFiManageActivity.java) is starting.

These intent broadcasts (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION and WifiManager.RSSI_CHANGED_ACTION) will to be received by BroadcastReceiver (WiFiBroadcastReceiver.java).

Make text about the best signal one connection when received intent action WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.

Make text about all active connections when received intent action WifiManager.RSSI_CHANGED_ACTION.

Activity Class:

package com.paad.wifi;

import android.app.Activity;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.WifiManager;
import android.os.Bundle;

public class WiFiManageActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        setWifiEnabled(wifi);

        // Register a broadcast receiver that listens for actions.
        registerReceiver(new WiFiBroadcastReceiver(this, wifi), new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        registerReceiver(new WiFiBroadcastReceiver(this, wifi), new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));

        wifi.startScan();
    }

    private void setWifiEnabled(WifiManager wifi) {
        if (!wifi.isWifiEnabled() && wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING) {
            wifi.setWifiEnabled(true);
        }
    }
}

BroadcastReceiver Class:

package com.paad.wifi;

import java.util.List;

import com.paad.util.NetworkUtil;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.widget.Toast;

public class WiFiBroadcastReceiver extends BroadcastReceiver {
    private Context context = null;
    private WifiManager wifi = null;

    public WiFiBroadcastReceiver(Context context, WifiManager wifi) {
        this.context = context;
        this.wifi = wifi;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (WifiManager.RSSI_CHANGED_ACTION.equals(intent.getAction())) {
            findActiveConnection();
        }

        if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(intent.getAction())) {
            findBestSignalConnection();
        }
    }

    private void findBestSignalConnection() {
        List<ScanResult> results = wifi.getScanResults();
        ScanResult bestSignal = null;

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

        String connSummary = String.format("%s networks found. %s is " + "the strongest.", results.size(), bestSignal.SSID);
        Toast.makeText(context, connSummary, Toast.LENGTH_LONG).show();
        Log.d(NetworkUtil.TAG, connSummary);
    }

    private void findActiveConnection() {
        WifiInfo info = wifi.getConnectionInfo();

        if (info.getBSSID() != null) {
            String ssid = info.getSSID();
            String units = WifiInfo.LINK_SPEED_UNITS;
            int speed = info.getLinkSpeed();
            int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
            String ipAddress = NetworkUtil.intToIp(info.getIpAddress());

            String connSummary = String.format("Connected to %s at %s%s. " + "Strength %s/5. " + "IP %s", ssid, speed, units, strength, ipAddress);
            Toast.makeText(context, connSummary, Toast.LENGTH_LONG).show();
            Log.d(NetworkUtil.TAG, connSummary);
        }
    }
}

Util Class:

package com.paad.util;

public class NetworkUtil {
    public final static String TAG = "WiFi";

    public static String intToIp(int i) {
        return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF);
    }
}

Full Codes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值