Android系统Wifi详解

本文深入探讨了Android系统中的Wi-Fi管理,包括如何使用WifiManager进行Wi-Fi连接,配置WifiConfiguration,以及如何启用和断开Wi-Fi连接。此外,还介绍了ConnectivityManager在监控网络连接状态和切换网络方面的功能,包括设置首选网络和监听网络状态变化的Broadcast Receiver机制。同时提到了开启AP(热点)功能需要借助反射技术来调用setWifiApEnabled方法。
摘要由CSDN通过智能技术生成

WIFI部分:

WifiManager代表Android中Wifi连接服务,用于配置管理WIFI连接,通过getSystemService获得,获得方式如下:

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

在这之前需要配置Wifi的权限:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

通过调用wifiManager的setWifiEnabled方法可以切换wifi状态,setWifiEnabled的参数为true时为打开wifi,为flase为关闭;当然,在这之前最好先调用getWifiState或者isWifiEnabled查看当前wifi的状态,getWifiState的返回值为WifiManager中的WIFI_STATE_ENABLED、WIFI_STATE_ENABLING、WIFI_STATE_DISENABLED、WIFI_STAT_DISENABLING、WIFI_STATE_UNKNOWN中的一个,这与监听WIFI_STATE_CHANGE_ACTION时从接收到的广播中取出的状态是一样的,当wifi状态改变时,就能接收来之系统附带当前wifi状态的广播。

	public int getWifiState(){
		return wifiManager.getWifiState();
	}

	public void openWifi(){
		if(!wifiManager.isWifiEnabled()){
			wifiManager.setWifiEnabled(true);
		}
	}

	public void closeWifi(){
		if(wifiManager.isWifiEnabled()){
			wifiManager.setWifiEnabled(false);
		}
	}

调用wifiManager的startScan方法开始扫描周围可连接的WIFI,然后调用getSancResults方法可以获得扫描到的可连接wifi。

	private List<ScanResult> getScanResult(){
		wifiManager.startScan();
		List<ScanResult> wifiList = wifiManager.getScanResults();
		return wifiList;
	}

ScanResult类中记录的是扫描到的热点的信息,包括:

SSID wifi的名字

BSSID 接入点的地址,也是wifi网卡的mac地址(手机wifi网卡下wifi通道和p2p通道mac地址不同)

capabilities wifi的加密方式

frequency wifi的频率

level wifi的信号强度

连接wifi需要调用wifimanager的enableNetwork方法,这个方法的第一个参数是需要连接wifi网络的n

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值