zoukankan      html  css  js  c++  java
  • 安卓WiFi基本使用

    大家学习安卓WiFi基本使用的时候首先应该请清楚什么是WiFi,在现在这个时代相信绝大多数人都接触过WiFi了 ,我们整天说WiFi可是WiFi到底是什么呢?很多人也许只知道有WiFi可以免费上网,这话没毛病,WiFi其实是一种允许电子设备连接到无线局域网(WLAN)的技术,基本上现在的手机,平板等很多电子设备都支持WiFi技术,我们在初次学习安卓WiFi的基本使用时,我们应该学会一下三个基本操作;

    第一就是简单的可以打开WiFi热点,这个功能很简单就是我们添加一个按钮,点击之后会打开手机的WiFi开关。

    第二就是打开WiFi热点之后进行对热点的关闭,跟打开WiFi的步骤差不多

    第三就是会操作显示WiFi相关信息

    首先我们来看第一个操作-----打开WiFi,顾名思义我们需要一个按钮,然后给这个按钮添加一个事件监听器,我们最想知道的就是通过什么代码可以控制手机WiFi的开关,其实很简单,在安卓中提供了一个wifiManager我们可以通过这个类来对WiFi进行相关的操作,然而打开WiFi的操作也只需要一个简短的代码就可以搞定,那就是

    wifiManager.setWifiEnabled(true);这段代码的意思是打开WiFi,另外在进行安卓WiFi操作的时候我们需要申请一些WiFi相关的操作,有以下操作权限需要申请
    <uses-permission android:name="android.permission.CHANGE_WIFI_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.ACCESS_NETWORK_STATE"/>
    具体的打开WiFi的示例代码如下
    btOpenWifi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    wifiManager.setWifiEnabled(true);
    
                }
            });
    这应该不难理解,就是对一个按钮添加了一个事件监听器,我觉得有些人看到这里就应该知道第二步关闭WiFi的操作了,大家可以分析这句代码
    wifiManager.setWifiEnabled(true);
    参数的类型是布尔型,当为真的时候是打开WiFi,相应的关闭WiFi的时候就是为假了如下代码
    btCloseWifi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    wifiManager.setWifiEnabled(false);
                }
            });
    到这里我们基本上知道如何打开和关闭手机WiFi了,下一步就是需要我们去获取WiFi的一些相关信息了,这一块需要使用到这个类叫wifiinfo,在我们的WiFi已经连同了之后,
    可以通过这个类获得一些已经连同的WiFi连接的信息,获取当前连接的信息,这里信息比较简单,这里简单介绍一下其中的几个方法
    getBSSID()获取BSSID
    getDetailedStateOf() 获取客户端的连通性
      getHiddenSSID() 获得SSID 是否被隐藏
      getIpAddress() 获取IP 地址
      getLinkSpeed() 获得连接的速度
      getMacAddress() 获得Mac 地址
      getRssi() 获得802.11n 网络的信号
      getSSID() 获得SSID
           getSupplicanState() 返回具体客户端状态的信息
    那么我们该如何使用呢,让我们一步一步来F分析,首先我们要获取WiFi的相关信息,这个信息肯定是要给人看的,是要展示出去的,所以我们需要一
    显示WiFi信息的媒介,当然是用一个textview来解决了,接下来让我们看一下下面的代码
    TextView tvWifiInfo = (TextView)findViewById(R.id.tvWifiInfo);
            StringBuffer sb = new StringBuffer();
            sb.append("wifi信息
    ");
            sb.append("mac地址:"+wifiInfo.getMacAddress()+"
    ");
            sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"
    ");
            sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"
    ");
    这些代码的作用是将WiFi的相关信息输入到缓冲区,然后通过settext的方法赋值, 效果图如下
    
    
    完整的代码如下
    public class MainActivity extends AppCompatActivity {
        private Button btOpenWifi;
        private Button btCloseWifi;
        private WifiManager wifiManager;
        private WifiInfo wifiInfo;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
            //获得连接信息对象
            wifiInfo = wifiManager.getConnectionInfo();
            btOpenWifi = (Button)findViewById(R.id.btOpenWifi);
            btOpenWifi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    wifiManager.setWifiEnabled(true);
    
                }
            });
            btCloseWifi = (Button)findViewById(R.id.btCloseWifi);
            btCloseWifi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    wifiManager.setWifiEnabled(false);
                }
            });
            TextView tvWifiInfo = (TextView)findViewById(R.id.tvWifiInfo);
            StringBuffer sb = new StringBuffer();
            sb.append("wifi信息
    ");
            sb.append("mac地址:"+wifiInfo.getMacAddress()+"
    ");
            sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"
    ");
            sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"
    ");
            tvWifiInfo.setText(sb);
    
        }
    }
    


  • 相关阅读:
    c++标准库容器【转】
    C++命名空间的解释 【转】
    [转载]定义、公理、定理、推论、命题和引理的区别
    待读论文
    矩阵分解 Matrix Factorization (RegularSVD) 实验总结
    Predicting the Next Location: A Recurrent Model with Spatial and Temporal Contexts AAAI2016
    Discovering Urban Functional Zones Using Latent Activity Trajectories TKDE 2015
    numpy
    python 编程 规范
    深度学习
  • 原文地址:https://www.cnblogs.com/ithuangqing/p/12113707.html
Copyright © 2011-2022 走看看