织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>嵌入式开发>Android>

Android开发之WIFI网络操作

jackyhwei 发布于 2011-12-19 21:48 点击:次 
WIFI是无线通信协议,可以允许手机直接连接到无线网络。在现在3G资费还比较贵的情况下,WIFI对于手机来说是很重要的,我们可以很方便的下载软件,音乐等资源。Android手机必须要有WIFI网卡才能支持WIFI。Android应用程序有时候需要对WIFI网卡进行操作,从而操作 WIFI网
TAG:

WIFI是无线通信协议,可以允许手机直接连接到无线网络。在现在3G资费还比较贵的情况下,WIFI对于手机来说是很重要的,我们可以很方便的下 载软件,音乐等资源。Android手机必须要有WIFI网卡才能支持WIFI。Android应用程序有时候需要对WIFI网卡进行操作,从而操作 WIFI网络。
WIFI网卡有一些状态,由一系列的整形常量来表示。

常量名 常量值 网卡状态
WIFI_STATE_DISABLED          1             WIFI网卡不可用
WIFI_STATE_DISABLING                0 WIFI正在关闭
WIFI_STATE_ENABLED 3 WIFI网卡可用
WIFI_STATE_ENABLING 2 WIFI网卡正在打开
WIFI_STATE_UNKNOWN 4 未知网卡状态

在应用程序中操作WIFI网卡一定的权限。
      WIFI 的主要操作权限有四个:
              CHANGE_NETWORK_STATE :允许修改网络状态的权限。
              CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。
              ACCESS_NETWORK_STATE :允许访问网络状态的权限。
              ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。

在AndroidManifest.xml文件中添加权限。 

    <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> 
改变WIFI网卡的状态
      对WIFI网卡进行操作需要通过WifiManager对象来进行,获取该对象的方法如下:
      WifiManager wifiManger=(WifiManger)Context.getSystemService(Service.WIFI-SERVICE);
      打开WIFI网卡
      wifiManager.setWifiEnabled(true);
      关闭WIFI网卡
      wifiManager.setWifiEnabled(false); 
      获取网卡当前的状态
      wifiManager.getWifiState();

示例:新建一个一个Android应用程序,在main.xml中添加三个按钮,点击这三个按钮分别可以打开WIFI网卡,关闭WIFI网卡,检查网卡  的当前状态。需要说明的是由于Android模拟器不支持WIFI和蓝牙所以程序执行时返回的网卡状态都是WIFI_STATE_UNKNOWN:网卡未知的状态。此程序需要在真机上进行调试才会显示正确的运行结果。这里主要是为了说明程序如何编写。

源代码:

main.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <TextView   
  8.     android:layout_width="fill_parent"  
  9.     android:layout_height="wrap_content"  
  10.     android:text="@string/hello" 
  11.     /> 
  12. <Button 
  13.     android:id="@+id/startButton" 
  14.     android:layout_width="300dp" 
  15.     android:layout_height="wrap_content" 
  16.     android:text="打开WIFI网卡" 
  17.     /> 
  18. <Button 
  19.     android:id="@+id/stopButton" 
  20.     android:layout_width="300dp" 
  21.     android:layout_height="wrap_content" 
  22.     android:text="关闭WIFI网卡" 
  23.     /> 
  24. <Button 
  25.     android:id="@+id/checkButton" 
  26.     android:layout_width="300dp" 
  27.     android:layout_height="wrap_content" 
  28.     android:text="检查WIFI网卡状态" 
  29.     /> 
  30. </LinearLayout> 

