WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。

在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。主要包括以下几个类和接口:

1.ScanResult

主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。

2.WifiConfiguration

Wifi网络的配置,包括安全设置等。

3.WifiInfo

wifi无线连接的描述,包括接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息。这里简单介绍一下这里的方法:

getBSSID() 获取BSSID

getDetailedStateOf() 获取客户端的连通性

getHiddenSSID() 获得SSID 是否被隐藏

getIpAddress() 获取IP 地址

getLinkSpeed() 获得连接的速度

getMacAddress() 获得Mac 地址

getRssi() 获得802.11n 网络的信号

getSSID() 获得SSID

getSupplicanState() 返回具体客户端状态的信息

4.WifiManager

这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。

获取WIFI网卡的状态
  WIFI网卡的状态是由一系列的整形常量来表示的。
  1.WIFI_STATE_DISABLED : WIFI网卡不可用(1)
  2.WIFI_STATE_DISABLING : WIFI网卡正在关闭(0)
  3.WIFI_STATE_ENABLED : WIFI网卡可用(3)
  4.WIFI_STATE_ENABLING : WIFI网正在打开(2) (WIFI启动需要一段时间)

  5.WIFI_STATE_UNKNOWN : 未知网卡状态

下面先写一个wifi的实例:

WifiActivity.java

public class WifiActivity extends Activity {/** Called when the activity is first created. */private TextView allNetWork;private Button scan;private Button start;private Button stop;private Button check;private WifiAdmin mWifiAdmin;// 扫描结果列表private List<ScanResult> list;private ScanResult mScanResult;private StringBuffer sb=new StringBuffer();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mWifiAdmin = new WifiAdmin(WifiActivity.this);init();}public void init(){allNetWork = (TextView) findViewById(R.id.allNetWork);scan = (Button) findViewById(R.id.scan);start = (Button) findViewById(R.id.start);stop = (Button) findViewById(R.id.stop);check = (Button) findViewById(R.id.check);scan.setOnClickListener(new MyListener());start.setOnClickListener(new MyListener());stop.setOnClickListener(new MyListener());check.setOnClickListener(new MyListener());}private class MyListener implements OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.scan://扫描网络getAllNetWorkList();break;case R.id.start://打开WifimWifiAdmin.openWifi();Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;case R.id.stop://关闭WifimWifiAdmin.closeWifi();Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;case R.id.check://Wifi状态Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;default:break;}}}public void getAllNetWorkList(){// 每次点击扫描之前清空上一次的扫描结果if(sb!=null){sb=new StringBuffer();}//开始扫描网络mWifiAdmin.startScan();list=mWifiAdmin.getWifiList();if(list!=null){for(int i=0;i<list.size();i++){//得到扫描结果mScanResult=list.get(i);sb=sb.append(mScanResult.BSSID+"  ").append(mScanResult.SSID+"   ").append(mScanResult.capabilities+"   ").append(mScanResult.frequency+"   ").append(mScanResult.level+"\n\n");}allNetWork.setText("扫描到的wifi网络:\n"+sb.toString());}}}

WifiAdmin.java

public class WifiAdmin {//定义一个WifiManager对象private WifiManager mWifiManager;//定义一个WifiInfo对象private WifiInfo mWifiInfo;//扫描出的网络连接列表,实现Parcelable接口,//ScanResult里面放的全是wifi信息private List<ScanResult> mWifiList;//网络连接列表private List<WifiConfiguration> mWifiConfigurations;WifiLock mWifiLock;//构造函数public WifiAdmin(Context context){//取得WifiManager对象mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//取得WifiInfo对象mWifiInfo = mWifiManager.getConnectionInfo();}//打开wifipublic void openWifi(){if(!mWifiManager.isWifiEnabled()){mWifiManager.setWifiEnabled(true);}}//关闭wifipublic void closeWifi(){if(mWifiManager.isWifiEnabled()){mWifiManager.setWifiEnabled(false);}}// 检查当前wifi状态public int checkState() {return mWifiManager.getWifiState();}//锁定wifiLockpublic void acquireWifiLock(){mWifiLock.acquire();}//解锁wifiLockpublic void releaseWifiLock(){//判断是否锁定if(mWifiLock.isHeld()){mWifiLock.acquire();}}//创建一个wifiLockpublic void createWifiLock(){mWifiLock = mWifiManager.createWifiLock("test");}//得到配置好的网络public List<WifiConfiguration> getConfiguration(){return mWifiConfigurations;}//指定配置好的网络进行连接public void connetionConfiguration(int index){if(index > mWifiConfigurations.size()){return ;}//连接配置好指定ID的网络mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);}public void startScan(){mWifiManager.startScan();//得到扫描结果mWifiList = mWifiManager.getScanResults();//得到配置好的网络连接mWifiConfigurations = mWifiManager.getConfiguredNetworks();}//得到网络列表public List<ScanResult> getWifiList(){return mWifiList;}//查看扫描结果public StringBuffer lookUpScan(){StringBuffer sb = new StringBuffer();for(int i=0; i<mWifiList.size(); i++){sb.append("Index_" + new Integer(i + 1).toString() + ":");// 将ScanResult信息转换成一个字符串包// 其中把包括:BSSID、SSID、capabilities、frequency、levelsb.append((mWifiList.get(i)).toString()).append("\n");}return sb;}public String getMacAddress(){return (mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();}public String getBSSID(){return (mWifiInfo==null)?"NULL":mWifiInfo.getBSSID();}public int getIpAddress(){return (mWifiInfo==null)?0:mWifiInfo.getIpAddress();}//得到连接的IDpublic int getNetWordId(){return (mWifiInfo==null)?0:mWifiInfo.getNetworkId();}//得到wifiInfo的所有信息public String getWifiInfo(){return (mWifiInfo==null)?"NULL":mWifiInfo.toString();}//添加一个网络并连接public void addNetWork(WifiConfiguration configuration){int wcgId=mWifiManager.addNetwork(configuration);mWifiManager.enableNetwork(wcgId, true);}//断开指定ID的网络public void disConnectionWifi(int netId){mWifiManager.disableNetwork(netId);mWifiManager.disconnect();}}

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


" width="434" height="352">

更多相关文章

  1. Android(安卓)网络连通状态监测
  2. android客户端使用网络数据压缩
  3. Android(安卓)Snake
  4. android 控件颜色随焦点变化实例
  5. Android中常常使用shape来定义控件的一些显示属性,今天看了一些sh
  6. Android中的通知—Notification .
  7. Android(安卓)CheckBox
  8. android-async-http开源请求库
  9. Android:蓝牙耳机断开连接,音频播放器暂停播放

随机推荐

  1. php回溯算法计算组合总和的实例代码
  2. PHP中信息格式化操作详解(MessageFormatte
  3. 如何画出好的原画?原画角色设计教学!
  4. PHP 基于 SW-X 框架,搭建RPC微服务支持
  5. PHP将amr音频文件转换为mp3格式的操作细
  6. 怎么画漫画人物的嘴巴?漫画人物嘴巴新手教
  7. php将ppt转jpg图片的具体步骤代码
  8. Vue自定义指令详细
  9. 怎么画漫画人物的嘴巴?漫画人物嘴巴新手教
  10. android版本更新功能