移动设备离不开网络,android平台中在包android.net.wifi下提供了一些类专门用于管理设备的Wifi功能。该包下主要存在如下几个类:
1、 ScanResult:主要用来描述通过Wifi硬件扫描获取的周边的wifi热点的信息。包含的字段信息和方法如下图:
2、 WifiConfiguration:此类用于描述Wifi网络的配置信息,包括安全配置信息。在该类中提供了如下几个之类,主要用于说明Wifi的加密方式。
3、 WifiInfo:用于描述已经链接的Wifi的信息,通过如下方法,可以获取相关的信息
getBSSID():获取BSSID,以XX:XX:XX:XX:XX:XX的形式
getDetailedStateOf(SupplicantState suppState):获取网络链接的状态。
getHiddenSSID():SSID是否被隐藏。
getIpAddress():获取IP地址
getLinkSpeed():获取链接的速度
getNetworkId():获取网络编号
getRssi():获取强度。
getSSID():获取SSID信息
getSupplicantState():获取客户端状态信息
4、 WifiManager:该类主要用来管理Wifi,里面含有许多方法,如下图,具体使用可以查看下面的案例。
下面我们通过一个案例来演示WifiManager的具体使用方法,案例界面效果如下图:
Activity代码如下
//获取WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); /** * 扫描网络 * @param v */ public void netScan(View v){ //启动扫描 wifiManager.startScan(); //获取扫描结果 List<ScanResult> mData= wifiManager.getScanResults(); ScanReslutAdapter adapter = new ScanReslutAdapter(mData); listView.setAdapter(adapter); } /** * 打开网络 * @param v */ public void openNet(View v){ if(!wifiManager.isWifiEnabled()){ wifiManager.setWifiEnabled(true); } } /** * 关闭网络 * @param v */ public void closeNet(View v){ if(wifiManager.isWifiEnabled()){ wifiManager.setWifiEnabled(false); } } /** * 获取网络状态 * @param v */ public void getNetState(View v){ int state= wifiManager.getWifiState(); String stateStr = ""; switch (state){ case WifiManager.WIFI_STATE_DISABLED: stateStr="DISABLED"; break; case WifiManager.WIFI_STATE_DISABLING: stateStr="DISABLING"; break; case WifiManager.WIFI_STATE_ENABLED: stateStr="ENABLED"; break; case WifiManager.WIFI_STATE_ENABLING: stateStr="ENABLING"; break; } netState.setText("网络状态:"+stateStr); } /** * 监控Wifi信号的强度 * @param v */ public void monitorSignal(View v){ //获取当前Wifi的链接信息 WifiInfo wifiInfo= wifiManager.getConnectionInfo(); //获取信号强度 int level = wifiInfo.getRssi(); //获得信号强度值 level = wifiInfo.getRssi(); //根据获得的信号强度发送信息 String levelStr="无信号"; if (level <= 0 && level >= -50) { levelStr="信号最好"; } else if (level < -50 && level >= -70) { levelStr="信号较好"; } else if (level < -70 && level >= -80) { levelStr="信号一般"; } else if (level < -80 && level >= -100) { levelStr="信号差"; } netInfo.setText("信号强度:"+levelStr); }
注意,访问Wifi需要用到如下权限:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
时间: 2024-10-06 15:49:49