Android_Wifi.java

  1. package idea.org; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Context; 
  5. import android.net.wifi.WifiManager; 
  6. import android.os.Bundle; 
  7. import android.view.View; 
  8. import android.view.View.OnClickListener; 
  9. import android.widget.Button; 
  10. import android.widget.Toast; 
  11.  
  12. public class Android_Wifi extends Activity { 
  13.     private Button startButton=null
  14.     private Button stopButton=null
  15.     private Button checkButton=null
  16.     WifiManager wifiManager=null
  17.     /** Called when the activity is first created. */ 
  18.     @Override 
  19.     public void onCreate(Bundle savedInstanceState) { 
  20.         super.onCreate(savedInstanceState); 
  21.         setContentView(R.layout.main); 
  22.         startButton=(Button)findViewById(R.id.startButton); 
  23.         stopButton=(Button)findViewById(R.id.stopButton); 
  24.         checkButton=(Button)findViewById(R.id.checkButton); 
  25.         startButton.setOnClickListener(new startButtonListener()); 
  26.         stopButton.setOnClickListener(new stopButtonListener()); 
  27.         checkButton.setOnClickListener(new checkButtonListener()); 
  28.     } 
  29.     class startButtonListener implements OnClickListener 
  30.     { 
  31.  
  32.         /* (non-Javadoc) 
  33.          * @see android.view.View.OnClickListener#onClick(android.view.View) 
  34.          */ 
  35.         @Override 
  36.         public void onClick(View v) { 
  37. // TODO Auto-generated method stub 
  38. wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE); 
  39. wifiManager.setWifiEnabled(true); 
  40. System.out.println("wifi state --->"+wifiManager.getWifiState()); 
  41. Toast.makeText(Android_Wifi.this"当前网卡状态为:"
  42. +wifiManager.getWifiState(), Toast.LENGTH_SHORT).show(); 
  43.         } 
  44.          
  45.     } 
  46.     class stopButtonListener implements OnClickListener 
  47.     { 
  48.  
  49.         /* (non-Javadoc) 
  50.          * @see android.view.View.OnClickListener#onClick(android.view.View) 
  51.          */ 
  52.         @Override 
  53.         public void onClick(View v) {
  54. // TODO Auto-generated method stub
  55. wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);
  56. wifiManager.setWifiEnabled(false);
  57. System.out.println("wifi state --->"+wifiManager.getWifiState());
  58. Toast.makeText(Android_Wifi.this"当前网卡状态为:"+wifiManager.getWifiState()
  59. , Toast.LENGTH_SHORT).show(); 
  60.         } 
  61.          
  62.     } 
  63.     class checkButtonListener implements OnClickListener 
  64.     { 
  65.  
  66.         /* (non-Javadoc) 
  67.          * @see android.view.View.OnClickListener#onClick(android.view.View) 
  68.          */ 
  69.         @Override 
  70.         public void onClick(View v) { 
  71. // TODO Auto-generated method stub 
  72. wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);
  73. System.out.println("wifi state --->"+wifiManager.getWifiState()); 
  74. Toast.makeText(Android_Wifi.this"当前网卡状态为:"+wifiManager.getWifiState()
  75. , Toast.LENGTH_SHORT).show(); 
  76.         }        
  77.     } 

AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.       package="idea.org" 
  4.       android:versionCode="1" 
  5.       android:versionName="1.0"> 
  6.     <uses-sdk android:minSdkVersion="11" /> 
  7.  
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  9.         <activity android:name=".Android_Wifi" 
  10.                   android:label="@string/app_name"> 
  11.             <intent-filter> 
  12.                 <action android:name="android.intent.action.MAIN" /> 
  13.                 <category android:name="android.intent.category.LAUNCHER" /> 
  14.             </intent-filter> 
  15.         </activity> 
  16.  
  17.     </application> 
  18.     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 
  19.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
  20.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
  21.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
  22. </manifest> 

运行结果:

依次点击“打开WIFI网卡”,“关闭WIFI网卡”,“检查WIFI网卡状态”三个Button按钮,控制台输出一下内容。

(itceojingying)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201112/15508.html]
本文出处:CSDN博客 作者:itceojingying 原文
顶一下
(3)
75%
踩一下
(1)
25%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容