Android--WifiManager

 移动设备离不开网络,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

Android--WifiManager的相关文章

android开发步步为营之48:通过WifiManager自动连上某个wifi热点

最近参加了个某个创业公司的面试,他们做了个应用,就是用户打开他们的应用就可以提供免费上网的功能,然后面试的过程中,那哥们说,你对wifi这些协议你懂吗?需要用到比较底层的东西哦,我勒个去,就这么一个上网功能就需要很底层吗?搞得很高深的样子,真是底层是涉及到修改android的框架了,修改手机ROM了,你们做到这一步了吗?没有吧,只是在android框架提供api基础上实现的,为此,我今天特意实验了一把.也就10几分钟就搞定的事情,我被你们懵到了,额... 开发过程中主要用到WifiManager

Android之WifiManager

移动设备离不开网络,android平台中在包android.net.wifi下提供了一些类专门用于管理设备的Wifi功能.该包下主要存在如下几个类: 1.  ScanResult:主要用来描述通过Wifi硬件扫描获取的周边的wifi热点的信息.包含的字段信息和方法如下图: 2.  WifiConfiguration:此类用于描述Wifi网络的配置信息,包括安全配置信息.在该类中提供了如下几个之类,主要用于说明Wifi的加密方式. 3.  WifiInfo:用于描述已经链接的Wifi的信息,通过如

Android附近基站+Wifi+IP+GPS多渠道定位方案

前言: 在移动客户端的开发中,地理位置定位是一个非常重要的环节,有些时候用户可能会限制web app或者Android app的一些权限,或者由于信号不佳的原因无法获得准确的GPS位置,甚至为了省电,用户可能对开启GPS开关可能会有抵触情绪.但是不能因为GPS的种种限制就放弃了对用户位置的追踪.要通过一切能发送出信号的物体尽可能准确的获取到用户的位置,有时可以牺牲一些精度,对于大数据和用户地区分布分析来说,有一个大体的位置已经够分析人员使用,而且绕开GPS的重重壁垒,为数据的完整性提供可靠方案

20150919_获取Android唯一标识码

背景 前段时间给一家电力公司做了一个管理系统,用来调查公司客户的购买电力公司培训课程的意愿,并且提供下单订购的功能. 因为电力公司要求在Android平板电脑上运行,所以是针对7英寸的Android平板电脑的开发:苦于没有合适的设备调试,所以我一直在自己的Android手机上进行测试,一直到项目提交之前的那一天晚上... 客户反馈说提交订单后系统停止运行,导入数据到PC服务端后服务端也崩溃了! 刚开始怀疑是因为他们的设备太差的缘故——我在配置相当low的Android原生虚拟机(有多low大家应

Android一组WebView的随机,顺序,倒序加载

写了个应用,实现了一组WebView的顺序,倒序,和随机加载.之中使用了延时,为什么要使用呢?请看下图: package com.zms.csdngo; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; i

第一个Android TV Launcher开源项目

Android TV Launcher开源项目 这个项目是机顶盒桌面,用来播放视频.显示图片.应用管理和其他针对机顶盒产品的设置.目前git和CSDN code上面都没有类似的开源项目,正好本人最近在开发类似产品,网上类似研究还非常少,完全自己实现还是比较困难.所以就把目前的项目开源出来,也有利于其他人少走弯路. git项目地址 CSDN code项目地址 项目框架结构 UI.adapter.实体类.图片cache.网络层. 这个层级关系还是和大部分项目是类似的. 功能模块的详细实现方式 这个部

【Android 工具类】经常使用工具类(方法)大全

收集经常使用的工具类或者方法: 1.获取手机分辨率 /** * 获取手机分辨率 */ public static String getDisplayMetrix(Context context) { if (Constant.Screen.SCREEN_WIDTH == 0 || Constant.Screen.SCREEN_HEIGHT == 0) { if (context != null) { int width = 0; int height = 0; SharedPreferences

Android WiFi开发教程(一)——WiFi热点的创建与关闭

相对于BlueTooth,WiFi是当今使用最广的一种无线网络传输技术, 几乎所有智能手机.平板电脑和笔记本电脑都支持Wi-Fi上网.因此,掌握基本的WiFI开发技术是非常必要的.本教程将围绕一个小Demo初步与大家一同探讨WiFi开发. 先上效果图   Demo功能比较简单,四个按钮.两个文本和一个列表.功能主要有创建WiFi热点,关闭WiFi热点,搜索WiFi,连接WiFi,数据通讯.源码会在教程结尾提供. 本章节主要介绍WiFi热点的创建和关闭 需要用到的权限 <uses-permissi

Android笔记之网络状态

先上一个工具类的代码: package com.yonyou.util; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * 判断当前网络状态 * @author xxx * */ public class NetWorkUtil { static NetWorkUtil netWorkUtil; private NetWorkU

Android代码片段

1.拨打电话 1 2 3 public static void call(Context context, String phoneNumber) { context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber))); } 2.跳转至拨号界面 1 2 3 public static void callDial(Context context, String phoneNumber