Mars Android视频学习笔记——01_23_WIFI网络操作

转载时请注明转自:http://blog.csdn.net/sam_zhang1984

交流可加新浪微博:Android开发人

 

Wifi 的一些官方说明,历史由来就不多说了,这些需要进百度一下大把资料看!

这一集主内容有:

一、          WIFI 网卡有哪些状态?

二、          操作 WIFI 需要获取的权限!

三、          改变 WIFI 的状态!

 

一、          WIFI 网卡有哪些状态?

WIFI 总共有以下五个状态,实际就是一些整形常量:

1.         WIFI_STATE_DISABLED WIFI 不能使用,其值是: 1

2.         WIFI_STATE_DISABLING WIFI 正在关闭中,由于 WIFI 关闭是需要这一个过程,这个状态就表示 WIFI 正在关闭的过程中,其值是: 0

3.         WIFI_STATE_ENABLED WIFI 可以使用,其值是: 3

4.         WIFI_STATE_ENABLING WIFI 正在开启中,其道理同 WIFI_STATE_DISABLING 其值是: 2

5.        WIFI_STATE_UNKNOWN :未知网卡状态,当手机或程序出现了一些错误引起 WIFI 不可用时会是这个状态,其值是: 4


二、          操作 WIFI 需要获取的权限

要获取操作 WIFI 的权限,就必须知道 WIFI 到底有哪些权限, WIFI 的主要操作权限有四个:

CHANGE_NETWORK_STATE :允许修改网络状态的权限。

CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。

ACCESS_NETWORK_STATE :允许访问网络状态的权限。

ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。

 

声明操作 WIFI 权限是在 AndroidManifest.xml 文件中进行声明!

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.sam.wifiTest"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  7.         <activity android:name=".firstWifi"  
  8.                   android:label="@string/app_name">  
  9.             <intent-filter>  
  10.                 <action android:name="android.intent.action.MAIN" />  
  11.                 <category android:name="android.intent.category.LAUNCHER" />  
  12.             </intent-filter>  
  13.         </activity>  
  14.     </application>  
  15.     <uses-sdk android:minSdkVersion="4" />  
  16.     <!--得到WIFI访问网络所需要的权限 -->  
  17.     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>  
  18.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  19.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  20.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  21. </manifest>   

注:所有与权限有关的定义都在 Manifest.permission 这个类里面,可以通过帮助文档进行相关查询。

-----------------------------分割线-----------------------------------

 

         一点半了,要睡一觉才行,下午还要上班,下了班准备去打一下篮球,都三四个月没打过球了,这次连面包牛奶都带好,下班吃饱就去打球,晚上接着写

    -----------------------------分割线-----------------------------------

三、          改变 WIFI 的状态

测试程序主要是有三个按钮,并为这三个按钮添加监听器,在监听器里面实现我们本节内容——改变 WIFI 的状态。

由于是第一篇笔记,这里写得详细一点,在这里说明按钮的添加和监听器添加,由于过于基础,可选择跳过这段不看。

按钮添加是在 main.xml 的布局文件中添加以下代码,其中 TextView 是系统自动生成的,可以去掉也可以留着用,下面的 Button 就是我们所添加的三个按钮,按钮的 ID 会自动在 R.java 中添加,按钮的标签即 Text 属于里可以直接写上自己喜欢的标签,也可以在资源文件 stings.xml 中添加,后者更为合理,更便于后续工作! stings.xml 如下所示,布局文件 main.xml 的其它会在其它笔记中专门详细讲到:

 

  1. <TextView    
  2.     android:id="@+id/textWifi"  
  3.     android:layout_width="fill_parent"   
  4.     android:layout_height="wrap_content"   
  5.     android:text="@string/hello"  
  6.     />  
  7.  <Button  
  8.     android:id="@+id/btnBegin"  
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="@string/btnBeginCaption"  
  12.  />  
  13.  <Button  
  14.     android:id="@+id/btnStop"  
  15.     android:layout_width="fill_parent"   
  16.     android:layout_height="wrap_content"   
  17.     android:text="@string/btnStopCaption"  
  18.  />  
  19.  <Button  
  20.     android:id="@+id/btnTest"  
  21.     android:layout_width="fill_parent"   
  22.     android:layout_height="wrap_content"   
  23.     android:text="@string/btnTestCaption"  
  24.  />  
  

  1. <string name="btnBeginCaption">打开WIFI</string>  
  2.     <string name="btnStopCaption">关闭WIFI</string>  
  3.     <string name="btnTestCaption">检测WIFI状态</string>  

监听器的添加:

新增一个内部类,实现点击监听器接口 OnClickListener ,然后覆写其 public void onClick(View v) 方法即可,最后把按钮跟这个新增的监听器类绑定,即可捕捉按钮的点击事件。

  1. //为按钮绑定监听器   
  2. btnBegin.setOnClickListener( new btnBenginListener());  
  3. class btnBenginListener implements OnClickListener{  
  4.         public void onClick(View v) {  
  5.             // TODO Auto-generated method stub   
  6.             texWifi.setText("点了开始按钮");  
  7.             m_wifiManager=(WifiManager)firstWifi.this.getSystemService(Context.WIFI_SERVICE);  
  8.             m_wifiManager.setWifiEnabled(true);  
  9.             //显示状态   
  10.             displayWifiState(m_wifiManager.getWifiState()) ;  
  11.         }  
  12.     }  

WIFI 状态进行操作主要涉及到三个方面:

1.      得到 WifiManager 对象,这个对象是我们操作 WIFI 网卡的根本,无论是改变 WIFI 的状态,还是获取 WIFI 的状态,都要通过这个对象。

2.      改变 WIFI 网卡状态,涉及到一个 WifiManager 的方法 SetWifiEnabled ,通过这个方法的参数设置,可以实现打开或关闭 WIFI true 表示打开, false 表示关闭。

3.      获取 WIFI 网卡的状态,涉及到一个 WifiManager 的方法 getWifiState 通过这个方法,就可以取得 WIFI 的当前状态,即第一点中所讲的 WIFI 五个状态中的一个。

 

注:

1、 有些地方使用

m_wifiManager =(WifiManager)Context.getSystemService(Service. WIFI_SERVICE ) ; 来取得 WifiManager 对象,但从上面代码中我们可以看到,我们使用的是:

m_wifiManager =(WifiManager)firstWifi.this .getSystemService(Context. WIFI_SERVICE );

即通过我们自己的 Activity 来获取。这是因为 Activity Context 的一个子类,所以可以这样。里面之所以用到 firstWifi. this 关键字,而不是直接使用 this 关键字,是因为我们是在一个监听器里面实现,这个监听器是一个内部类,如果只用 this 则是指这个监听器本身,而我们要用到的是我们自己定义的 Activity ,故有此做法。

 

2、 至于 Service.WIFI_SERVICE ,由于 Service 也是 Context 的一个子类, Service WIFI_SERVICE 实际是从 Context 那里继承下来的,所以写成 Context.WIFI_SERVICE 也是没有问题的。

四、          实践程序界面

       

五、          总结

 

1.        要对 WIFI 进行操作,首先要获取 WIFI 操作权限, WIFI 操作权限主要有四个: CHANGE_NETWORK_STATE CHANGE_WIFI_STATE ACCESS_NETWORK_STATE ACCESS_WIFI_STATE

2.        然后得到 WifiManager 对象,就可以通过 WifiManager 对象进行 WIFI 网卡操作和网卡状态获取了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值