zoukankan      html  css  js  c++  java
  • WIFI网络操作

    WIFI网络操作

    1. 主要内容:

    a)         什么是WIFI

    b)         获取WIFI网卡的状态

    c)         操作WIFI网卡所需的权限

    d)         改变WIFI网卡的状态

    1. 课程内容:

    a)什么是WIFI

    WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是一个无线路由器,那么在这个无线路由器的电波覆盖的 有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”;

    b)获取WIFI网卡的状态
    类似于WIFI这样的系统级服务管理对象,通常都需要调用Context对象的getSystemService()方法来获取,这个方法接收一个字符串作为参数,根据参数的不同,得到不同的系统服务管理对象。管理WIFI网卡的对象叫做WifiManager,得到这个对象的方法如下:
    WifiManager  wifiManager =    (WifiManager)context.getSystemService(Context.WIFI_SERVICE);

    对于WifiManager来说,经常使用的有如下操作:

     i.得到当前网卡状态:
    int wifiState = wifiManger.getWifiState();

    这个函数返回的是一个整形,不同的返回值代表着不同的状态,每一种状态都对应着一个常量,这些常量都存放在WifiManager类当中,具体含义如下:
    WIFI_STATE_DISABLED:WIFI网卡不可用

    WIFI_STATE_DISABLING:WIFI正在关闭

    WIFI_STATE_ENABLED:WIFI网卡可用

    WIFI_STATE_ENABLING:WIFI网卡正在打开

    WIFI_STATE_UNKNOWN:未知网卡状态

    需要注意的是WIFI网卡的打开和关闭并不是瞬间的过程,需要一段时间。也就是说如果当前我们手机的网卡处于可用的状态,我们关闭网卡之后,并不是马上进入关闭状态,而是处于正在关闭状态,等关闭的动作完成以后才会真正进入到关闭状态!

     ii.修改当前网卡状态
    得到WifiManager对象之后,就可以修改WIFI网卡状态了,具体方法如下:
    打开WIFI网卡
    wifiManger.setWifiEnabled(true);
    关闭WIFI网卡
    wifiManger.setWifiEnabled(false);

    1. 操作WIFI网络所需要的权限:

    状态名称

    描述

    CHANGE_NETWORK_STATE

    Allows applications to change network connectivity state

    CHANGE_WIFI_STATE

    Allows applications to change Wi-Fi connectivity state

    ACCESS_NETWORK_STATE

    Allows applications to access information about networks

    ACCESS_WIFI_STATE

    Allows applications to access information about Wi-Fi networks

     

    AndroidManifest.xml:

    <!-- 以下是使用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>

    main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    <Button 
    	android:id="@+id/startWifi"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="启动手机的wifi网卡"
        />
    <Button 
    	android:id="@+id/stopWifi"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="关闭手机的wifi网卡"
        />
    <Button 
    	android:id="@+id/checkWifi"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="检查当前wifi网卡状态"
        />
    </LinearLayout>
    

    WifiActivity.xml:

    package mars.wifi;
    
    import android.app.Activity;
    import android.content.Context;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class WifiActivity extends Activity {
        /** Called when the activity is first created. */
    	private Button startButton = null;
    	private Button stopButton = null;
    	private Button checkButton = null;
    	private WifiManager wifiManager = null;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            startButton = (Button)findViewById(R.id.startWifi);
            stopButton = (Button)findViewById(R.id.stopWifi);
            checkButton = (Button)findViewById(R.id.checkWifi);
            startButton.setOnClickListener(new StartWifiListener());
            stopButton.setOnClickListener(new StopWifiListener());
            checkButton.setOnClickListener(new CheckWifiListener());
        }
        class StartWifiListener implements OnClickListener{
    
    		@Override
    		public void onClick(View v) {
    			wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);
    			wifiManager.setWifiEnabled(true);
    			System.out.println("wifi state --->" + wifiManager.getWifiState());
    			Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();
    		}
        }
        class StopWifiListener implements OnClickListener{
    
    		@Override
    		public void onClick(View arg0) {
    			// TODO Auto-generated method stub
    			wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);
    			wifiManager.setWifiEnabled(false);
    			System.out.println("wifi state --->" + wifiManager.getWifiState());
    			Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();
    		}
        
        }
        
        class CheckWifiListener implements OnClickListener{
    
    		@Override
    		public void onClick(View v) {
    			wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);
    			System.out.println("wifi state --->" + wifiManager.getWifiState());
    			Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();
    		}
        	
        }
    }
    

     

     




  • 相关阅读:
    如何实现浏览器内多个标签页之间的通信?
    vue组件库的基本开发步骤(源代码)
    vue组件库的基本开发步骤
    Websocket原理
    TCP和UDP的区别
    一句话概括 tcp三次握手
    简单说一下你对http和https的理解
    .Ajax(async异步与sync同步)
    get和post请求方式的区别
    面试易忽略状态码
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/3175830.html
Copyright © 2011-2022 走看看