车载WiFi学习

使用广播 监听WiFi连接状态

@Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        switch (action) {
            //RSSI信号强度变化
            case WifiManager.RSSI_CHANGED_ACTION:
                int rSSi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200);
                int strength = WifiManager.calculateSignalLevel(rssi, Constants.MAX_WIFI_SIGNAL_STRENGTH);

//将WiFi信号强度传到controller层中updataWiFisingleStrenge方法中
                mWifiSignalController.updatewifiSignalStrength(strength);
                break;
            default:
                break;
        }
    }

对ConnectivityManager和WifiManager进行创建和callback注册

 //Android的系统广播ConnectivityManager实现网络监听
        mConnectivityManager = context.getSystemService(ConnectivityManager.class);
        //要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理WIFI设备
        mWifiManager = context.getSystemService(WifiManager.class);
        mWifiSignalCallback = new WifiConnectionCallback(this);
        mWifiSignalListener = new WifiSignalListener(this);

注册广播

IntentFilter wifiSiganlFilter = new IntentFilter();
            wifiSiganlFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
            mContext.registerReceiver(mWifiSignalListener, wifiSiganlFilter);

            NetworkRequest wifiRequest = new NetworkRequest.Builder().addCapability(
                    设置感兴趣的网络:计费网络
                    NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
                    .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                    .build();
            mConnectivityManager.registerNetworkCallback(wifiRequest, mWifiSignalCallback);

判断WiFi是否连接

 WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
        int networkId = wifiInfo.getNetworkId();
//        int wifi = WifiInfo.getRssi();//获取wifi信号强度
        mConnected = networkId != -1;
        return networkId != -1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值